Frage

Für eine Hausaufgabe in der linearen Algebra, habe ich die folgende Gleichung mit MATLAB \ Operator gelöst (das ist der empfohlene Weg, es zu tun):

A = [0.2 0.25; 0.4 0.5; 0.4 0.25];
y = [0.9 1.7 1.2]';
x = A \ y

, die erzeugt die folgende Antwort:

x =
1.7000
2.0800

Für den nächsten Teil der Zuordnung, ich soll die gleiche Gleichung unter Verwendung der kleinsten Quadrate Annäherung lösen (und vergleichen sie dann gegen den vorherigen Wert, um zu sehen, wie genau die Annäherung ist).

Wie kann ich eine Art und Weise zu tun, dass in MATLAB finden?

Vor der Arbeit. Ich habe die Funktion lsqlin gefunden, die Gleichungen der oben genannten Art zu lösen in der Lage sein scheint, aber ich verstehe nicht, welche Argumente sie zu liefern, noch in welcher Reihenfolge

War es hilfreich?

Lösung

mldivide , ( " \ ") macht eigentlich das auch. Nach der Dokumentation :

  

Wenn A eine m-by-n-Matrix mit m ~ = n und B ist ein Spaltenvektor mit m Komponenten oder eine Matrix mit mehreren solchen Säulen, dann X = A \ B wird die Lösung im Sinne der kleinsten Quadraten an das Unter- oder überbestimmtes Gleichungssystem AX = B. mit anderen Worten minimiert X norm (A * X - B), die Länge des Vektors AX - B. der Rang k einer aus der QR-Zerlegung mit Spalte bestimmt wird, Schwenken (siehe Algorithmus für Details). Die berechnete Lösung X hat höchstens k Null verschiedene Elemente pro Spalte. Wenn k

Also wirklich, was man in der ersten Zuweisung tat, war unter Verwendung der Gleichung LSE zu lösen.

Andere Tipps

Hat Ihre Zuordnung beinhaltet explizit eine Least-Squares-Annäherung Codierung, oder einfach eine andere Funktion in MATLAB? Wenn Sie eine andere Funktion verwenden können, ist eine Option LSQR :

x = lsqr(A,y);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top