10 Stimmen

Lösen einer Matrix in MATLAB?

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

A = matrix
x = matrix trying to solve for

Ich habe versucht, solve('A * x = 0', 'x') zu lösen, aber ich erhalte nur 0 als Antwort.

14voto

Jacob Punkte 33625

Bitte beachten Sie, dass null(A) das Gleiche tut (für eine Matrix mit Rangdefizit) wie im Folgenden, allerdings unter Verwendung der svd(A) Funktion in MATLAB (die, wie ich in meinen Kommentaren erwähnt habe, die null(A) tut).

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

Weitere Informationen hierzu finden Sie in einem lien zu diesem Thema (kann es wegen der Formeln nicht hier veröffentlichen).

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

10voto

Peter Punkte 120325

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

Hinweis: Sie können nur eine solche x wenn A einen nicht-trivialen Nullraum hat. Dies ist der Fall, wenn rank(A) < #cols of A .

1voto

duffymo Punkte 298898

Sehen Sie nach, ob MATLAB eine Singulärwertzerlegung in seinem Werkzeugkasten hat. Damit erhalten Sie den Nullraum des Vektors.

0voto

Miae Kim Punkte 1571

null(A) wird Ihnen die direkte Antwort geben. Wenn Sie eine nicht-triviale Lösung benötigen, versuchen Sie es mit der reduzierten Zeilen-Echelon-Form und lesen Sie die erste Seite des pdf.

R = rref(A)

http://www.math.colostate.edu/~gerhard/M345/CHP/ch7_4.pdf

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X