2009-10-04 9 views
9

Wie löst man die (nicht triviale) Lösung Ax = 0 für x in MATLAB?Lösen einer Matrix in MATLAB?

Ich habe versucht zu lösen ('A * x = 0', 'x'), aber ich bekomme nur 0 für eine Antwort.

+1

ist ein umkehrbar? – manji

+2

Invertierbarkeit ist nicht besonders relevant (für sich). – Peter

+2

Wenn A invertierbar ist, ist die einzige Lösung für Ax = 0 0, nein? – manji

Antwort

13

Bitte beachten Sie, dass die Null (A) tut das Gleiche (für einen Rang-defiziente Matrix) als die folgenden, aber dies wird mit der svd(A) Funktion in MATLAB (die wie ich in meinen Kommentaren erwähnt habe, ist, was null(A) tut).

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

Für mehr dazu, hier ein link im Zusammenhang mit diesem (es kann nicht hier posten aufgrund der Formeln).

Wenn Sie ein intuitiveres Gefühl für Singular- und Eigenwertzerlegungen haben möchten, lesen Sie in MATLAB eigshow.

+0

eingegangen danke für die Erklärung :) – yxk

9

Sie können N = null(A) verwenden, um eine Matrix N zu erhalten. Jede der Spalten von N (oder tatsächlich irgendeine lineare Kombination von Spalten von N) erfüllt Ax = 0. Dies beschreibt alle möglichen solchen x - Sie haben gerade eine orthogonale Basis für den Nullraum von A gefunden.

Hinweis: Sie können einen solchen x nur finden, wenn A einen nicht-trivialen Nullraum hat. Dies wird auftreten, wenn rank(A) < #cols of A.

+0

Mein Rang (A) = # cols. Wie "mindert" man den Wert des Rangs? Auch null (A) = leere Matrix: 12-by-0. – yxk

+0

Sie sollten in niedrigrangige Annäherungen schauen. Sie können dafür die SVD verwenden. – Peter

1

Sie können sehen, ob MATLAB eine singuläre Wertzerlegung in seiner Toolbox hat. Das wird Ihnen den Nullraum des Vektors geben.

+0

Das wäre SVD, was zum gleichen Ergebnis wie null (A) führt. – Jacob

+0

Sie verwenden verschiedene numerische Methoden. – Peter

+0

Nicht wirklich, null (A) verwendet svd - http://www.mathworks.com/access/helpdesk/help/techdoc/index.html?/access/helpdesk/help/techdoc/ref/null.html – Jacob