حل معادلات در MATLAB – بخش اول (معادلات معمولی)
در دنیای ریاضی و مهندسی حل معادلات پایه و اساس بسیاری از مسائل می باشد. معادلات می توانند حل عددی و یا پارامتری داشته باشند. در این مقاله حل معادلات غیر دیفرانسیلی و معمولی با متلب آموزش داده می شود. به دستورات vpasolve، solve و linsolve پرداخته می شود.
solve
در ابتدا معادله ای را که می خواهیم حل کنیم را باید معرفی نماییم. برای این دستور، معادلات باید به صورت متغیر (symbol) معرفی گردند. مثالی برای حل یک معادله و سه متغیر در تصویر زیر مشاهده می شود.
در ابتدا سه متغیر با دستور syms معرفی شدند. سپس، معادله معرفی شده و برابر (با دو علامت مساوی ==) با 1 قرار داده شده است. در اولین دستور solve فقط معادله نوشته شده است. مشاهده می شود که معادله بر حسب x حل شده است. حالت پیش فرض برای متغیر x می باشد. اما در دومین دستور، معادله و متغیری که می خواهیم بدست بیاوریم معرفی شده اند. اگر بخواهیم پاسخ دو متغیر را بدست آوریم در [ ] قرار می دهیم. همانطور که دیده می شود پاسخ به صورت struct یا structure می باشد. برای نمایش آن بهتر است پارامتری را به دستور solve اختصاص دهیم. در اینجا s پارامتر مورد نظر ما می باشد. برای دیدن دو پاسخ، دو زیر مجموعه ساختار را صدا می زنیم. روش دیگر این است که حل را با برداری برابر قرار دهیم که به تعداد متغیرها درایه دارد. در آخرین دستور این کار انجام شده است.
حال، اگر بخواهیم مقادیر سینوس را برای حالاتی که برابر با 1 است را به صورت پارامتری بدست آوریم، دستور solve به صورت زیر نوشته می شود.
syms x eq=sin(x)==1; solve(eq,x) [ans_x, parameter, condition]=solve(eq,x, 'ReturnConditions', true)
پاسخ به صورت زیر می باشد.
در کد فوق در ابتدا به صورت عددی رابطه حل شده است. اما، در دستور solve دوم، برای حل کامل معادله همراه با متغیر و شرایط حل، علاوه بر معادله و متغیر، دستور ReturnCondition و عبارت منطقی true استفاده شده است. برای حل کامل سه پاسخ بدست آمده است. پاسخ اول مقدار x به صورت پارامتری، پاسخ دوم متغیر پارامتر که پیشفرض متلب k می باشد. پاسخ سوم نیز شرایط متغیر k است که عدد صحیح می باشد. حال می خواهیم برای مقادیر x بین 2π- و 2π مقدارهای k را بدست آوریم.
interval = [ans_x2 > -2*pi , ans_x2 < 2*pi]; assume(condition) ans_k = solve(interval, parameter) valx = subs(ans_x2, parameter, ans_k)
در ابتدا بازه حل به صورت بردار معرفی شده که درایه اول کران پایین و درایه دوم کران بالا می باشد. برای فرض شرط در متلب از دستور assume استفاده می شود. با این دستور شرط متغیر k را اعمال کردیم. سپس، کران ها را برای متغیر k حل کردیم. در خط آخر نیز مقادیر بدست آمده برای متغیر k را در پاسخ های x با دستور subs جایگذاری کردیم. با توجه به اینکه این کد ادامه کد فوق است، پاسخ این بخش به صورت زیر نتیجه می شود.
با توجه به اینکه سینوس در دو دوره تناوب دو مرتبه مقدارش 1 می شود، برای متغیر k دو مقدار بدست آمده است. با جایگذاری این مقادیر در مقادیر x بدست آمده، مقادیر نهایی بدست می آیند.
vpasolve
برای پاسخ ها عددی معادلات از دستور vpasolve استفاده می شود. همچنین، در برخی مواقع که تساوی دو تابع حل می شود، ممکن است بیش از یک پاسخ وجود داسته باشد. برای این منظور نیز این دستور به کار برده می شود. برای مثال می خواهیم تمامی پاسخ های تساوی یک تابع سینوسی و یک تابع چند متغیره را با دستور vpasolve بدست آوریم. کد به صورت زیر نوشته می شود.
syms x eqn = sin(2*x) == x^3; ans_x1=solve(eqn, x) fplot([sin(2*x) x^3], [-2 2]); legend('sin','x') ans_x2=vpasolve(eqn, x, [-1.5 -0.5]) ans_x3=vpasolve(eqn, x, [0.5 1.5])
در ابتدا معادله با دستور solve حل شده است. هشدار نارنجی رنگ نمایش داده شده در شکل به دلیل استفاده از دستور solve است. این هشدار می گوید که توان حل پارامتری را نداشته و با دستور vpasolve به صورت عددی معادله را حل کرده است. همانطور که در نمودار مشخص است، دو تابع در این بازه در 3 نقطه با یکدیگر برخورد داشته اند. در حالی که حل اول فقط یکی از مقادیر را بدست آورده است. در دو دستور vpasolve موجود در کد، پس از وارد کردن معادله و متغیر، بازه حل نیز مشخص شده و دو پاسخ دیگر به دست آمده اند.
linsolve
برای حل دستگاه معادلات به صورت ماتریسی می توان از دستور linsolve استفاده نمود. برای مثال اگر [A][X] = [B] باشد، برای بدست آوردن ماتریس X از این دستور استفاده می شود. برای مثال اگر دستگاه معادلات به صورت ماتریسی نوشته شود و به صورت زیر باشد، با کد زیر می توان آن را حل نمود.
A=[1 1 1;-0.5 0 2;2 -0.5 0]; B=[4 ;5 ;4.5]; X=linsolve(A,B)
همانطور که در شکل بالا دیده می شود، پاسخ این دستور به صورت ماتریسی می باشد. ماتریسی که درایه های آن به ترتیب برابر متغیرهای موجود y، x و z می باشد.
در این مقاله حل معادلات معمولی به صورت عددی و پارامتری آموزش داده شد. همچنین، حل ماتریس دستگاه معادلات نیز گفته و مثالی از آن زده شد. در مقالات آینده به معادلات غیر خظی و معادلات دیفرانسیل پرداخته خواهد شد.
دیدگاهتان را بنویسید
برای نوشتن دیدگاه باید وارد بشوید.