メインコンテンツ

連立線形方程式の求解

この例では、Symbolic Math Toolbox™ を使用して連立線形方程式を解く方法を説明します。

linsolve を使用した連立線形方程式の求解

連立線形方程式

a11x1+a12x2++a1nxn=b1a21x1+a22x2++a2nxn=b2am1x1+am2x2++amnxn=bm

は、行列方程式 Ax=b として表すことができます。ここで、A は次の係数行列です。

A=[a11a1nam1amn]

また、b は、方程式の右辺を含むベクトルです。

b=[b1bm]

連立線形方程式が AX = B の形式になっていない場合は、equationsToMatrix を使用して方程式をこの形式に変換します。以下の連立方程式を考えます。

2x+y+z=2-x+y-z=3x+2y+3z=-10

連立方程式を定義します。

syms x y z
eqn1 = 2*x + y + z == 2;
eqn2 = -x + y - z == 3;
eqn3 = x + 2*y + 3*z == -10;

equationsToMatrix を使用して方程式を AX = B の形式に変換します。equationsToMatrix への 2 番目の入力は方程式の独立変数を指定します。

[A,B] = equationsToMatrix([eqn1,eqn2,eqn3],[x,y,z])
A = 

(211-11-1123)

B = 

(23-10)

linsolve を使用して AX = B を解き、不明な X のベクトルを求めます。

X = linsolve(A,B)
X = 

(31-5)

X の結果から、方程式の解は x=3y=1、および z=-5 です。

solve を使用した連立線形方程式の求解

方程式が係数の行列ではなく式の形式である場合は linsolve の代わりに solve を使用します。同様の連立線形方程式を考えます。

2x+y+z=2-x+y-z=3x+2y+3z=-10

連立方程式を定義します。

syms x y z
eqn1 = 2*x + y + z == 2;
eqn2 = -x + y - z == 3;
eqn3 = x + 2*y + 3*z == -10;

solve を使用して連立方程式を解きます。solve への入力は方程式のベクトルと、方程式から求める変数のベクトルです。

sol = solve([eqn1,eqn2,eqn3],[x,y,z]);

solve は解を構造体配列で返します。解にアクセスするには配列のインデックスを指定します。

xSol = sol.x
xSol = 3
ySol = sol.y
ySol = 1
zSol = sol.z
zSol = -5

参考

トピック