حل دستگاه سه معادله و سه مجهول (مثل {x+y+z=92x+y−3z=5x−y+z=3 )، با دستور solve ، در متلب (MATLAB)
دستور
solve
در متلب (MATLAB)، برای حل معادلات به کار می رود و چنانچه بخواهیم یک دستگاه چند معادله و چند مجهول را حل کنیم، باید معادلات را به دستور
solve
بدهیم تا این دستور، پاسخ دستگاه را محاسبه کند (
آموزش شماره 28198 ).
بنابراین برای حل یک دستگاه سه معادله و سه مجهول، باید سه معادله مورد نظرمان را به دستور
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 را بخوانید.
به مثال زیر توجه کنید :
فرض کنید بخواهیم دستگاه سه معادله و سه مجهول زیر را حل کنیم :
{x+y+z=92x+y−3z=5x−y+z=3کد متلب (MATLAB) زیر را اجرا می کنیم :
xxxxxxxxxx
clear all
close all
clc
syms x y z
S = solve(x + y + z == 9, 2*x + y + -3*z == 5, x - y + z == 3)
solx = S.x
soly = S.y
solz = S.z
S = [S.x S.y S.z]
3 خط اول کدها، برای عدم تداخل برنامه فعلی با برنامه های قبلی اجرا شده در متلب (MATLAB) می باشد.
نتیجه :
xxxxxxxxxx
S =
struct with fields:
x: [1×1 sym]
y: [1×1 sym]
z: [1×1 sym]
solx =
4
soly =
3
solz =
2
S =
[ 4, 3, 2]
می توانیم کد متلب (MATLAB) مورد نظر را به شکل دیگری نیز بنویسیم :
xxxxxxxxxx
clear all
close all
clc
syms x y z
eqns = [x + y + z == 9, 2*x + y + -3*z == 5, x - y + z == 3];
vars = [x y z];
[solx, soly, solz] = solve(eqns, vars)
نتیجه :
xxxxxxxxxx
solx =
4
soly =
3
solz =
2
فرض کنید بخواهیم دستگاه سه معادله و سه مجهول زیر را حل کنیم :
{x+y+z=6x−y2+2z=7x+y−z=0کد متلب (MATLAB) زیر را اجرا می کنیم :
xxxxxxxxxx
clear all
close all
clc
syms x y z
S = solve(x + y + z == 6, x - y^2 + 2*z == 7, x + y - z == 0)
solx = S.x
soly = S.y
solz = S.z
S = [S.x S.y S.z]
نتیجه :
xxxxxxxxxx
S =
struct with fields:
x: [2×1 sym]
y: [2×1 sym]
z: [2×1 sym]
solx =
2
5
soly =
1
-2
solz =
3
3
S =
[ 2, 1, 3]
[ 5, -2, 3]
مشاهده می کنید که دستگاه سه معادله و سه مجهول فوق، دارای دو سری پاسخ می باشد.
می توانیم کد متلب (MATLAB) مورد نظر را به شکل دیگری نیز بنویسیم :
xxxxxxxxxx
clear all
close all
clc
syms x y z
eqns = [x + y + z == 6, x - y^2 + 2*z == 7, x + y - z == 0];
vars = [x y z];
[solx, soly, solz] = solve(eqns, vars)
نتیجه :
xxxxxxxxxx
solx =
2
5
soly =
1
-2
solz =
3
3