Wie verwende ich die kleinsten Quadrate Annäherung in MATLAB?
-
11-09-2019 - |
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
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);