Main Content

mrdivide, /

シンボリック行列の右除算

説明

X = B/A は、行列形式のシンボリック線形方程式系 X*A = BX についての解を求めます。行列 AB の列数は同じでなければなりません。行列の右除算 B/A(A'\B')' と等価です。

解が存在しないか、解が一意でない場合は、/ 演算子は警告を発します。

A は方形行列にできますが、方程式同士は整合性がなければなりません。シンボリック演算子 / は、最小二乗解を計算しません。

関数 X = mrdivide(B,A) は、関数 x = B/A と等価です。

行列形式の方程式系

係数の正方行列と方程式の右辺のベクトルによって指定された線形方程式系の解を求めます。

方程式の項の係数行列と方程式の右辺のベクトルを作成します。

A = sym(pascal(4))
b = sym([4 3 2 1])
A =
[ 1, 1,  1,  1]
[ 1, 2,  3,  4]
[ 1, 3,  6, 10]
[ 1, 4, 10, 20]
 
b =
[ 4, 3, 2, 1]

演算子 / を使用して、この系を解きます。

X = b/A
X =
[ 5, -1, 0, 0]

ランク落ちの系

方程式の項の係数行列と方程式の右辺のベクトルを作成します。

A = sym(magic(4))'
b = sym([0 1 1 0])
A =
[ 16,  5,  9,  4]
[  2, 11,  7, 14]
[  3, 10,  6, 15]
[ 13,  8, 12,  1]
 
b =
[ 0, 1, 1, 0]

系のランクを求めます。この系は 4 つの方程式を含みますが、ランクが 3 です。したがって、この系はランク落ちの系です。これは、系の 1 つの変数が独立でなく、他の変数で表されることを意味します。

rank(vertcat(A,b))
ans =
3

シンボリック演算子 / を使用して、この系を解いてみます。ランク落ちの系の場合、得られる解は一意になりません。

b/A
Warning: Solution is not unique because the system is rank-deficient. 
 
ans =
[ 1/34, 19/34, -9/17, 0]

不整合な系

方程式の項の係数行列と方程式の右辺のベクトルを作成します。

A = sym(magic(4))'
b = sym([0 1 2 3])
A =
[ 16,  5,  9,  4]
[  2, 11,  7, 14]
[  3, 10,  6, 15]
[ 13,  8, 12,  1]
 
b =
[ 0, 1, 2, 3]

シンボリック演算子 / を使用して、この系を解いてみます。演算子は警告を発し、すべての要素が Inf に設定されたベクトルを返します。方程式系が不整合なために解が存在しないからです。要素数は方程式の数 (係数行列の行数) に等しくなります。

b/A
Warning: Solution does not exist because the system is inconsistent. 

ans =
[ Inf, Inf, Inf, Inf]

この系の行簡約階段形を求めます。最後の行は、方程式の 1 つが 0 = 1 に簡約されることを示します。これは方程式系が不整合であることを意味します。

rref(vertcat(A,b)')
ans =
[ 1, 0, 0,  1, 0]
[ 0, 1, 0,  3, 0]
[ 0, 0, 1, -3, 0]
[ 0, 0, 0,  0, 1]

入力引数

すべて折りたたむ

係数行列。シンボリック数、シンボリック スカラー変数、シンボリック行列変数、シンボリック関数、シンボリック行列関数、シンボリック式として指定するか、シンボリック スカラー変数のベクトルまたは行列として指定します。

右辺。シンボリック数、シンボリック スカラー変数、シンボリック行列変数、シンボリック関数、シンボリック行列関数、シンボリック式として指定するか、シンボリック スカラー変数のベクトルまたは行列として指定します。

出力引数

すべて折りたたむ

解。シンボリック数、シンボリック スカラー変数、シンボリック行列変数、シンボリック関数、シンボリック行列関数、シンボリック式として返されるか、シンボリック スカラー変数のベクトルまたは行列として返されます。

ヒント

  • 多くのシンボリック変数が含まれる行列計算は低速になる可能性があります。計算速度を向上させるには、特定の値を変数に代入することでシンボリック変数の数を減らします。

  • ゼロで除算するとき、mrdivide は分子の符号を考慮し、これに対応させて Inf または -Inf を返します。

    syms x
    [sym(1)/sym(0), sym(-1)/sym(0), x/sym(0)]
    ans =
    [ Inf, -Inf, Inf*x]

バージョン履歴

R2006a より前に導入

すべて展開する