WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Gram Schmidt Verfahren in MATLAB

 

ERM
Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 26.09.09
Wohnort: ---
Version: 7.7.0(R2008b)
     Beitrag Verfasst am: 07.10.2009, 15:27     Titel: Gram Schmidt Verfahren in MATLAB
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen


Nicolas S.
Forum-Century

Forum-Century


Beiträge: 143
Anmeldedatum: 15.07.09
Wohnort: ---
Version: R2014a/b
     Beitrag Verfasst am: 28.10.2009, 11:23     Titel:
  Antworten mit Zitat      
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.
Private Nachricht senden Benutzer-Profile anzeigen
 
ERM
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 26.09.09
Wohnort: ---
Version: 7.7.0(R2008b)
     Beitrag Verfasst am: 28.10.2009, 12:28     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Nicolas S.
Forum-Century

Forum-Century


Beiträge: 143
Anmeldedatum: 15.07.09
Wohnort: ---
Version: R2014a/b
     Beitrag Verfasst am: 28.10.2009, 12:40     Titel:
  Antworten mit Zitat      
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.
Private Nachricht senden Benutzer-Profile anzeigen
 
ERM
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 17
Anmeldedatum: 26.09.09
Wohnort: ---
Version: 7.7.0(R2008b)
     Beitrag Verfasst am: 28.10.2009, 14:17     Titel:
  Antworten mit Zitat      
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
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button RSS

Hosted by:


Copyright © 2007 - 2024 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.