|
|
Gram Schmidt Verfahren in MATLAB |
|
ERM |
Forum-Anfänger
|
|
Beiträge: 17
|
|
|
|
Anmeldedatum: 26.09.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 7.7.0(R2008b)
|
|
|
|
|
|
Verfasst am: 07.10.2009, 14:27
Titel: Gram Schmidt Verfahren in MATLAB
|
|
Ich möchte eigentlich ein Gram-Schmidt-Verfahren zur Orthogonalbasis bestimmt machen.
Nun hab ich auf Wikipedia gelesen:
"Für die numerische Berechnung durch einen Computer sind die Gram-Schmidt-Verfahren nicht geeignet. Durch akkumulierte Rundungsfehler sind die berechneten Vektoren nicht mehr orthogonal. Es existieren aber Modifikationen des Verfahrens, die diesen Fehler nicht haben."
Das Problem ist. Ich schreibe das aus einem Matcad Programm raus und habe einen 7879x9 Matrix. Dieses Programm ist aber auch numerisch. Trotzdem unterscheiden sich die Werte ab dem 4/5ten Eingangsignal(Spalte) sehr stark.
Im Matlab summiere ich den Teil der Vorherigen Vektoren auf und lass dann mit "orth" Befehl die Orthogonalbasis berechnen.
Kann ich dann nun trotzdem so machen oder sollt eich noch irgendetwas einbauen oder gar ein anderes Verfahren anwenden?
Vielen dank im Voraus,
ERM
|
|
|
|
|
Nicolas S. |
Forum-Century
|
|
Beiträge: 146
|
|
|
|
Anmeldedatum: 15.07.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2014a/b
|
|
|
|
|
|
Verfasst am: 28.10.2009, 10:23
Titel:
|
|
Prüf doch einfach ob das Ergebnis
1. orthogonal genug ist und
2. aus der Zerlegung genau genug die Ursprungsmatrix herauskommt.
Wenn beides gegeben ist, brauchst Du Dir keine Sorgen zu machen.
Grüße
Nicolas
_________________
--
The programmer suggested it.
|
|
|
ERM |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 17
|
|
|
|
Anmeldedatum: 26.09.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 7.7.0(R2008b)
|
|
|
|
|
|
Verfasst am: 28.10.2009, 11:28
Titel:
|
|
den 1ten Punkt hat ich gemacht, der war hoffnungslos schlecht. die 1 in der Diagonale war vorhanden aber der rest war 0.1 oder sogar höher. Hab den einfach die ganze Matrix in den orth befehl gejagt. Das Ergebnis übersteht die erste Prüfung.
Die 2te Prüfung sagt mir erst mal nichts.
Das Problem ist auch, das ich ein Matlab Programm schreibe, was schon in MATCAD geschrieben wurde. Da funktioniert das Gram-Schmidt Verfahren und auch die erste Prüfung passt. Aber die Ergebnisse der Orthgonal Basis werden immer Unterschiedlicher je höher die Spaltenzahl in der Matrix ist. Und am besten soll Matlab haargenau die selben Werte liefern wie Matcad. Aber das ist kaum möglich(oder nur mit komplizierten nachregeln von hand).
ERM
|
|
|
Nicolas S. |
Forum-Century
|
|
Beiträge: 146
|
|
|
|
Anmeldedatum: 15.07.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: R2014a/b
|
|
|
|
|
|
Verfasst am: 28.10.2009, 11:40
Titel:
|
|
Ich gehe mal davon aus, daß alles auf eine QR-Zerlegung rausläuft.
Es gibt unendlich viele korrekte QR-Zerlegungen einer Matrix A. Der Gram-Schmidt-Algorithmus liefert eine. Aber alle anderen sind auch korrekt. Wichtig ist nur, daß Q othonormal genug ist und daß gilt: Q*R = A.
Sprich:
[code]
A = rand(100,10);
epsilon = 100*eps;
[Q,R] = qr(A);
% 1. Bedingung
Q'*Q - eye(size(Q,1)) < epsilon
% 2. Bedingung
Q*R - A < epsilon
[/code]
Um "genau das gleiche" Ergebnis wie Matcad zu bekommen muß man den Gram-Schmidt-Algorithmus von Hand programmieren. Aber das gibt die bekannten numerischen Probleme bei schlecht konditionierten Matrices.
Um es auf den Punkt zu bringen: Wozu brauchst Du eine "genau gleiche Lösung wie Matcad" ?
Grüße
Nicolas
_________________
--
The programmer suggested it.
|
|
|
ERM |
Themenstarter
Forum-Anfänger
|
|
Beiträge: 17
|
|
|
|
Anmeldedatum: 26.09.09
|
|
|
|
Wohnort: ---
|
|
|
|
Version: 7.7.0(R2008b)
|
|
|
|
|
|
Verfasst am: 28.10.2009, 13:17
Titel:
|
|
Nicolas S. hat Folgendes geschrieben: |
Um es auf den Punkt zu bringen: Wozu brauchst Du eine "genau gleiche Lösung wie Matcad" ?
Grüße
Nicolas |
Der Auftraggeber will das so, um zu schauen ob mein Programm wirklich richtig ist. Aber ich hab mittlerweile eingie Prüfungen drin und werd deine 2te Bedingung auch mit einbauen. Vielen dank auf jeden Fall. Durch die Mathematik lässt sich der Chef schon überzeugen.
Ich hatte das Verfahren erst von Hand programmiert. Mit dem Ergnis das es nicht korrekt genug war. Aber im vergleich zum Matcad Ergebnis war der Unterschied nicht so groß, er war wie gleich verteilt. Mit dem Orth Befehl sind die ersten paar Spalten gleich, aber gegen Ende wird die Abweichung immer größer.
Vielen dank
ERM
|
|
|
|
|
Einstellungen und Berechtigungen
|
|
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
goMatlab.de | Dies ist keine offizielle Website der Firma The Mathworks
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.
|
|