Moore-Penrose pseudoinverse < Matrizen < Lineare Algebra < Hochschule < Mathe < Vorhilfe
|
Aufgabe | [mm] \vmat{\vektor{ x_{1} \\ x_{2} \\ x_{3} \\ x_{4} \\ x_{5} } } [/mm] = [mm] \vmat{ cos(\alpha_{1}) & sin(\alpha_{1}) \\ cos(\alpha_{2}) & sin(\alpha_{2}) \\ cos(\alpha_{3}) & sin(\alpha_{3}) \\ cos(\alpha_{4}) & sin(\alpha_{4}) \\ cos(\alpha_{5}) & sin(\alpha_{5}) } [/mm] * [mm] \vektor{V_{1} \\ V_{2} }
[/mm]
also:
[mm] |\overrightarrow{X}| [/mm] = A [mm] *|\overrightarrow{V}| [/mm]
Es sollen die Geschwindigkeiten [mm] V_{1} [/mm] und [mm] V_{2} [/mm] bestimmt werden. |
Da ich zu einer MxN Matrix keine inverse nutze kann, wollte ich die Moore-Penrose Pseudoinverse nutzen. Hierfür habe ich Matlab verwendet, das die Funktion pinv() hat. Hiermit funktioniert es wunderbar, ich bekomme die richtigen Geschwindigeiten heraus.
Mein nächster Versuch war nach der Formel aus Wikipedia:
[mm] A^{+}=((A* A)^{-1})A*
[/mm]
Sieht in Matlab so aus:
PA=((A'*A).^-1)*A'
das Problem ist, dass die sich stark unterscheiden.
Wenn ich jetzt A PA A mache, dann müsste ich meines wissens nach A erhalten, das passiert aber nicht. Wo liegt mein Fehler? Leider habe ich noch nie mit einer Pseudoinversen gearbeitet und habe mein Wissen aus Wikipedia und verschiedenen anderen Quellen und das ist leider nicht viel.
Wäre nett, wenn mir wer einen Gedanken geben könnte was pinv() anders macht als das was ich verwende wäre ich sehr dankbar!
Gruß,
Auti
Ich habe diese Frage in keinem Forum auf anderen Internetseiten gestellt.
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 14:13 Mi 04.01.2012 | Autor: | fred97 |
> [mm]\vmat{\vektor{ x_{1} \\ x_{2} \\ x_{3} \\ x_{4} \\ x_{5} } }[/mm]
> = [mm]\vmat{ cos(\alpha_{1}) & sin(\alpha_{1}) \\ cos(\alpha_{2}) & sin(\alpha_{2}) \\ cos(\alpha_{3}) & sin(\alpha_{3}) \\ cos(\alpha_{4}) & sin(\alpha_{4}) \\ cos(\alpha_{5}) & sin(\alpha_{5}) }[/mm]
> * [mm]\vektor{V_{1} \\ V_{2} }[/mm]
>
> also:
> [mm]|\overrightarrow{X}|[/mm] = A [mm]*|\overrightarrow{V}|[/mm]
>
> Es sollen die Geschwindigkeiten [mm]V_{1}[/mm] und [mm]V_{2}[/mm] bestimmt
> werden.
> Da ich zu einer MxN Matrix keine inverse nutze kann,
> wollte ich die Moore-Penrose Pseudoinverse nutzen. Hierfür
> habe ich Matlab verwendet, das die Funktion pinv() hat.
> Hiermit funktioniert es wunderbar, ich bekomme die
> richtigen Geschwindigeiten heraus.
> Mein nächster Versuch war nach der Formel aus Wikipedia:
> [mm]A^{+}=((A* A)^{-1})A*[/mm]
> Sieht in Matlab so aus:
> PA=((A'*A).^-1)*A'
>
> das Problem ist, dass die sich stark unterscheiden.
>
> Wenn ich jetzt A PA A mache, dann müsste ich meines
> wissens nach A erhalten, das passiert aber nicht. Wo liegt
> mein Fehler?
Schau nochmal bei Wiki rein.
Obige Darstellung von [mm] A^{+} [/mm] gilt nur unter bestimmten Vor.
FRED
> Leider habe ich noch nie mit einer
> Pseudoinversen gearbeitet und habe mein Wissen aus
> Wikipedia und verschiedenen anderen Quellen und das ist
> leider nicht viel.
>
> Wäre nett, wenn mir wer einen Gedanken geben könnte was
> pinv() anders macht als das was ich verwende wäre ich sehr
> dankbar!
>
> Gruß,
> Auti
>
> Ich habe diese Frage in keinem Forum auf anderen
> Internetseiten gestellt.
|
|
|
|
|
danke, habe es gerade weiter durchgelesen, habe jetzt auch mal die andere Mögichkeit:
A* ( A A* [mm] )^{-1}
[/mm]
benutzt, aber auch damit komme ich nicht weiter.
Das mit der linearen Unabhängigkeit bereitet mir noch Probleme wie ich die in Matlab (das Ziel ist später ein C++ Codestück dafür) das testen soll. Gibts für sowas schon eine Problemlösung?
|
|
|
|
|
Status: |
(Mitteilung) Reaktion unnötig | Datum: | 15:20 Fr 06.01.2012 | Autor: | matux |
$MATUXTEXT(ueberfaellige_frage)
|
|
|
|