mrdivide, /
シンボリック行列の右除算
説明
例
行列形式の方程式系
係数の正方行列と方程式の右辺のベクトルによって指定された線形方程式系の解を求めます。
方程式の項の係数行列と方程式の右辺のベクトルを作成します。
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]