المؤثرات الحسابية في برنامج ماتلاب MATLAB
المؤثرات الحسابية :
المؤثرات الحسابية هي رموز خاصة تستخدم في العمليات الحسابية والمنطقية التي تجري علي المتغيرات العددية بأنواعها المختلفة ( قيم عددية Scalars ومتجهات Vectors ومصفوفات (Matrices .
المؤثر | الشرح | الصيغة وفق برنامج MATLAB |
المؤثر(+) | وهو الرمز المعروف للقيام بإجراء عمليات الجمع . | A+b |
المؤثر(-) | وهو الرمز المعروف للقيام بإجراء عمليات الطرح . | a-b |
المؤثر(*) | وهو الرمز المعروف للقيام بإجراء عمليات الضرب . | A*b |
المؤثر (/) | وهو الرمز المعروف للقيام بإجراء عمليات القسمة . | a/b |
المؤثر (%) | وهو الرمز المعروف للقيام بإيجاد ( وهو باقي القسمة Module ) . | A%b |
المؤثر (^) | وهو الرمز المعروف للقيام بوضع الأس لعدد معين (لاحظ أن الرمز (^) يسمي carrot ويتم كتابته بالضغط علي مفتاحي "shift+6" من لوحة المفاتيح . | A^b |
عمليات الجمع : Summation Process
تأخذ علامة الجمع في MATLAB الرمز المعروف للجمع وهو "+"
- قم بكتابة الأمر a=5+3 في نافذة محرر الأوامر ثم اضغط علي مفتاح Enter من لوحة Command Window لتجد ان البرنامج قام بالرد عليك باسم المتغير وناتج عملية الجمع .
>>a=5+3
A =
B
ملحوظة :- يمكن تجنب ظهور النتيجة لكل أمر تم ادخاله بإلحاق الأمر بفاصلة منقوطة (;) Semicolon كما سنري تفصيليا يما بعد .
عملية الطرح :- Subtraction process
تأخذ علامة الطرح في MATLAB الرمز المعروف الطرح وهو "-"
- قم بكتابة الأمر a = 5-3 في نافذة محرر الأوامر Command Window ثم اضغط علي مفتاح Enter من لوحة المفاتيح لتجد ان البرنامج قام بالرد عليك باسم المتغير وناتج عملية الطرح .
-
>> b=5-3
B =
2
عملية الضرب Multiplication Process
تأخذ علامة الضرب في MATLAB الرمز المعروف للضرب وهو "*"
-قم بكتابة الأمر a = 5*3 في نافذة محرر الأوامر Command Window ثم اضغط علي مفتاح Enter من لوحة المفاتيح لتجد أن البرنامج قام بالرد عليك باسم المتغير وناتج عملية الضرب .
>>c=5*3
C =
15
عملية القسمة : Division Process
تأخذ علامة القسمة في MATLAB الرمز المعروف للقسمة وهو "/"
- قم بكتابة الأمر a = 5/3 (حيث تسمي العلامة / بـــ Slash ) في نافذة محرر الأوامر Command Window ثم اضغط علي مفتاح Enter من لوحة المفاتيح لتجد ان البرنامج قام بالرد عليك باسم المتغير وناتج عملية القسمة .
>> d=5/3
D =
1.6667
ونلاحظ ان البرنامج قد قام بقسمة القيمة العددية 5 علي القيمة العددية 3 وتسمي هذه العملية بعملية القسمة اليسارية لأن عملية القسمة تتم من اليسار من اليمين .
كما يمكننا البرنامج من إجراء عملية القسمة العكسية ( أو كما يطلق عليها بعملية القسمة اليمينية لأنها تتم من اليمين لليسار ) , باستخدام العلامة \ Back Slash والأن لنجرب عملية القسمة السابقة باستخدام العلامة \ ليقوم البرنامج بقسمة المقام علي البسط كما يلي :
>> e=5\3
E =
0.6000
ملحوظة :- يمكننا دمج مجموعة من المعاملات في تعبير رياضي واحد كما يلي :
>> 4*3 + 6*5 + 7*8
Ans =
98
لاحظ ان البرنامج MATLAB لا يتأثر بالفراغات Spaces عند اجراء العمليات الحسابية وأن أولوية تنفيذ عملية الضرب والقسمة اعلي اولوية تنفيذ عمليتي الجمع والطرح وأن البرنامج يقوم بإسناد النتيجة للمتغير ans ( وهو اختصار لكلمة answer ) في حالة عدم تحديد متغير معين لتخزين نتيجة المستخدم .
وعند الرغبة في إلغاء إظهار القيمة المحسوبة لمتغير معين نضع علامة الفاصلة المنقوطة في نهاية الأمر كما يلي :
>> a=4*3 + 6*5 + 7*8;
كما يمكننا وضع عدة أوامر علي نفس السطر إذا تم فصلها عن بعضها بفواصل (,) أو فواصل منقوطة (;) كما يلي :
>> a=3 , b=4 ; c=5
A=
3
C=
5
لنلاحظ ان الفاصلة (,) تقوم بعرض النتيجة بينما الفاصلة المنقوطة (;) تلغي عملية إظهار أو طباعة النتيجة .
عملية الرفع لقوي في درجة معينة :
تستخدم الدالة power لإيجاد قيمة مفردة أو عناصر رقمية لمصفوفة مربعة مرفوعة لقوي من درجة معينة وتكون علي الصورة التالية :
P=power (x,n)
وهي تعبر عن الصيغة الرياضية :
P=x^n
حيث ان :
X: تمثل قيمة رقمية مفردة أو عناصر رقمية في مصفوفة مربعة وهي المصفوفات التي تتساوي عدد صفوفها مع عدد اعمدتها .
N : هي قيمة رقمية تمثل الأس أو القوي التي نريد رفع X لها .
(^) : يمثل رمز الأس في MATLAB ( حيث يمكن الحصول علي هذا الرمز من خلال الضغط علي مفتاحي Shift + 6 من لوحة المفاتيح .
فمثلا يمكنك رفع القيمة الرقمية 5 إلي الأس 2 بطريقتين مختلفتين كما في المثال التالي :
الطريقة الأولي :
- قم بتحرير الأمر P=5^2 داخل نافذة محرر الأوامر Command Window ثم اضغط علي مفتاح Enter من لوحة المفاتيح لتجد ان البرنامج قد قام بالرد عليك باسم المتغير وناتج عملية الرفع لأس كما في الشكل التالي :
>> p=5^2
P=
25
الطريقة الثانية :
- قم بتحرير الأمر p=power(5,2) داخل نافذة محرر الأوامر Command Window ثم اضغط علي مفتاح Enter من لوحة المفاتيح لتجد ان البرنامج قد قام بالرد عليك باسم المتغير وناتج عملية الرفع لأس كما في الشكل التالي :
>> p=power (5,2)
P=
25
ملحوظة : لا يمكننا اجراء عملية الرفع الي اس علي المتجهات , حيث يشترط برنامج MATLAB اجراء هذه العملية علي المصفوفات المربعة Square Matrix فقط ( وهي المصفوفات التي يتساوي فيها عدد الصفوف والأعمدة ) , ونحن نعلم ان المتجهات هي مجموعة من الأرقام توضع في صورة صف واحد او عمود واحد , وبالتالي فهي حالة خاصة من المصفوفات لذا فعند محاولتك لإجراء عملية رفع المتجة إلي اس ستظهر لك رسالة الخطأ التالية :
>> x=[1 2 3 4 5] ;
>> x^2
??? Error using ==> mpower
Matrix must be square
لنلاحظ ان البرنامج قد رفض رفع المتجة X للأس (2) حيث انه ليس مصفوفة مربعة .
ولكن لحل تلك المشكلة فعلينا رفع كل عنصر من عناصر المتجة x إلي الأس (2) وذلك بإستخدام العلامة (.) dot قبل رفع الأس (^) carrot دون ترك مسافة space بينهما , لتجد ان البرنامج قام بالرد عليك باستخدام المتجة وناتج عملية الرفع للأس , وان عملية الرفع للأس قد تمت بنجاح حيث تم رفع كل عنصر من عناصر المتجة x إلي الأس (2) .
كما في المثال التالي :
>> x=[1 2 3 4 5] ;
>> x.^2
Ans =
1 4 9 16 25
ولمزيد من الإيضاح تابع المثال التالي :
أوجد ناتج رفع المصفوفة للأس 3 بطريقتين مختلفتين :
>> A=[1 3;5 7];
>> A.^3
Ans =
1 27
125 343
>> power (A,3)
Ans =
1 27
125 343
إيجاد الجذر التربيعي :
تستخدم الدالة sqrt لإيجاد الجذر التربيعي للقيم الرقمية سواء كانت قيم رقمية مفردة scalars او في صورة عناصر رقمية في متجة vector او مصفوفة matrix وتكون علي الصورة التالية :
S=sqrt (x)
حيث ان :
X : تمثل قيم رقمية مفردة او عناصر رقمية في متجة او مصفوفة .
S : تمثل الجذر الناتج للمتغير x .
فمثلا لإيجاد الجذر التربيعي للرقم 25 قم بكتابة الأمر f=sqrt(25) في نافذة Command Window , ثم اضغط علي مفتاح Enter لتجد ان البرنامج قام بالرد عليك باسم المتغير وناتج عملية ايجاد الجذر التربيعي :
>> S1=sqrt(25)
S1 =
5
ملحوظة : عند ايجاد الجذر التربيعي لقيم سالبة , فيكون ناتج الجذر التربيعي في صورة مركبة , كما في المثال التالي
>> sqrt(-400)
Ans =
0 +20.0000i
ولمزيد من الإيضاح تابع المثال التالي :
اوجد الجذر التربيعي للقيم التالية :
* 169
>> S1=sqrt (169)
S1=
13
>> s11=169^0.5
S11=
13
* a=[4 16 – 25 36+49*i]
>> a=[ 4 16 - 25 36+49*i] ;
>> s3=sqrt (a)
S3 =
Columns 1 through 2
2.0000 4.0000
Columns 3 through 4
0 + 5.0000i 6.9571 + 3.5216i
يمكنك الحصول علي مساعدة البرنامج لجميع الدوال المبنية داخل البرنامج Built in function فقط بكتابة الأمر help ثم اسم الدالة المراد الإستعلام عنها كما يلي :
>> help function_Name
حيث ان function_Name هو اسم الدالة المراد الاستعلام عنها .
فمثلا يمكننا الاستعلام عن الدالة Sqrt والتي وضحنا ايضا ان تدعم استخدام عدد متغير من المدخلات والمخرجات من خلال كتابة الأمر التالي :
>> help sqrt
ليقوم البرنامج بعرض معلومات مساعدة حول هذه الدالة , بتعريف وظيفة هذه الدالة وصور استخدامها المختلفة وامثلة عن كيفية استخدام هذه الدالة كما ينصحك البرنامج بقراءة معلومات المساعدة لبعض الدوال التي تستخدم علي نفس نمط الدالة sqrt , مع ملاحظة ان اسماء جميع الدوال المبنية داخل البرنامج والتي تظهر في معلومات المساعدة يتم كتابتها بالحروف الكبيرة Capital letters , لكي يسهل تمييزها والتعرف عليها .
ملحوظة :- كما رأينا في الأمثلة السابقة فإن المتغيرات في برنامج MATLAB لا يتم تعريفها واعلان اسمائها قبل الاستخدام , علي عكس لغات البرمجة الأخري كما هو الحال في لغة الــ c/c++ وهذا يحقق مبدأ تحديد التخزين التلقائي (automatic storage allocation) وتعد هذه الخاصية من اهم الخصائص المميزة لبرنامج MATLAB .
شروط تسمية المتغيرات ( المخازن ) داخل برنامج MATLAB :
1- اسم المتغير يجب ان يبدأ بحرف وليس رقم او رمز فمثلا لا يمكن كتابة اسم المتغير علي الشكل 1a=5 وبدلا من ذلك يمكننا كتابة اسم المتغير علي الشكل a1=5 .
ولتجربة هذا الشرط قم بكتابة الأمر التالي داخل نافذة محرر الأوامر :
>> 1a=5
??? 1a=5
│
Error : unexpected MATLAB expression.
وبالفعل فقد قام البرنامج بإعطاء رسالة خطأ لأننا بدأنا اسم المتغير برقم وليس حرف .
ولكن عندما نبدأ اسم المتغير بحرف وننهي اسمه برقم فلن يتعرف مترجم البرنامج Compiler علي هذا الأمر كما يلي :
>> a1=5
A1=
5
2- لا يمكن ان يحتوي اسم المتغير علي مسافة , فمثلا لا يمكن كتابة اسم المتغير علي الشكل a val وبدلا من ذلك يمكن استخدام علامة الشرطة السفلية "_" Underscore علي الشكل a_val كما يلي :
ولتجربة هذا الشرط قم بكتابة الأمر التالي داخل نافذة محرر الأوامر Command window
>>a val=5
??? undefined command/function 'a'.
ولكن عندما يتخلل اسم المتغير العلامة Underscore "_" فلن يتعرف مترجم البرنامج Compiler علي هذا الأمر كما يلي :
>> a_val=5
A_val =
5
3- يجب الا يحتوي اسم المتغير بعض الرموز الخاصة مثل ?,!,/,\,*,… بإستثناء علامة الشرطة السفلية "_" والتي تسمي Underscore حيث يمكن استخدامها كما ذكرنا من قبل .
4- لا يجب تسمية اسم المتغير علي اسم امر او دالة محجوزة reserved word داخل البرنامج , فمثلا لا يمكن تسمية المتغير if لان هذا الاسم من الدوال المعرفة داخليا في بنية برنامج MATLAB , واذا تم استخدامه يقوم البرنامج بعرض رسالة خطأ كما يلي :
>>if = 5
??? if = 5
│
Error: the expression to the left of the equals sign is not a valid target for an assignment .
وإليك قائمة بأسماء الكلمات المحجوزة داخل البرنامج
قائمة ببعض الكلمات المحجوزة داخل البرنامج | ||||
While | for | End | elseif | If |
Case | switch | return | continue | Break |
Persistent | global | function | Try catch | Otherwise |
ويقوم البرنامج بإظهار هذه القائمة بتحرير الأمر iskeyword في نافذة محرر الأوامر command window كما يلي :
>> iskeyword
تظهر لك قائمة تتضمن الكلمات المحجوزة داخل البرنامج والتي لا يمكنك استخدام احدها , ولكن يمكنك استخدام كلمات شبيهة لها من خلال دمج ارقام معها مثل "if1" او كتابة احد احرفها بحرف كبير Capital letter "if"
فلن يعترض البرنامج علي هذين المسمين كما يلي
>>if 1=5
If 1=
10
5- يجب ان لا يزيد عدد الأحرف التي يتكون منها اسم المتغير عن 63 حرف وفي حالة كتابة اسم لمتغير يزيد عن 63 حرف فلن يصدر البرنامج رسالة خطأ تدل علي ذلك ولكن سوف يتعامل مع اول 63 حرف فقط كإسم للمتغير ويكتفي بتحزيرك .
وللتأكد من ان اقصي طول للعدد حروف المتغيرات التي يتعامل معها البرنامج للتمييز بين الأسماء المختلفة هو 63 , فيمكنك برنامج MATLAB من عمل ذلك بإستخدام الدالة namelengthmax وتستخدم هذه الدالة علي الصورة التالية :
>> Max_Len=namelengthmax
Max_Len =
63
لنلاحظ أن الدالة قامت بإرجاع القيمة 63 في المتغير Max_Len وهذه القيمة تشير الي افصي رقم يمكن استخدامه في برنامج MATLAB للتمييز بين اسماء المتغيرات المختلفة .
6- يجب عليك عند القيام بتسمية المتغيرات مراعاة ان برنامج MATLAB حساس لحالة الحروف case Sensitive حيث يميز بين الأحرف الكبيرة والأحرف الصغيرة فمثلا عند القيام بتسمية متغير بالإسم "a" فإن برنامج MATLAB يتعامل معها علي انه مختلف عن المتغير المسمي "A" ولمزيد من الإيضاح قم بتعريف المتغير a وقم بشحنه بالقيمة 3 كما يلي :
>> a = 3
a =
3
والأن لنقم بإستدعاء اسم المتغير A كحرف كبير وهو يختلف عن المتغير السابق تحديده ولذلك فإن برنامج MATLAB سوف يعتبر هذا المتغير متغيرا جديدا يختلف عن المتغير a السابق تحديده ويصدر لك رسالة خطأ تفيد بأن هذا المتغير لم يسبق تعريفه من قبل كما يلي :
>> A
???undefined function or variable 'A'.
ولمزيد من الإيضاح فإن برنامج MATLAB يميز بين اسماء المتغيرات التالية ويتعامل معهم علي انهم متغيرات مختلفة .
VAR # var # Var # vaR # vAr #... vaR
مهارة خاصة
عند وضع العلامة المنقوطة Semicolon(;) في نهاية أي من الأوامر (المدخلات) السابقة فيؤدي هذا إلي تنفيذ الأمر دون إظهار ناتج هذا الأمر في نافذة تحرير الأوامر Command Window
ونستفيد من وضع العلامة المنقوطة في أن تنفيذ بعض العمليات يستغرقوا زمنا طويلا إذا لم نضع العلامة المنقوطة بينما تنفذ بسرعة أكبر عند وجودها كما نستخدم أحيانا العلامة المنقوطة عند الرغبة في عدم ملئ نافذة تحرير الأوامر بنتائج المدخلات والتي ربما تزعجك أحيانا وإليك المثال التالي لمزيد من الإيضاح:
- قم بكتابة الأمر a=5+3 في نافذة محرر الأوامر وبمجرد الضغط علي مفتاح Enter لتجد أن البرنامج قام بالرد عليك بإسم المتغير وناتج عملية الجمع كما يلي :
<< a=5+3 % no semicolon , so display
a =
8
ï ثم قم الآن بتكرار الأمر السابق ولكن مع وضع العلامة المنقوطة (;) Semicolon في نهاية الأمر وبمجرد الضغط علي مفتاح Enter من لوحة المفاتيح تجد أن البرنامج قام بتنفيذ الأمر ولكن لاحظ أن الفاصلة المنقوطة تسببت في عدم إظهار مخرجات (ناتج) الأمر السابق كما يلي :
<< a =5+3 ; % semicolon suppress display out put
كيف استطيع ايجاد الجذر التكعيبي؟؟
ردحذف