الماتلاب خطوة بخطوة (تعلم كل شئ عن الماتلاب)

الحالة
مغلق و غير مفتوح للمزيد من الردود.
إنضم
6 أكتوبر 2005
المشاركات
1,295
مجموع الإعجابات
29
النقاط
0
إضافة خصائص إلى الرسومات داخل الماتلاب

إضافة خصائص إلى الرسومات داخل الماتلاب
في بعض الأحيان يكون من الضروري جداً تغيير بعض الخواص لدى الرسومات التي نحصل عليها مثل تغيير الألوان, وتغيير الرسمة من خطوط متصلة إلى نجوم ونقاك وغيرها, وهذه هي مجموعة الخصائص التي تتم من خلال الماتلاب
[LINE]hr[/LINE]
14503_1155913318.gif

[LINE]hr[/LINE]
فكيف يتم وضع تلك الخصائص داخل الماتلاب, تكون هذه الخصائص متضمنة في الأمر plot حيث تأخذ الصورة التالية
[LINE]hr[/LINE]
14503_1155913574.gif

[LINE]hr[/LINE]
إعتماداً على المثال السابق أخذه سنقوم بتعديل بعض الخصائص
سنقوم مثلاً بتغيير لون الخط إلى الأحمر
[LINE]hr[/LINE]
14503_1155913685.gif

[LINE]hr[/LINE]
وبالتالي نحصل على الصورة التالية
[LINE]hr[/LINE]
14503_1155913898.gif

[LINE]hr[/LINE]
ولنقم الآن بإضافة خاصية جديدة بأن يكون الخط ليس خطاً متصل وإنما عبارة عن نجوم
[LINE]hr[/LINE]
14503_1155913928.gif

[LINE]hr[/LINE]
وبالتالي نحصل على الشكل التالي
[LINE]hr[/LINE]
14503_1155913967.gif

[LINE]hr[/LINE]
وإذا أردنا أن نحصل على نجوم حمراء ( أي دمج الخاصيتين معاً)
[LINE]hr[/LINE]
14503_1155914091.gif

[LINE]hr[/LINE]
وبالتالي نحصل على الشكل التالي
[LINE]hr[/LINE]
14503_1155914130.gif

[LINE]hr[/LINE]
وهنا نكون قد شرحنا خصائص الرسومات داخل الماتلاب​
 
التعديل الأخير:
إنضم
6 أكتوبر 2005
المشاركات
1,295
مجموع الإعجابات
29
النقاط
0
عملية وضع شبكة على الرسم

عملية وضع شبكة على الرسم
يقوم الماتلاب بوضع شبكة على الرسم, بحيث يكون من السهل تحديد القيم من على الرسم
حيث تأخذ الأمر grid بعد الأمر plot



14503_1155907315.gif




وسيكون شكل الرسم كالتالي



14503_1155907354.gif




الآن سنقوم بعمل معادلة أخر بالإضافة إلى المعادلة المذكورة بحيث يكون لدينا رسمتان, بحيث تأخذ الشكل التالي



14503_1155907534.gif




ولكن عند تشغيل البرنامج, سيقوم الماتلاب بإظهار الرسمة الأخيرة فقط, فكيف يتم إظهار الرسمتين, يتم ذلك بإستخدام الأمر Hold on قبل الأمر plot لكي يتم وضع الرسمتين في نافذة واحدة, وفي نهاية الأمر يتم وضع الأمر hold off, أنظر الصورة التالية



14503_1155907991.gif




وبالتالي تكون الرسمتان كالتالي



14503_1155908033.gif


 
إنضم
6 أكتوبر 2005
المشاركات
1,295
مجموع الإعجابات
29
النقاط
0
علمية وضع الرسومات في نوافذ منفصلة

علمية وضع الرسومات في نوافذ منفصلة
سنقوم الآن بدلاً من وضع الرسومات في نفس النافذة سنقوم بوضعها في نوافذ مختلفة
وعلى نحتاج إلى الأمر figure والذي يقوم بفتح نافذة فارغة إذا تم وضعه منفصلاً, جرب ذلك في نافذة الأوامر ستلاحظ ان الماتلاب قام بإظهار نافذة رمادية اللون فارغة شاهد الصورة التالية
[LINE]hr[/LINE]
14503_1155916000.gif

[LINE]hr[/LINE]
حيث وجود تلك النافذة يعني انه سيتم تنفيذ أمر الرسم plot الذي بعد أمر figure علماً أنه بعد كل أمر figure يتم وضع الخصائص التي تختص بهذه الرسمة مثل أمر grid الذي سبق شرحه.
وهذا مثال بسيط على ذلك
[LINE]hr[/LINE]
14503_1155917140.gif

[LINE]hr[/LINE]
وستحصل على نافذيتين بهما كلتا الرسمتين
[LINE]hr[/LINE]
14503_1155917243.gif

[LINE]hr[/LINE]
14503_1155917254.gif

[LINE]hr[/LINE]
والآن قم بتشغيل البرنامج مرة أخرى, ستلاحظ أن عدد النوافذ قد زاد نافذة واحدة, فكيف حدث هذا؟
يقوم الماتلاب برسم أول دالة على النافذة الأخيرة التي تم رسم الدالة الثانية بها, ثم يقوم برسم الدالة الثانية في نافذة جديدة بسبب وجود الأمر figure ولحل هذه المشكلة قم بإستخدام الأمر close all بعد الأمر clear بحيث يتم إغلاق أي نوافذ كانت مفتوحة قبل ذلك عند تشغيل البرنامج كل مرة وبالتالي سيكون هنالك ثلاثة أوامر لابد من إستخدامها في كل مرة يتم عمل أي برنامج وهم
clc
clear
close all
وهذا هو المثال الذي تم عمله منذ قليل بعد التعديل
[LINE]hr[/LINE]
14503_1155917484.gif

[LINE]hr[/LINE]
 
إنضم
6 أكتوبر 2005
المشاركات
1,295
مجموع الإعجابات
29
النقاط
0
إنشاء رسومات منفصلة في نافذة واحدة

إنشاء رسومات منفصلة في نافذة واحدة
أخذنا أننا بإمكاننا أن نقوم بعمل أكثر من رسمة على نفس النافذة, ولكن هل تتخيل أن نقوم بوضع عدة رسومات منفصلة في نافذة واحدة, في الحقيقة يمكن ذلك بإستخدام الأمر subplot قبل كل أمر plot
يعمل الأمر subplot من خلال تحديد عدد الرسومات التي ستقوم بإظهارها, حيث يقوم الأمرsubplot على وضع الصور وكأنها مصفوفة أو متجه, ويجب عند إستخدام الأمر معرفة عدد الرسومات التي ستظهرها وكيفية وضعها, ويفضل إستخدام الشكل التالية لتحديد الأماكن التي ستقوم بوضع الرسومات بها


14503_1155939566.gif



سنأخذ مثالاً, لنقول أن لدينا معادلات يجب رسمهما, وسنقوم بوضعهما بجوار بعضهما كما في الشكل التالي


14503_1155941813.gif



وبالتالي الرسمتان سيكون وكأنهما متجه عدد صفوفها 1 وعدد الأعمدة 2 , والرسمة الأولى تأخذ الخانة الأولى , والرسمة الثانية ستأخذ الخانة الثانية
هذا ما يجب تحديده بالتفصيل عند إستخدام الأمر subplot
ثم نستخدم الصورة العامة لأمر subplot والتي تكون كالتالي
14503_1155940456.gif

ولرسم الشكل الأول لابد من كتابة الأمر في الصورة التالية


14503_1155940693.gif



ولرسم الشكل الثاني لابد من كتابة الأمر في الصورة التالية


14503_1155940814.gif



والأن سنقوم بوضع البرنامج كاملاً ليكون المعنى قد وضح تماماً


14503_1155940924.gif



وستكون الرسمة النهائية كما في الشكل التالي


14503_1155940963.gif



ملاحظة إذا كانت الرسمة تشغل أكثر من خانة يتم إستخدام الأقواس المربعة, وتأخذ الشكل التالي
[ أرقام جميع الخانات التي تشغلها الرسمة]
وسنقوم بإعطاء مثال
نريد أن يكون الشكل الخارج على شكل الصورة التالية


14503_1155941178.gif



فإن عدد الصفوف 3 وعدد الأعمدة 3 وأرقام الخانات التي تشغلها الرسمة الأولى 1 و2 و3 و4 و5 و6 على التوالي, وأرقام الخانات التي تشغل الرسمة الثانية 7 وأرقام الخانات التي تشغل الرسمة الثالثة هي 9
والبرنامج يكون بالشكل التالي


14503_1155941550.gif



وستكون النتيجة كالتالي


14503_1155941586.gif
 
التعديل الأخير:
إنضم
6 أكتوبر 2005
المشاركات
1,295
مجموع الإعجابات
29
النقاط
0
تسمية المحاور - وضع عنوان في أعلى الرسمة

تسمية المحاور
سنقوم الآن بتنفيذ الجزء قبل الأخير من الدورة وهو تمية المحاور, فمثلاً إذا أردنا أن نقوم بتسمية محور السينات X-Axis نقوم بإستخدام الأمر xlabel وإذا أردنا أن نقوم بتسمية محور الصادات نقوم بإستخدام الأمر ylabel حيث يأخذ كلا الأمرين صورة واحدة وهي كالتالي
[LINE]hr[/LINE]
14503_1155942622.gif

[LINE]hr[/LINE]
نفس الشئ يتم تطبيقه على محور الصادات ylabel
ولنقوم الآن بعمل مثال تطبيقي
[LINE]hr[/LINE]
14503_1155942997.gif

[LINE]hr[/LINE]
وبالتالي نحصل على الصورة التالية
[LINE]hr[/LINE]
14503_1155943064.gif

[LINE]hr[/LINE]

وضع عنوان في أعلى الرسمة
يمكن وضع عنوان أعلى كل رسمة وذلك من خلال الأمر title
حيث يكون هذا الأمر بالشكل التالي
[LINE]hr[/LINE]
14503_1155943770.gif

[LINE]hr[/LINE]
وبالرجوع إلى المثال السابق ووضع التعديلات عليه كما هو موضح
[LINE]hr[/LINE]
14503_1155943879.gif

[LINE]hr[/LINE]
وبالتالي نحصل على الصورة التالية
[LINE]hr[/LINE]
14503_1155943921.gif

[LINE]hr[/LINE]​
 
إنضم
6 أكتوبر 2005
المشاركات
1,295
مجموع الإعجابات
29
النقاط
0
وضع نص على نقطة أو أكثر داخل الرسم

وضع نص على نقطة أو أكثر داخل الرسم
يمكن إضافة نص على نقطة أو أكثر على الرسم, وذلك بإستخدام الأمر text ويأخذ الصورة التالية
14503_1155989647.gif

وسنأخذ مثالاً بسيطاً في كيفية إيجاد الرقم الأكبر, ثم وضع دائرة حمراء حول النقطة العظمى ووضع كلمة maximum point
ولكن دعونا نقوم بشرح الأمر الهام find هذا الأمر يقوم بإيجاد مكان العنصر داخل المتجه بمجرد تحديد خصائص هذا العنصر, فمثلاً سنقوم بعمل دالة وسنبحث على العنصر الأكبر بينها كما في البرنامج التالي
[LINE]hr[/LINE]
14503_1155990681.gif

[LINE]hr[/LINE]
وعند تشغيل البرنامج, نجد القيم كالتالي
[LINE]hr[/LINE]
14503_1155990845.gif

[LINE]hr[/LINE]
وبالتالي إذا أردنا الحصول على قيمة X عند القيمة العظمى للـــ Y, سنقوم بعمل التالي
[LINE]hr[/LINE]
14503_1155991013.gif

[LINE]hr[/LINE]
وكما تلاحظ فإن قيمة X والتي تعطي القيمة العظمى Y تظهر في workspace, أنظر الصورة التالية
[LINE]hr[/LINE]
14503_1155991097.gif

[LINE]hr[/LINE]
والآن سنقوم بتطبيق المثال ووضع كلمة النقظة العظمى عليها
[LINE]hr[/LINE]
14503_1155991543.gif

[LINE]hr[/LINE]
وبالتالي ستظهر الرسمة كالتالي
[LINE]hr[/LINE]
14503_1155991585.gif

[LINE]hr[/LINE]
 
إنضم
6 أكتوبر 2005
المشاركات
1,295
مجموع الإعجابات
29
النقاط
0
ماتبقى من الدورة بإذن الله

ماتبقى من دروس الدورة بإذن الله
التالي
--------------------------------------------------
legend
opening an empty figure and determining its size
ginput
Three Dimensional Plotting
بعض الأمثلة التطبيقية
 
إنضم
6 أكتوبر 2005
المشاركات
1,295
مجموع الإعجابات
29
النقاط
0
الأمر legend

الأمر legend
يستخدم هذا الأمر في وضع دليل على صفحة الرسم ليبين ماذا يعني كل لون على الرسم, فمثلاً سنقوم بوضع الأمر legend في المثال التالي علماً أن هذا الأمر لابد من أن يأخذ الصورة التالية
14503_1156110919.gif

ويمكن كتابة البرنامج التالي على الماتلاب
[LINE]hr[/LINE]
14503_1156111329.gif

[LINE]hr[/LINE]
وبالتالي ستجد الناتج كالتالي
[LINE]hr[/LINE]
14503_1156111355.gif

[LINE]hr[/LINE]
كما ترى فإن الأمر legend يعتمد على عدد العلاقات المرسومة داخل الرسم, فمثلاً المثال الذي سبق أخذه كان يستخدم في رسم علاقة ثم إيجاد النقطة العظمى أي أن عدد العلاقات المرسومة إثنتان, وبالتالي تتم برمجته بالشكل التالي
[LINE]hr[/LINE]
14503_1156112324.gif

[LINE]hr[/LINE]
وبالتالي تكون الرسمة كالتالي
[LINE]hr[/LINE]
14503_1156112353.gif

[LINE]hr[/LINE]
ويجب مراعاة أن يتم إستخدام الأمر legend بعد الأمر plot وليس العكس​
 
إنضم
6 أكتوبر 2005
المشاركات
1,295
مجموع الإعجابات
29
النقاط
0
فتح نافذة جديدة وتحديد دقتها

فتح نافذة جديدة وتحديد دقتها
يعطي الماتلاب القدرة على فتح نافذة جديدة وتحديد القيم العظمى والصغرى لمحور السينات وكذلك بالنسبة لمحور الصادات, وذلك بإستخدام الأمر axis, والذي يأخذ الصورة التالية في كتابته
14503_1156447164.gif

مثال تطبيقي
قم بفتح نافذة للرسم بحيث تكون بالمواصفات التالية
1- أقل قيمة لمحور السينات هي 10-
2- أكبر قيمة لمحور السينات هي 10
3- أقل قيمة لمحور الصادات 10-
4- أكبر قيمة لمحور الصادات 10
خطوات الحل
في نافذة الأوامر قم بإدخال التالي
14503_1156447395.gif

وستظهر لك النافذة التالية
14503_1156447448.gif

وبالتالي نكون قد أتممنا شرح كيفية فتح نافذة للرسم بنجاح
يمكنك الآن وضع الخصائص التي تريدها على تلك النافذة
أما الدرس القادم فهو مهم جداً وهو كيفية إدخال النقط على الرسم من خلال إستخدام الماوس
ونلقاكم في رعاية الله في الدرس القادم​
 
إنضم
6 أكتوبر 2005
المشاركات
1,295
مجموع الإعجابات
29
النقاط
0
كيفية إدخال النقاط من خلال الماوس

كيفية إدخال النقاط من خلال الماوس
تعلمنا أنه يمكننا إدخال القيم بإستخدام المتجهات أو المصفوفات, ولكن يوفر الماتلاب قدرة في إدخال النقاط من خلال الرسم بإستخدام الماوس, ونظراً لأننا نقوم بإختيار النقاط من على الرسم فهذا يعني أن النقاط التي يتم إختيارها يتم تمثيلها في قيمة في محور السينات وقيمة في محور الصادات, ويتم وضع قيم محاور السينات والصادات في صورة متجه.
يستخدم الأمر ginput في عملية إدخال النقاط بإستخدام الماوس, ويتم كتابة ذلك الأمر في الصورة التالية
14503_1156448948.gif

أما إذا أردنا إدخال عدد لا نهائي من النقاط يمكن ذلك بعدم ذكر عدد نقاط الإدخال, كما في الشكل التالي
14503_1156449489.gif

وبعد الإنهاء من إدخال النقاط كل ما عليك هو الضغط على مفتاح Enter في لوحة المفاتيح.
مثال تطبيقي
سنقوم بفتح نافذة للرسم بها شبكة, وأقل قيمة لمحور السينات هي صفر وأكبر قيمة لمحور السينات هي 10 وكذلك بالنسبة لمحور الصادات, ثم إدخال عدد كبير من النقاط على الرسم بإستخدام الأمر ginput, وهذه النقاط يتم طباعتها على شكل دوائر حمراء.
ويتم كتابة الأوامر بالشكل التالي
14503_1156452128.gif

وستظهر لك نافذة لإدخال النقاط , وبعد إتمام عملية الإدخال إضغط على Enter لإتمام الإدخال وستظهر لك النافذة التالية
14503_1156452815.gif

وبالتالي نكون قد أتممنا شرح هذه الجزئية بنجاح, وسيتم التطرق في دورة البرمجة بإستخدام الماتلاب إلى كيفية إظهار النقاط بمجرد الضغط عليها.​
 
إنضم
6 أكتوبر 2005
المشاركات
1,295
مجموع الإعجابات
29
النقاط
0
Three Dimensional Plotting

الرسم ثلاثي الأبعاد
كما تعلمنا أن الرسم ثلاثي الأبعاد يعتمد على ثلاثة محاور لرسمها, محور X , Y & Z , وأن كلاً من X & Y يمثلان المستوى الأفقي, وأن المحور Z يمثل الإرتفاع, ولكن تلك القيم هي قيم النقاط الموجودة المحاور, ولكن حتى يتم رسم أي نقطة في المستوى الأفقي يجب أن نقوم تعريف ذلك للماتلاب وذلك بإستخدام الأمر meshgrid حيث يقوم الماتلاب بإنتاج مصفوفة يتم تكرار قيم محور السينات X-Axis بنفس طول محور الصادات Y-Axis, كما يقوم بتكرار قيم محور الصادات Y-Axis بنفس طول قيم السينات X-Axis, وبهذا تكون المصفوفة المتكونة هي المستوى الأفقي كما هو واضح بالرسم التالي.
14503_1156456524.gif

علما أن الأمر meshgrid يأخذ الصورة التالية في كتابته
14503_1156457304.gif

وبعد إستخدام الأمر meshgrid يتم إستخدام الأمر mesh والذي يستخدم كبديل الأمر plot ولكن في الرسم ثلاثي الأبعاد
مثال تطبيقي
نقوم في هذا المثال بتعريف قيم محور السينات X-Axis وسنقوم بوضع المعادلة التي تصف محور الصادات وعلاقته بمحور السينات, أخيراً وليس آخراً نقوم بوضع العلاقة التي تربط بين محور السينات والصادات.
14503_1156458224.gif

وبالتالي تكون الرسمة الناتجة كالتالي
14503_1156458263.gif

كما ترى فإن الرسمة الناتجة عبارة عن شبكة تعتمد مجموعة النقاط لكلاً من X & Y فإذا أكثرنا عدد نقاط X وبالتالي تزداد قيمة Y كذلك
14503_1156458520.gif

وبالتالي فإن الرسمة الناتجة تكون كالتالي
14503_1156458571.gif

أعتقد أنك تلاحظ الفرق الآن
ملاحظة كلما زادت عدد النقاط كلما زاد الوقت المستغرق لإظهار النتائج في الماتلاب
وبهذا نكون قد أتممنا الإسبوع الثاني بفضل الله
الإسبوع الثالث بإذن الله أمثلة تطبيقية
 
إنضم
6 أكتوبر 2005
المشاركات
1,295
مجموع الإعجابات
29
النقاط
0
تم الإنتهاء من الأسبوع الثاني

تم الإنتهاء من الأسبوع الثاني من الدورة بفضل الله
 
إنضم
6 أكتوبر 2005
المشاركات
1,295
مجموع الإعجابات
29
النقاط
0
الإسبوع الثالث

السلام عليكم ورحمة الله وبركاته
أخواني الكرام, نستكمل معكم دورة الماتلاب, وهي في إسبوعها الثالث, وسوف نتناول في هذا الإسبوع العديد من الأمثلة التطبيقية, وسيتم شرح مثال تطبيقي كل يوم, وهذا ملخص للأمثلة التطبيقية التي سيتم أخذها بإذن الله.
1- كيفية إدخال ثلاث معادلات وإيجاد قيم المتغيرات
2- Curve Fitting
3- نقل المحاور
4- إيجاد نقط تقاطع الرسمة مع محور السينات ووضع علامة عليها
5- إختيار نقطتان من على الرسم, وإيجاد المساحة تحت المنحنى بين تلك النقطتين

وسنتناول الآن المثال الأول​
 
إنضم
6 أكتوبر 2005
المشاركات
1,295
مجموع الإعجابات
29
النقاط
0
حل ثلاث معادلات

EVAL
قبل البدء بالتطبيق الأول, لابد من ذكر أمر هام وهو الأمر eval والذي له هدف أكثر من رائع سيتضح بمثال, لنقل أن لدينا معادلة جيب الزاوية Sine Wave ولكن تم وضعها في الصورة التالية في الماتلاب
14503_1156588326.gif

وللتأكد أنها في صورة string يجب الذهاب إلى الــ Workspace
14503_1156588400.gif

ولرسم موجة جيب الزاوية لابد من تعريف قيم t والتعويض فيها, ولكن كما ترون يصعب التعويض في المعادلة بسبب وجودها بين قوسين, وتلك الأقواس هي بمثابة حاجز للتعويض, وهنا يجب أن نخترق ذلك الحاجز وذلك بإستخدام الأمر eval, حيث يعمل الأمر على البحث عن المعادلة بين الأقواس, ثم يبحث عن القيم التي سوف يتم تعويضها في تلك المعادلة, وسوف يتم كتابة البرنامج كالتالي في الماتلاب
14503_1156589088.gif

وبالتالي ستظهر النتيجة كالتالي
14503_1156589128.gif

ونحن الآن على أتم إستعداد لتنفيذ التطبيق الأول​
 
التعديل الأخير:
إنضم
6 أكتوبر 2005
المشاركات
1,295
مجموع الإعجابات
29
النقاط
0
حل ثلاثة معادلات

حل ثلاثة معادلات
كما تعلمنا أن الماتلاب له القدرة على إدخال حل المعادلات, فمثلاً المعادلتان التاليتين
14503_1156533239.gif

ويمكن كتابة ذلك على الماتلاب كالتالي
14503_1156533386.gif

وبالتالي نجد النتائج كالتالي
14503_1156533454.gif

ولكن هذا يشترط أن يتم إدخال المعاملات coefficients للمعادلتين, وهذا بالتالي يتطلب التمحيص والتدقيق في كل معادلة, فإذا كثرت المعادلات إزداد الوقت المستغرق في البحث, فتسهيلاً للمستخدم يجب عمل برنامج لإدخال المعادلات بشكل كام, فمثلاً سنقوم بعمل برنامج لحل ثلاثة معادلات
14503_1156534656.gif

ولحل هذه المعادلات يجب وضعها في الصورة التالية
14503_1156534850.gif

ولذلك يجب التفكير كالتالي, عندما يقوم المستخدم بإدخال المعادلات الثلاثة, يجب على الماتلاب أن يحدد قيم المعاملات أولاً لإيجاد حل قيم المتغيرات, وحلاً لهذه المشكلة سنجعل الماتلاب يبحث عن علامة "="
لكل معادلة, ثم سنقوم بتعريف الجزء الذي يحتوى على المتغيرات لكل معادلة, ثم سنقوم بفرض أن
x=1 , y=0,z=0
ومنها نحصل على قيم معاملات x في المعادلات الثلاثة
ثم سنفرض أن x=0, y=1, z=0
ومنها نحصل على قيم معاملات y في المعادلات الثلاثة
ثم سنفرض أن x=0,y=0,z=1
ومنها نحصل على قيم معاملات z في المعادلات الثلاثة
وبالتالي نكون قد حصلنا على معاملات المعادلات الثلاثة, لم يتبقى سوى إيجاد قيم معاملات D وسوف يتم توضيح ذلك عند كتابة البرنامج على الماتلاب.
14503_1156539128.gif

وسنقوم الآن بوضع ثلاثة معادلات كما في الشكل التالي
14503_1156539637.gif

وبالتالي ستكون النتائج كالتالي
14503_1156539940.gif

وعلى نفس المنوال يمكن حل أي عدد من المعادلات مهما كانت كبيرة, وسنأخذ لاحقاً كيفية عمل نافذة لإدخال تلك المعادلات
وبهذا نكون قد أتممنا التطبيق الأول بنجاح, ولا تترددوا في مراسلتي في حالة عدم وضوح بعض الأجزاء​
 
إنضم
6 أكتوبر 2005
المشاركات
1,295
مجموع الإعجابات
29
النقاط
0
Zero Crossing

Zero Crossing
في هذا المثال الهام سنقوم بشرح كيفية رسم معادلة, ووضع دائرة زرقاء على مناطق تقاطعها مع محور السينات, والتي يجب أن تأخذ الشكل التالي
14503_1156592307.gif

قد يعتقد البعض بأن هذا البرنامج سهلاً تقريباً, ولكن البرنامج يحتاج إلى التفكير قليلاً, فدعونا نفكر في الطريقة التي قد يفكر بها أي شخص الآن, حيث سيقوم بكتابة البرنامج الذي يبحث عن النقاط التي بها Y=0 ثم يقوم بإيجاد القيم التي بها تلك النقاط, كما في البرنامج التالي
14503_1156592049.gif

وستكون الرسمة النالتجة بالشكل التالي
14503_1156592180.gif

فما سبب هذه المشكلة, حقيقة سببها ما يسمى بــ Digital Domain, فما هو Digital Domain
معنى ذلك أن أي معادلة يتم رسمها ليست عبارة عن خط متصل وإنما مجموعة من النقاط, تعتمد على عدد النقاط التي تم إختيارها في لرسم الدالة, ثم التوصيل بين تلك النقاط, فمثلاً إذا قمنا بعمل برنامج لرسم دالة الجيب sine wave بعدد نقاط قليل, كما في الشكل التالي
14503_1156593665.gif

وبالتالي ستجد الدالة بهذا الشكل
14503_1156593701.gif

كما ترى, فإن الماتلاب قام بتحديد النقاط والتوصيل بينها, وللتأكد من ذلك قم بعمل التالي في البرنامج
14503_1156593785.gif

وبالتالي فإن الرسمة الناتجة, تكون في الصورة التالية
14503_1156593826.gif

وهذا ما يسمى Digital Domain والآن لنقم بزيادة عدد النقاط في نفس البرنامج
14503_1156594014.gif

وتكون الرسمة كالتالي
14503_1156594037.gif

كما ترى في الرسمة لايزال هنالك فراغات بين النقاط , والتي من الممكن أن لا تتقاطع مع محور السينات كما حدث في البرنامج الذي قمنا بعمله, وهذا هو سبب عدم ظهور دائرة حمراء حول منطقة التقاطع, ودعونا نقوم بعمل البرنامج الأول ولكن في صورة Digital Domain
14503_1156594594.gif

وستظهر الرسمة في الصورة التالية
14503_1156594712.gif

والآن دعونا ننقاش حلاً لهذه المشكلة, عند ضرب نقطة في النقطة التي بعدها سنحصل على رقم, ولكن الفكرة أن الرقم قد يكون موجباً في حالة ان النقطتان فوق محور السينات, بينما إذا كانت إحدى النقط فوق محور السينات والآخرى تحت محور السينات فإن الرقم الناتج يكون سالباً, أما إذا كان كلا النقتطين أسفل محور السينات فإن ناتج ضرب النقتطين يكون موجباً, أي أن إذا ظهر رقم سالب فهذا يعني نقطة تقاطع, ثم يتم وضع دائرة حمراء على تلك النقطة, شاهد الصورة التالية
14503_1156597120.gif

كل ما علينا هو ضرب كل نقطة في النقطة التي تليها, وذلك عن طريق تعريف y ثم تعريف نفس الدالة, ولكن متقدمة عنها برقم واحد, ثم ضربهم معاً, فمثلاً إذا كانت قيمة y كالآتي
14503_1156597303.gif

ثم سنقوم بإضافة رقم ليتم تحريك تلك القيم, ويفضل أن يكون الرقم صفراً, كما سيتم حذف الرقم الأخير حيث أنها ستكون أطول بعدد واحد فقط من الدالة الأصلية مما سيترتب عليه خطأ داخل الماتلاب وبالتالي فإن الدالة الجديدة ستكون متأخرة برقمهي
14503_1156597368.gif

والآن سنقوم بكتابة البرنامج بالتدريج التالي
14503_1156599148.gif

وبالتالي ستلاحظ الرسمة التالية
14503_1156599173.gif

وبالتالي تكون الرسمة قد أصبحت صحيحة
وبهذا ينتهي التطبيق الثاني​
 
إنضم
6 أكتوبر 2005
المشاركات
1,295
مجموع الإعجابات
29
النقاط
0
إيجاد المساحة تحت المنحنى

إيجاد المساحة تحت المنحنى
هذا المثال من التطبيقات الهامة, حيث سنقوم بتعريف المدخلات ورسم الدالة, ثم سنختار نقطتان نقطتان من على الرسم, ثم سنقوم بإيجاد المساحة بين تلك النقطتين, ونقوم بتظليل الجزء المختار, ولكن سنقوم في هذا المثال بإستخدام أمرين جديدين وهما
trapz لإيجاد المساحة تحت المنحنى
area لتظليل تلك المساحة من الدالة
وسنقوم بشرح الأمر area
حيث يأخذ الصورة التالية
14503_1156682742.gif

وسنقوم بتنفيذ مثال بسيط على الماتلاب برسم دالة الجيب ثم تظليل تلك الدالة
14503_1156682900.gif

وستظهر الرسمة كالتالي
14503_1156682933.gif

أما بخصوص الأمر trapz فيستخدم في إيجاد المساحة تحت المنحنى, حيث يأخذ الصورة التالية
14503_1156683108.gif

وسنقوم بعمل برنامج بسيط في إيجاد المساحة تحت منحنى دالة الجيب
14503_1156683194.gif

وبالتالي ستلاحظ قيمة المساحة من خلال نافذة Workspace
14503_1156683278.gif

الآن نتوجه إلى البرنامج الذي نريد تنفيذه, سنقوم بإدخال المدخلات inputs ثم سنقوم بالتعويض بها في المخرجات outputs ثم سنقوم بإختيار النقطتان من على الرسمة, ثم سنوجد المساحة تحت المنحنى بين تلك النقطتين, ثم سنقوم بتظليل المساحة بين النقتطين.
14503_1156684208.gif

وتم إختيار نقتطان عشوائيتان, وظهرت الرسمة كالتالي
14503_1156684260.gif

وبهذا يكون التطبيق الثالث قد تم بنجاح
التطبيق الرابع والأخير في هذه الدورة سيتم تنفيذه المشاركة القادمة​
 
إنضم
6 أكتوبر 2005
المشاركات
1,295
مجموع الإعجابات
29
النقاط
0
curve fitting

Curve Fitting
سنقوم الآن بأخذ المثال التطبقي الثالث والأخير وهو Curve Fitting حيث أن هذه العملية هامة جداً في إيجاد علاقة مكافأة لأي نظام, فمثلاً عند إدخال مجموعة من المدخلات inputs سنلاحظ أن الخرج outputs تأخذ مجموعة من النقاط المتشتتة التي لا تجمعها علاقة محددة, أما عند إستخدام curve fitting سنلاحظ تكون علاقة تقريبية لتوصيف النظام.
وهذه صورة لمجموعة من النقاط الخارجة من النظام لا تجمعها أي علاقة
14503_1157026695.gif

ولكن سنقوم بشرح أمرين وهما ones و zeros واللذان لهما القدرة التالية
ones يستطيع أن يكون مصفوفة أو متجه جميع عناصره 1
zeros يستطيع أن يكّون مصفوفة أو متجه جميع عناصره صفر
لاحظ الصورة التالية في طريقة كتابة كلا الأمرين
14503_1157027053.gif

وستلاحظ ظهور النتائج بالشكل التالي
14503_1157027085.gif

أما الآن سنتكلم عن أنواع Curve Fitting
هنالك أنواع عديدة منها
1- linear
2- Quadratic
3- Sinusoidal
4- exponential
وسنتناول النوع الأول والرابع, أما الآن سنتناول النوع الأول
Linear Curve Fitting
في هذا النظام يتم إيجاد خط مستقيم بحيث تكون المسافة العمودية بين كل نقطة والخط المستقيم أقل ما يمكن, يمكن مشاهدة الصورة التالية
14503_1157028186.gif

فكما هو واضح في المثال كل قيمة في محور السينات لها قيمة مناظرة في محور الصادات
وحيث اننا نستخدم طريقة Linear Curve Fitting فإن لكل نقطة على محور الصادات علاقة خطية مع نقطة محددة على محور السينات, وهذه العلاقة تكتب في الصورة التالية
14503_1157029284.gif

فإذا عدنا بالذاكرة للخلف عند حل المعادلات سنجد اننا كنا نقوم بكتابة المعادلات بالشكل التالي
14503_1157029370.gif

ويمكنا كما تعلمنا كتابة تلك المعادلة في الصورة التالية
14503_1157029609.gif

وبالرجوع إلى المعادلة الخاصة بــ Linear Curve Fitting نستطيع كتابتها في الصورة التالية
14503_1157029936.gif

وبهذا نكون قد حصلنا على قيمة كلاً من K & T والتي نستطيع أن نقوم بتعريف مجموعة قيم للمتغير X وبالتالي نقوم بالحصول على قيمة Y ومنها نقوم برسم العلاقة بين X & Y والتي تمثل خطاً تبعاً للمعادلة التالية
14503_1157030083.gif

والآن سنقوم بالبدء بكتابة البرنامج في الماتلاب خطوة خطوة
سنقوم الآن بتعريف الماتلاب بمجموعة القيم للمتغير X والعلاقة للنظام التي تعطينا قيمة Y
14503_1157030806.gif

والآن لنفترض أن لدينا أكثر من قيمة X وبالتالي سنحصل على أكثر من قيمة Y
وحيث أن العلاقة بين X & Y خطية كما ذكرنا مسبقاً فإننا بالتالي سيكون لدينا أكثر من معادلة يمكن كتابتها في الصورة التالية
14503_1157031250.gif

والتي يمكن وضعها في الشكل التالي
14503_1157031484.gif

وسنقوم في الماتلاب بتحويل متجه الصف Row Vector إلى متجه عمودي Column Vector ثم إضافة متجة عمودي جميع قيمه واحد بإستخدام الأمر ones كما تعلمنا مسبقاً
14503_1157032113.gif

والآن قد يظن البعض أنه حتى نحصل على قيم K & T يجب أن تكون صورة الحل كالآتي
14503_1157031757.gif

ولكن هذا صحيح إذا كانت قيمة A مصفوفة مربعة , فهل هي كذلك الآن ؟ بالطبع لا, فما العمل
إذا كانت المصفوفة ليست مربعة يتم وضع علامة القسمة مقلوبة ( \ ) ولا يتم إستخدام الأمر inv أي أن صورة الحل الصحيح تكون
14503_1157031869.gif

وبالتالي يكون الحل في الماتلاب كالآتي
14503_1157032195.gif

وبالتالي فإن المعادلة الناتجة والتي من خلالها سنرسم خطاً بحيث تكون المسافة العمودية بينه وبين النقاط أقل ما يمكن, تكون في الصورة التالية
14503_1157032344.gif

والآن سنقوم بتعريف الماتلاب عدة نقاط بحيث نرسم ذلك الخط
14503_1157032490.gif

وبالتالي نحصل على الرسم بالشكل التالي
14503_1157032520.gif

وننتقل إلى التطبيق الذي يليه وهو
Exponential Curve Fitting​
 
إنضم
6 أكتوبر 2005
المشاركات
1,295
مجموع الإعجابات
29
النقاط
0
Exponential Curve Fitting

Exponential Curve Fitting
سنأخذ الآن التطبيق الأخير في هذه الدورة وهو Exponential Curve Fitting , ويمكن كتابة العلاقة بين X & Y بالشكل التالي
14503_1157033724.gif

وإذا وجدت أكثر من نقطة, فهذا يعني وجود أكثر من معادلة والتي تكتب في الصورة التالية
14503_1157033854.gif

والتي يمكن كتابتها في صورة المصفوفة
14503_1157034040.gif

والآن سنقوم بوضع البرنامج على الماتلاب
14503_1157034203.gif

وبالتالي سيظهر الناتج كالتالي
14503_1157034265.gif

هذا ونكون قد أنهينا دورة الماتلاب بفضل الله​
 
إنضم
6 أكتوبر 2005
المشاركات
1,295
مجموع الإعجابات
29
النقاط
0
الخاتمة

الحمد لله رب العالمين والصلاة والسلام على خير المرسلين
أحمد الله أولاً وأخيراً على توفيقه لي في الإنتهاء من دورة الماتلاب خطوة بخطوة
كما أسأل الله أن تكون اداة نافعة للجميع بإذن الله
كما أود أن أشكر كل من ساندوني وشجعوني لإتمام هذه الدورة
وبهذا أستودعكم الله الذي لا تضيع ودائعه ونلقاكم بإذن الله في دورة جديدة
والسلام عليكم ورحمة الله وبركاته
أخوكم
14503_1157034861.gif
م. أحمد عفيفي

 
التعديل الأخير:
الحالة
مغلق و غير مفتوح للمزيد من الردود.
أعلى