حل دستگاه چند معادله و چند مجهول، با دستور solve ، در متلب (MATLAB)
دستور
solve
در متلب (MATLAB)، برای حل معادلات به کار می رود و چنانچه بخواهیم یک دستگاه چند معادله و چند مجهول را حل کنیم، باید معادلات را به دستور
solve
بدهیم تا این دستور، پاسخ دستگاه را محاسبه کند.
دستور
solve
در نسخه های قدیمی متلب (MATLAB)، تعریف معادلات را به صورت ذکر شده در بین علامت های
'
دریافت می کرد (مثل کد
solve('x+2*y=7','x-y=1')
)، اما در نسخه های جدید متلب (MATLAB)، دیگر علامت
'
در تعریف معادله به کار نمی رود و به جای آن، از دستور
syms
برای تعریف متغیرها به صورت سمبلیک (Symbolic) و همچنین ازعلامت های
==
در تعریف معادله استفاده می شود (مثل کدهای
syms x y
و
solve(x+2*y==7, x-y==1)
).
با توجه به این نکته، این آموزش برای نسخه های جدید متلب (MATLAB) است، بنابراین اگر از نسخه های قدیمی متلب (MATLAB) استفاده می کنید، به جای این آموزش، کلید شماره 140 را بخوانید.
به مثال زیر توجه کنید :
فرض کنید بخواهیم دستگاه دو معادله و دو مجهول زیر را حل کنیم :
\[ \begin{aligned} \begin{cases} x+2y=7 \\ x-y=1 \end{cases} \end{aligned} \]
برای این منظور، با استفاده از دستور
syms
، متغیرها را به صورت سمبلیک (Symbolic) تعریف می کنیم و سپس دو معادله را درون پرانتز دستور
solve
می نویسیم. دقت کنید که به جای علامت
=
در معادله، باید علامت های
==
نوشته شوند :
3 خط اول کدها، برای عدم تداخل برنامه فعلی با برنامه های قبلی اجرا شده در متلب (MATLAB) می باشد.
دستور
S = solve(x + 2*y == 7, x - y == 1)
، دستگاه دو معادله و دو مجهول را حل می کند.
نتیجه :
می توانیم کد متلب (MATLAB) مورد نظر را به شکل دیگری نیز بنویسیم :
نتیجه :
فرض کنید بخواهیم دستگاه سه معادله و سه مجهول زیر را حل کنیم :
\[ \left\{ {\matrix{ {x + y + z = 9} \hfill \cr {2x + y - 3z = 5} \hfill \cr {x - y + z = 3} \hfill \cr } } \right. \]کد متلب (MATLAB) زیر را اجرا می کنیم :
نتیجه :
می توانیم کد متلب (MATLAB) مورد نظر را به شکل دیگری نیز بنویسیم :
نتیجه :
فرض کنید بخواهیم دستگاه سه معادله و سه مجهول زیر را حل کنیم :
\[ \begin{aligned} \begin{cases} x+y+z=6 \\ x-y^2+2z=7 \\ x+y-z=0 \end{cases} \end{aligned} \]کد متلب (MATLAB) زیر را اجرا می کنیم :
نتیجه :
مشاهده می کنید که دستگاه سه معادله و سه مجهول فوق، دارای دو سری پاسخ می باشد.
می توانیم کد متلب (MATLAB) مورد نظر را به شکل دیگری نیز بنویسیم :
نتیجه :
سلام
دستگاه معادلاتی دارم که تعداد معادلات و مجهولات زیاده و معادلات را در یک حلقه for تعریف کردم و از دستور fsolve برای حل معادلات استفاده میکنم ولی پس از حل همان حدس اولیه را به عنوان جواب میده. کسی میتونه کمک کنه که مشکل از کجاست؟