MATLABでxの(自明ではない)解Ax = 0をどのように解くのですか?
A = matrix
x = matrix trying to solve for
私はsolve('A * x = 0'、'x')を試しましたが、答えは0しか得られません。
MATLABでxの(自明ではない)解Ax = 0をどのように解くのですか?
A = matrix
x = matrix trying to solve for
私はsolve('A * x = 0'、'x')を試しましたが、答えは0しか得られません。
null(A)は(ランクが不足している行列に対して)次のように同じことを行うことに注意してください。ただし、これはMATLABの関数を使用していsvd(A)
ます(コメントで述べたようにnull(A)
)。
[U S V] = svd(A);
x = V(:,end)
これについての詳細は、これに関連するリンクがあります(式のためにここに投稿することはできません)。
特異値と固有値の分解をより直感的に感じたい場合はeigshow
、MATLABで確認してください。
を使用N = null(A)
して行列を取得できますN
。の列のN
いずれか(または、実際には、の列の線形結合N
)は、を満たしAx = 0
ます。これは、そのようなすべての可能性を説明していx
ます-あなたはちょうどの零空間の直交基底を見つけましたA
。
x
注:そのようなifA
は、自明でないnullspaceがある場合にのみ見つけることができます。これは、の場合に発生しますrank(A) < #cols of A
。
MATLAB のツールボックスに特異値分解があるかどうかを確認できます。これにより、ベクトルのヌル空間が得られます。