2009-10-04 18 views
9

MATLABのxの場合、(非自明な)解Ax = 0をどのように解いていますか?MATLABで行列を解く?

A = matrix 
x = matrix trying to solve for 

私はsolve( 'A * x = 0'、 'x')を試しましたが、答えは0になります。

+1

可逆で? – manji

+2

可逆性は特に重要ではありません。 – Peter

+2

Aが可逆である場合、Ax = 0への唯一の解は0、いいえ? – manji

答えて

13

以下のように(ランク欠損行列のための)同じことを行いますが、これは、私は私のコメントで述べてきたようにMATLABでsvd(A)機能が(何で使用される(A)はヌルに注意してください。 null(A))。

[U S V] = svd(A); 
x = V(:,end) 

は、この詳細については、こちら(原因式に、ここに投稿することはできません)これに関連しlinkです。

MATLABで特異度と固有値の分解をもっと直観的に感じたい場合は、eigshowをチェックしてください。

+0

説明に感謝します:) – yxk

9

N = null(A)を使用して、Nの行列を得ることができます。 Nの列(または、実際には、Nの列の任意の線形結合)は、Ax = 0を満足する。これは可能なすべての可能性を記述していますx - ちょうどAのヌルスペースの直交基底を見つけました。

注:Aに些細な空白が含まれている場合にのみ、このようなxが見つかります。これは、rank(A) < #cols of Aの場合に発生します。

+0

私のランク(A)=#cols。ランクの価値をどのように「軽くする」のですか? null(A)=空行列:12で0。 – yxk

+0

あなたは低いランクの近似を調べるべきです。これにはSVDを使用することができます。 – Peter

1

MATLABがツールボックスに特異値分解を持っているかどうかを確認できます。それはあなたにベクトルの空白を与えます。

+0

これはSVDとなり、null(A)と同じ結果になります。 – Jacob

+0

彼らは異なる数値的方法を使用します。 – Peter

+0

実際にはnull(A)はsvdを使用します - http://www.mathworks.com/access/helpdesk/help/techdoc/index.html?/access/helpdesk/help/techdoc/ref/null.html – Jacob