آموزش برنامه نویسی متلب
موضوع:محاسبات نمادین در متلب
جلسه:نوزدهم
مدرس : پدرام مشهدی زاده
متلب را ساده،آسان و شیرین بنوشید!!!
تدریس خصوصی آنلاین و از راه دور متلب(MATLAB) با مدرس های حرفه ای و با تجربه [اینجا کـــــلیک کــــنید]
متلب یک کتابخانه ریاضی قوی و گسترده در زمینه محاسبات نمادین یا symbolic دارد. این ابزار یک راه دیگر برای حل محاسبات ریاضی به جای محاسبات بر روی اعداد می باشد. در این روش ما محاسبات ریاضی را به صورت نمادین و نه عددی برروی عبارات ریاضی نمادین که تعریف می کنیم، انجام می دهیم. مثلا حل انتگرال های نامعین، محاسبات حد توابع، حل معادلات و ... به کمک این ابزار به راحتی ممکن خواهدبود. این روش محاسن و کاربردهای خود را دارد. این عملیات نمادین در حوزه های زیر کاربرد دارد:
دو دستور syms و sym() برای تعریف یک متغیر نمادین یا یک تابع نمادین به کارمی-روند. در بیشتر موارد از این دو دستور به جای یکدیگر نیز میتوان استفاده نمود و البته تفاوت هایی نیز با یکدیگر دارند.
به مثال زیر دقت کنید:
>>2/3 ans = 0.6667 >>sym(2)/sym(3 ans = 2/3 |
این مثال تفاوت محاسبه عددی معمولی و نمادین را نشان می دهد. در حالت نمادین به جای حاصل تقسیم دو عدد از نسبت ساده شده ی آن استفاده می شود:
>>sym(4)/sym(6) ans = 2/3 |
مقدار حاصل عبارات نمادین را دریک متغیر می توان ذخیره کرد. در زیر نوع و اندازه این متغیر نشان داده شده است:
>>a = sym(2)/sym(3) a 1x1 112 sym |
می توان حاصل توابع ریاضی موجود در متلب را به صورت نمادین به دست آورد یا این توابع را به ازای مقادیر نمادین محاسبه کرد. که در هر دوحالت نتیجه یکسان خواهدبود:
>>sqrt(2) ans = 1.4142 >>sym(sqrt(2)) ans = 2^(1/2) >>sqrt(sym(2)) ans = 2^(1/2) |
مقدار 2√ در دوحالت عددی و نمادین را به دست آوردیم. دیدیم که در حالت نمادین مقدار زیر رادیکال محاسبه نخواهدشد و به شکل عبارت ریاضی فوق نشان داده می شود. برای عبارات پیچیده تر متلب عبارات ساده شده را نشان خواهد داد:
>>sym( sqrt( sym(3)*sym(2)^2 + sym(8)) ) ans = 2*5^(1/2) |
اگر یک عبارت نمادین را همراه با مقادیر عددی به کار ببریم، مقادیر عددی نیز به صورت نمادین درنظر گرفته شده و مقدار نتیجه حاصل نیز نمادین خواهدبود:
>>a = sym(2) + 2 a = 4 whos a Name Size Bytes Class Attributes a 1x1 112 sym |
بنابراین به جای عبارت پیچیده ی مثال قبل می توان صورت ساده تر زیر را به کاربرد:
>>sym( sqrt( 3*sym(2)^2 + 8) ) ans = 2*5^(1/2) |
علاوه بر مقادیر عددی، متغیرهای ریاضی نمادین مانند x و y و... نیز می توان تعریف نمود:
>>sym('x') ans 1x1 112 sym |
می بینیم که از لحاظ ابعاد، اندازه و یا حجم داده، بین دو حالت داده نمادین عددی و حرفی تفاوتی وجود ندارد. از دستور syms هم به طور مشابه می توان استفاده نمود.
>>syms x ans = x |
دستور syms نیازی به پرانتز و ‘’ ندارد. همچنین برای تعریف همزمان چند متغیر نمادین مناسب تر از sum() است:
>>syms x y |
اکنون که x و y نمادین تعریف شدند، عبارات ریاضی را می توان به کمک آن ها تعریف نمود:
>>x^2 + 2*x + 1 ans = x^2 + 2*x + 1 >>sqrt( 4*y + 2) ans = 2^(1/2)*(2*y + 1)^(1/2) |
شاید حاصل عبارت فوق در نگاه اول پیچیده به نظر بیاید، اما در واقع این عبارت همان √2√(2&(2y+1)) است. اما متلب از عبارت فوق برای محاسبات نمادین استفاده می کند. برای نمایش و چاپ حاصل یک عبارت نمادین و صرفا به منظور خوانایی بیشتر آن از دستورات زیر استفاده می شود:
>>pretty(ans) 1/2 1/2 2 (2 y + 1) >>simplify(x^2+2*x+1) ans = (x + 1)^2 |
دستور simplify نمایش عبارت را ساده تر می کند. در واقع به کمک آن چندجمله ای فوق تجزیه گردید. برای عکس عمل فوق یعنی بسط چندجمله ای از دستور expand استفاده می کنیم:
>>expand(ans) ans = x^2 + 2*x + 1 |
از دستور expand برای موارد زیر نیز می توان استفاده کرد:
- پخش ضرب روی جمع:
>>expand((x-1)*(y-2)) ans = x*y - y - 2*x + 2 |
- بسط توابع مثلثاتی:
>>expand(sin(x+y)) ans = cos(x)*sin(y) + cos(y)*sin(x) |
- بسط توابع نمایی:
>>expand(exp(x+y)^2) ans = exp(2*x)*exp(2*y) >>expand(exp((x+y)^2)) ans = exp(x^2)*exp(y^2)*exp(2*x*y) |
- بسط توابع لگاریتمی:
>>expand(log(x^2*y)) ans = log(x^2*y) |
برای اینکه تابع بسط روی آرگومان های لگاریتم نیز اعمال شود از دستور زیر استفاده می کنیم:
>>expand(log(x^2*y),'IgnoreAnalyticConstraints',true) ans = 2*log(x) + log(y) |
- تمرین: دستور simplify را برروی نتایج فوق اعمال کنید. بررسی کنید آیا عبارت اولیه متناظر هر یک از عبارات به دست خواهدآمد یا خیر.
ضرایب عبارات ریاضی هم می توانند به صورت نمادین تعریف شوند. مثلا:
>>syms a b c x y >>a*x^2 + b*x + c; |
با دستور sum() می توان تابع نمادین نیز تعریف کرد. برای مثال اگر چندجمله ای بالا را بخواهیم به صورت تابع تعریف کنیم، خواهیم داشت:
>>syms a b c x y >>f = sym('a*x^2 + b*x + c') f = a*x^2 + b*x + c |
نحوه دیگر تعریف تابع نمادین با دستور syms است:
>>syms f(x,y) >>f(x,y) = sqrt(x^2+y^2) |
توابع نمادین را می توان به ازای مقادیر عددی مختلف به دست آورد. بسته به نحوه تعریف تابع از روش های فوق، روش به دست آوردن مقدار تابع در یک نقطه دلخواه به ترتیب به صورت های زیر خواهد بود:
>>syms a b c x y >>f =sym('a*x^2 + b*x + c'); >>subs(f,x,1) ans = a + b + c >>subs(f,x,2) ans = 4*a + 2*b + c >>subs(f,[x a b c],[2 1 2 3]) ans = 11 |
دستور subs که مخفف substitute یا جایگذاری است، عمل جایگذاری مقادیر دلخواه که می توانند یک بردار هم باشند را به ترتیب انجام می دهد.
>>syms f(x,y) >>f(x,y) = sqrt(x^2+y^2); >>f(1,2) ans = 5^(1/2) |
پیروز و موفق باشید
جلسه نوزدهم | محاسبات نمادین در متلب
فرمت:PDF (لطفا در صورت خرابی لینک دانلود گزارش بدید که لینک اصلاح کنیم)
بستن *نام و نام خانوادگی * پست الکترونیک * متن پیام |
دوره های آموزشی برنامه نویسی
انجام پروژه های برنامه نویسی
تدریس خصوصی برنامه نویسی
بیش از 7 سال از فعالیت جاواپرو میگذرد
جاواپرو دارای مجوز نشر دیجیتال از وزارت فرهنگ و ارشاد اسلامی است
جهت ارتباط مستقیم با جاواپرو در واتساپ و تلگرام :
09301904690
بستن دیگر باز نشو! |