الدرس الثالث عشر فى دورة برنامج السميولينك - التعامل مع الجداول

الدرس الثالث عشر

السلام عليكم ورحمة الله وبركاته
نعود مرة أخرى أخوانى الأعزاء بعد أنقطاع دام أكثر من سنة لنستكمل دورة السميولينك والتى قد بدءنها معنا

Working with Lookup Tables
التعامل مع بلوكات الجداول

ويكون هناك عادة متسلسة او معادلة حسابية وظيفتها اخراج مخرجات معينة نتيجة لمدخلات محددة

مثال بسيط

الدالة التكعيبية
y = x^3
حيث المدخلات تتكون من الفترة 3 الى -3
كما بالجدول الاتى

نجد ان العنصر المدخل 2 يقابله مخرج 8
ولكن فى حالة عدم وجود الدخل المطلوب فمثلا اذا اردنا قيمة y عند x تساوى 1.5 او اذا كان يقع خارج الفترة
هنا سيقوم السميولينك بعملية interpolate or extrapolate لاستخراج هذه القيم بصورة خطية

ونجد ان الجداول فى السميولينك تقدم لنا حلولا بصورة غير رياضية وتكون بالتقدير او التقريب واسرع من الحلول الرياضية وخصوصا عند عملية المحاكاة

تركيب الجداول
من الشكل الاتى وهو عبارة عن جدول ثنائى الابعاد يتضح لنا ان المدخلات هنا تسمى Vectors or breakpoint data sets

انواع بلوكات الجداول

1- Lookup Table
وهو أبسط انواع البلوكات حيث يتعامل مع بعد واحد فقط واذا اردنا استخدام بعدين فيجب علينا استخدام النوع الاخر

2-Lookup Table (2-D)
وهو نفس النوع السابق ولكن الجداول به يحتوى على بعدين
ويتكون هذا الجدول من Row index input values وهو الصف الذى يحتوى على قيم X ويكون أفقى
Column index input values وهو الصف الذى يحتوى على قيم Y الرأسية
Table data المصفوفة التى تحتوى قيم الجدول او المخرجات

3-Lookup Table (n-D)
ويستخدم هذا النوع لحل المعادلات التى بها اكثر من متغيرين ويكون حلها رقمى وليس حل رياضى دقيق ويقوم بعمل مختلف عمليات interpolation
ويتكون من الاتى :
Number of table dimensions
لابد قبل استخدام هذا البلوك من تحديد عدد الابعاد التى يتعامل معها
Breakpoints for dimension
قيم المدخلات
Table data
قيم المخرجات
ويمكن ايضا اضافة بعض المعاملات لتحسين النتائج
Index search method
Interpolation method
Extrapolation method

4- Prelookup
يستخدم هذا البلوك مع Interpolation Using Prelookup ويقوم بعملية ال Interpolation حيث يقوم بحساب الدليل
وفترة التقسيم المستخدمة index and interval fraction

5- Direct Lookup Table (n-D)
6-Lookup Table Dynamic
7-Sine, Cosine

أختيار بلوك الجدول المناسب
Choosing a Lookup Table

يعتمد اختيار نوعية بلوك الجدول على اساس ابعاد البيانات التى لدينا حيث اذا كنا سنستخدم بيانات فى بعد واحد او بعدين او اكثر من بعدين فان البلوك المستخدم
سيختلف فى كل حالة وايضا يعتمد الخيار على نوعية البيانات الرقمية فمثلا نجد ان كل البلوكات لديها القدرة فى التعامل مع الاعداد الحقيقة ولكن اذا اردنا التعامل مع
ارقام معقدة فاننا سنستخدم البلوكات الاتية :Direct Lookup Table (n-D) and Lookup Table (n-D) blocks
ويعتمد الخيار ايضا على الدقة Accuracy
فتختلف الدقة من بلوك الى اخر ومن عملية الى عملية اخرى نتيجة ما يتم من عمليات interpolation and extrapolation وما ينتج عنها من تقريب وايضا نجد نوع عملية interpolation قد يسبب فى اختلاف الدقة مثل العمليات الاتية linear or cubic spline.
فى الجدول الاتى نجد مقارنة بين انواع الجداول المختلفة بناء على استخدامتها وخصائصها ليساعدنا فى اختيار البلوك المناسب لنا :

كيفية ادخال نقاط التوقف وبيانات الجدول
Entering Breakpoints and Table Data

ويوجد ثلاثة طرق لادخال البيانات الى الجداول سنتعرف عليها الان
------------
Entering Data in a Lookup Table Block’s Parameter Dialog Box
نقوم الان بعمل مثال لجدول بسيط وهو الدالة التكعيبية على الفترة من -3 الى 3
اولا سنقوم بفتح برنامج السميولينك وعمل نموذج جديد
سنقوم بوضع بلوك Lookup Table به

ومن ثم نقوم بفتح خصائصه كما يلى

ونجد البيانات الاتية
Vector of input values وهى تعبر عن قيم المدخلات والتى تكون الفترة من -3 الى 3
Table data وهى المخرجات وتكون القيم التكعيبية للمدخلات

Entering Data in the Lookup Table Editor
ادخال البيانات عن طريق محرر الجداول

مثال ::
سنقوم الان بعمل هذه المعادلة
صورة 7
حيث X من صفر الى 2
و Y من صفر الى 2

وحيث ان المعادلة تحتوى على متغيريين فاننا سنقوم باستعمال البلوك الاتى
Lookup Table 2-D
ولفتح محرر الجداول : عن طريق الدخول الى قائمة tools
واختيار Lookup Table Editor
كما فى الصورة الاتية

ونلاحظ وجود القيم الأفتراضية للجدول
والان سنقوم بادخال قيم X فى Row Breakpoints
وقيم Y فى Column Breakpoints
وايضا لا ننسى التعويض فى المعادلة وايجاد قيم الجدول كما فى الصورة الاتية

وبعد ذلك نعمل بعمل
Update Block Data من خلال قائمة file

-------------
Entering Data Using the Lookup Table Dynamic Block’s Inports
ادخال بيانات بلوك الجدول الديناميكى عن طريق استيراد البيانات

فى المثال الاتى سنقوم بعملية تقريب للمعادلة الاتية

من الفترة صفر الى 10
سنقوم الان باضافة البلوك الديناميكى والبلوك اللازمة لحل هذه المعادلة
كما بالشكل الاتى

وادخال قيم البلوكات كما موضح اعلاه فى الشكل

خصائص بلوكات الجداول
Characteristics of Lookup Table Data

هناك بعض القيود على حجم بيانات الجدول سواء breakpoint data او table data
اما الحجم الكلى للجدول فالذى يحدده هو ذاكرة جهاز الكمبيوتر.
وايضا يجب ان يكون هناك توافق بين ابعاد الجدول وابعاد متغيرات الادخال breakpoint فى المحاور الثلاثة

Monotonicity of Breakpoint Data Sets

Monotonicity هو اسم لدالة رياضية دائما تحتفظ بترتيب معين مثلا دائما فى تزايد او دائما فى تناقص ويعنى هنا ان يكون هناك ترتيب معين لمدخلات الجداول ويفضل ان يكون دائما monotonically increasing
للحصول على معلومات أكثر حول الدالة Monotonic يرجى الدخول هنا
http://en.wikipedia.org/wiki/Monotonic_function

Representing Discontinuities
تمثيل النقاط الغير المتصلة
وهى النقاط التى لا قيمة لها اى تكون عندها قيمة المتغير الافقى او المتغير الراسى تساوى صفر
كما فى الصورة الاتية :

فى هذه الصورة نلاحظ اننا لدينا مخرجين لمدخل واحد وهو الصفر
فى هذه الحالة فان بلوك الجدول يكون لديه بعض القواعد التى يختار على اساسها الخارج

اولا :: فى حالة ان الدخل المتشابه أصغر من الصفر
لدينا الدخل -1 والخرج -1
ولدينا الدخل -1 والخرج -2
وفى هذه الحالة يقوم البرنامج باخراج أخر خرج فقط للقيم المتشابه
مثلا فى هذه الحالة يقوم البرنامج باخراج القيمة -2 عندما يكون الدخل -1 ولا يقوم باخراج -1 عند الدخل -1
ولذلك نجد النقطة -1و-1 غير سوداء وذلك لانها ليست نقطة اخراج.
-----
ثانيا:
فى حالة النقطتان المتشابهتان أكبر من الصفر
مثل النقطتان 1و2 1و1
فانه البرنامج يقوم باخراج اول نقطة فقط

--------
ثالثا:
فى حالة النقطتان تساوى صفر فان البرنامج يخرج المتوسط
الخرج الاول يساوى -2
الخرج الثانى يساوى 2
المتوسط يساوى صفر
-----------------
اما فى حالة وجود أكتر من دخلان لهم قيم متشابه

فان البرنامج يخرج قيمة الخرج الخاص بالنقطة المتوسطة فقط

تقدير النقط المفقودة
Estimating Missing Points

عموما فى أغلب حالات الجداول فاننا نرى انه يحدث عمليه أخراج البيانات اذا وجد لكل عنصر فيها دخل
ولكن فى ان الدخل الموجود يقع خارج القيم المحددة لقيم الدخول فى الجدول فاننا نجد ان السميولينك يقوم بتقدير قيمه للخرج المقابل له
ويعتمد هذا على عدة طرق

Interpolation Methods
عندما يقع قيمة الدخل بين عنصرين من عناصر breakpoint وهى العناصر المحددة للدخل
فان البرنامج يقوم بحساب قيمته بدلاله القيم المجاورة
ويوجد عدة طرق لعملية interpolation منها :
Linear interpolation
Cubic spline interpolation

ويعتمد نوع عملية ال interpolation على البلوك المستخدم
والطريقة الثانية هى :

Extrapolation Methods
عندما تقع قيمة الدخل خارج عناصر breakpoint وهى العناصر المحددة للدخل
ومنها :
Linear extrapolation
Cubic spline extrapolation

والطريقة الثالثة من طرق تقدير النقط المفقودة هى :
Rounding Methods
تتم هذه الحالة عندما يقع العنصر المراد تقدير قيمه خارح حدود breakpoint او يقع بين عنصرين ولم نقوم بتحديد العملية المستخدمه وتوجد عده طرق من عملية ال Rounding منها :
Use Input Nearest
يقوم البرنامج باخراج قيمه الخرج المقابل للدخل الاقرب للعنصر
Use Input Below
يقوم البرنامج باخراج قيمه الخرج المقابل للدخل الاقل قيمه بعد العنصر
Use Input Above
يقوم البرنامج باخراج قيمه الخرج المقابل للدخل الأكبر قيمه بعد العنصر

مثال:
نجد فى الجدول الاتى قيم ال breakpoint من -5 الى 5 وقيمه الخرج

sinh([-5:5])

وعند اختيار قيمه للدخل تساوى 1.4 كقيمة داخل breakpoint ونستخدم قيمه 5.1 كقيمة خارج فنجد ان الخرج قيمته تختلف باختلاف الطريقة المستخدمة كما فى الجدول الاتى


Lookup Table Editor
محرر الجداول

يتيح محرر الجداول خاصية التعديل السريع لمحتويات الجداول
لفتح المحرر

من قائمة tool فى صفحة النموذج
اختار
Lookup Table Editor

ونلاحظ فى المحرر انه يحتوى على عمودين

العمود الايسر ويحتوى على البلوكات الموجودة فى النموذج المحدد الذى يتم اختياره
والجزء الايمن يحتوى على بيانات بلوك الجدول المحدد
حيث يمكنك تعديل اى قيمه فى الجدول يدويا كما تشاء كما يمكننا ايضا عمل عملية plotting للقيم الموجودة فى الجدول من خلال قائمة plot

-------
مثال :
سنقوم فى المثال الاتى بحساب اللوغاريتم من القيمه 1 الى القيمة 10
1- قم بعمل نموذج كما يلى

وضع فى بلوك الجدول ما يلى

والان افتح بلوك الثابت وغير الرقم الذى به على سبيل المثال ضع الرقم 5
ونلاخط هنا ان ال 5 هى من ضمن ال breackpoints الموجودة لدينا والناتج سيكون 0.698

وعندما نختار قمية موجودة داخل حدود ال breackpoints فاننا نجد البرنامج يقوم بعملية linearly interpolation
وعندما نختار قيمة موجودة خارج حدود الbreackpoints فاننا نجد البرنامج يقوم بعملية linearly extrapolation

والان يكون قد أنتهى الدرس الثالث عشر

تحميل الدرس
الدرس الثالث عشر فى دورة السميولينك.pdf (642.5% u)

بسم الله الرحمن الرحيم
الاخوة الأعزاء سلام الله عليكم ورحمته وبركاته
اشيد بمجهودكم الكبير واتمنى من الله ان يوفقكم فى اختياركم للموضوعات لتجعلوا من هذا المنتدى الموقر صرحا عاليا فى مساعدة كل طالبى العلم باسلوب مشوق بعيدا عن التعقيدات .
كما اتمنى ان ارى الدروس السابقة على ان تكون حزمة متكاملة لهذا الموضوع.
اخوانى اكرر شكرى وعرفانى بجميل صنيعكم واترككم فى رعاية الله وامنه .
والسلام عليكم ورحمة الله وبركاته .,

شكرا بارك الله فيك

اذا ممكن تضع رابط الدرس الأخير
وبارك الله فيك

Thank you very much
but where is the PDF link of this lesson