数学の計算では方程式や方程式を解くことが必要になることが多く、方程式を解くことは数学における重要な知識の一つです。関数solve は、シンボリック式を解くために MATLAB に提供されています。solve 関数を呼び出すには、次のようなさまざまな方法があります。
- solve(equ): 方程式 equ を解きます。解く変数はシステムのデフォルトです。
- solve(equ,var): 方程式 equ を解きます。ここで、解く変数は var です。
- solve(eqn1,eqn2,eqn3,...,eqnM,var1,var2,var3,...varN): N 個の変数と M 個の方程式で構成される方程式系を解きます。
上記のタイプごとの解決策と検証を以下に示します。
(1)(方程式)を解く
solve(equ) は方程式 equ を解くことであり、解く変数はシステムのデフォルト値です。
たとえば、関数solveを使用して、次のシンボリック式を解きます。
MATLAB コードは次のようになります。
syms x a b
solve((x+2)/3==6)
solve(1/x+2==5)
solve(1/x==1/a+1/b)
実行結果は次のとおりです。
ans =
16
ans =
1/3
ans =
1/(1/a + 1/b)
上記の実行結果から、シンボリック変数 x、a、b のうち、システムはデフォルトで x を変数として使用することがわかります。シンボリック式に変数が 1 つだけある場合、MATLAB はその値を正確に解くことができます。変数が複数ある場合、システムはデフォルトの変数を選択してそれを解くこともできます。
(2)solve(equ,var)
関数の呼び出しメソッドがsolve(equ,var)の場合、MATLABは方程式equの特定の変数varを解きます。
たとえば、solve を使用して次のシンボリック式を解きます。
MATLAB コードは次のようになります。
syms a b c x y
ans1=solve(a*x+b==2*c,x)
ans2=solve(4*a+b+c==10,a)
ans3=solve(a*x+y==4,a)
実行結果は次のとおりです。
ans1 =
-(b - 2*c)/a
ans2 =
5/2 - c/4 - b/4
ans3 =
-(y - 4)/x
上記の実行結果から、solve 関数で特定の変数の優先順位がシステムのデフォルト変数の優先順位よりも高くなることがわかります。
(3)solve(eqn1,eqn2,eqn3,...,eqnM,var1,var2,var3,...varN)
関数の呼び出しメソッドがsolve(eqn1, eqn2, eqn3,...,eqnM, var1, var2, var3,...varN)の場合、特定の関数方程式系を解くことができます。 N 個の変数と M 個の方程式から構成される方程式系があることを示します。
たとえば、solve を使用して、次のシンボリック式のグループを解決します。
MATLAB コードは次のようになります。
syms x y z a
[x1,y1]=solve(2*x+y==9,x-y==3,x,y)
[x2,y2,z2]=solve(x+y+z==20,x+2*y+3*z==45,x+2*y-z==9,x,y,z)
[x3,y3,z3]=solve(x^2+y^2==13,x+y-z==0,x+z==8,x,y,z)
[x4,y4]=solve(x+y==2*a,x-y==a+4,x,y)
実行結果は次のとおりです。
x1 =
4
y1 =
1
x2 =
4
y2 =
7
z2 =
9
x3 =
3
17/5
y3 =
2
6/5
z3 =
5
23/5
x4 =
(3*a)/2 + 2
y4 =
a/2 - 2
上の式から、この呼び出しメソッドは方程式系を解くことができ、関数方程式に複数の解がある場合、MATLAB は複数の解を計算することがわかります。