Main Content

linsolve

行列形式のシンボリック線形方程式の求解

説明

X = linsolve(A,B) は、行列方程式 AX = B を解きます。ここで、A はシンボリック行列、B はシンボリック列ベクトルです。

A が正方行列の場合は、[X,R] = linsolve(A,B)A の条件数の逆数も返します。それ以外の場合、linsolveA のランクを返します。

すべて折りたたむ

linsolve を使用して、この行列形式の線形方程式系を解きます。

[211-11-1123][xyz]=[23-10]

A = [ 2 1  1;
     -1 1 -1;
      1 2  3];
B = [2; 3; -10];
X = linsolve(A,B)
X = 3×1

     3
     1
    -5

解は x=3y=1z=-5 です。

2 つの出力引数を使用して、正方係数行列の条件数の逆数を計算します。

syms a x y z
A = [a 0 0; 0 a 0; 0 0 1];
B = [x; y; z];
[X, R] = linsolve(A, B)
X = 

(xayaz)

R = 

1max(|a|,1)max(1|a|,1)

係数行列が長方形の場合、linsolve は 2 番目の出力引数として係数行列のランクを返します。この動作を示します。

syms a b x y
A = [a 0 1; 1 b 0];
B = [x; y];
[X,R] = linsolve(A,B)
Warning: Solution is not unique because the system is rank-deficient.
X = 

(xa-x-ayab0)

R = 2

入力引数

すべて折りたたむ

係数行列。シンボリック行列として指定します。

方程式の右辺。シンボリック ベクトルまたはシンボリック行列として指定します。

出力引数

すべて折りたたむ

解。シンボリック ベクトルまたはシンボリック行列として返されます。

逆数の条件数またはランク。シンボリック数の式として返されます。A が正方行列の場合は linsolveA の条件数を返します。それ以外の場合、linsolveA のランクを返します。

詳細

すべて折りたたむ

線形方程式系の行列表現

線形方程式系は次のとおりです。

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

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

A=(a11a1nam1amn)

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

b=(b1bm)

ヒント

  • 解が一意ではない場合、linsolve は警告を表示した上で解を 1 つ選択して返します。

  • 方程式系に解が存在しない場合、linsolve は警告を表示し、すべての要素が Inf に設定された状態で X を返します。

  • シンボリック オブジェクトではない数値行列について linsolve を呼び出すと、MATLAB® 関数 linsolve が呼び出されます。この関数では実数の引数だけが受け入れられます。方程式系に複素数が使用される場合、sym を使って少なくとも 1 つの行列をシンボリック行列に変換してから linsolve を呼び出してください。

バージョン履歴

R2012b で導入