MATLAB の線形方程式
Ammar Ali
2023年1月30日
このチュートリアルでは、Matlab の solve()
および linsolve()
関数を使用して連立一次方程式を解くことについて説明します。
MATLAB の solve()
関数を使用して連立方程式の解法
Matlab の組み込み関数 solve()
を使用して、Matlab の線形方程式系を解くことができます。まず、syms
変数を使用して変数を定義できます。その後、Matlab で方程式を書くことができます。その後、関数 solve()
を使用して方程式を解く必要があります。たとえば、Matlab でいくつかの方程式を定義し、solve()
関数を使用してそれらの解を見つけましょう。以下のコードを参照してください。
syms x y z
eq1 = 2*x + y + 2*z == 1;
eq2 = 2*x + 5*y - z == 2;
eq3 = -3*x + 2*y + 6*z == 10;
matx = solve([eq1, eq2, eq3], [x, y, z]);
xValue = matx.x
yVlaue = matx.y
zValue = matx.z
出力:
xValue =
-82/93
yVlaue =
29/31
zValue =
85/93
ご覧のとおり、方程式には 3つの変数があり、3つの答えがあります。solve()
関数の代わりに vapsolve()
関数を使用して、数値で回答を取得することもできます。vpasolve()
関数を使用するには、上記のコードで関数名 solve
を vpasolve
に変更する必要があります。方程式が行列形式の場合は、linsolve()
関数を使用できます。
MATLAB で linsolve()
関数を使用して連立方程式を解く
方程式の代わりに行列がある場合は、solve()
関数の代わりに関数 linsolve()
が使用されます。equationsToMatrix()
関数を使用して、方程式を行列形式に変換することもできます。たとえば、Matlab でいくつかの方程式を定義し、linsolve()
関数を使用してそれらの解を見つけましょう。以下のコードを参照してください。
syms x y z
eq1 = 2*x + y + 2*z == 1;
eq2 = 2*x + 5*y - z == 2;
eq3 = -3*x + 2*y + 6*z == 10;
[matA,matB] = equationsToMatrix([eq1, eq2, eq3], [x, y, z])
matX = linsolve(matA,matB)
出力:
matA =
[ 2, 1, 2]
[ 2, 5, -1]
[ -3, 2, 6]
matB =
1
2
10
matX =
-82/93
29/31
85/93
solve()
および linsolve()
関数には記号演算ツールボックスが付属しているため、これらの関数を使用するにはツールボックスがインストールされていることを確認してください。