MATLAB の線形方程式

Ammar Ali 2023年1月30日
  1. MATLAB の solve() 関数を使用して連立方程式の解法
  2. MATLAB で linsolve() 関数を使用して連立方程式を解く
MATLAB の線形方程式

このチュートリアルでは、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() 関数を使用するには、上記のコードで関数名 solvevpasolve に変更する必要があります。方程式が行列形式の場合は、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() 関数には記号演算ツールボックスが付属しているため、これらの関数を使用するにはツールボックスがインストールされていることを確認してください。

著者: Ammar Ali
Ammar Ali avatar Ammar Ali avatar

Hello! I am Ammar Ali, a programmer here to learn from experience, people, and docs, and create interesting and useful programming content. I mostly create content about Python, Matlab, and Microcontrollers like Arduino and PIC.

LinkedIn Facebook