2012-04-13 7 views
0

I die Gleichung habe A * x = bVerwendung gewöhnliche kleinste Quadrate (OLS)

Größen von A ist Matrix Größe nxm, x ist mx 1 und b sind nx 1. Ein hat mehr Zeilen als Spalten (n < m).

Mein unbekannt ist A und da n! = M, A keine inverse haben. Meine Bekannten sind die beiden Vektoren x und b. Grundsätzlich möchte ich die A A A * x - b) nahe Null finden.

Kleinste Quadrate scheint angemessen, aber ich bin mir nicht sicher, wie weiter zu gehen, da es nicht mein Lehrbuch noch die wikipedia entry folgen; üblicherweise ist die Matrix A bekannt. Wenn OLS nicht angemessen ist, was wäre? Singluar-Wertzerlegung? Nochmal, bitte, Zeiger, meine lineare Algebra ist rostig.

Möchten Sie dies (Python/C) implementieren können. Zeiger auf gut lesbaren Code?

Antwort

1

Dafür gibt es unendlich viele Lösungen, und nichts so Anspruchsvolles wie eine singuläre Wertzerlegung wird notwendig sein.

Wenn n = m, dann könnte A einfach eine diagonale Matrix sein, aber Sie haben n> m. Wir können also nicht so einfach sein.

Wir können dies als das Problem der Suche nach n unabhängigen Vektoren (die Zeilen von A) sehen, so dass, wenn Sie ihr Skalarprodukt mit x bilden, sie das entsprechende Element von b ergeben. Also ist A * x = b (die Lösung wird genau sein) äquivalent zum Finden von Zeilen von A, so dass, wenn A_i die i-te Zeile von A ist, Punkt (A_i, x) = b (i).

So gesehen ist die Lösung offensichtlich! Offensichtlich zeigt es, warum es keine "Lösung" gibt, sondern unendlich viele solche Lösungen, die alle ziemlich trivial sind.

So wählen Sie zum Beispiel beliebiges Element von x, das nicht Null ist. Sprich es ist das k-te Element. Dann erzeuge A_i als den Vektor, der ALL Null ist, außer für das entsprechende gewählte Nicht-Null-Element von x.

A_i(k) = b(i)/x(k) 

Alle anderen Elemente von A_i sind Null. So, jetzt, bilden Sie das Punktprodukt. Sehen Sie, dass A * x = b genau gelöst ist, durch eine Matrix X, die nur eine Spalte ungleich Null hat, und diese Spalte eine ziemlich triviale.

+0

Wäre mein Problem eingeschränkt, wenn ich erwarte, dass eine Reihe von A meistens nicht Null ist? – bushbo

+1

Nein. Es ist immer noch trivial zu lösen. Sie können fast alle Werte für die meisten Spalten von A darstellen und haben immer noch eine Lösung. In der Tat können Sie Zufallszahlen aus jeder beliebigen Verteilung für alle außer einer Spalte von A auswählen. Es gibt einfach keine praktikable Möglichkeit, aus dem, was Sie gesagt haben, eine intelligente Lösung auszuwählen. Und es gibt noch keine Notwendigkeit für eine komplexe Faktorisierung. –