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

LDL - Tringularization ldl(Matrix)

 

seasidetobi
Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 19.06.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 16.12.2008, 22:53     Titel: LDL - Tringularization ldl(Matrix)
  Antworten mit Zitat      
Hallo,
wer kennt sich mit Lösungsmethoden von (großen) linearen Gleichungssystemen bzw. Matrixmultiplikationen aus?
Folgendes:
Ich habe ein Gleichungssystem der Form:
K*U = R
R, Vektor, ist bekannt, K, eine Matrix, auch bekannt, U ist der gesuchte Vektor.
Nun wird in der Literatur empfohlen, K zu "tringularisieren":
dh. K = L*D*L'
wobei D eine Matrix ist, die nur Terme in der Diagonalen enthält und L eine Dreiecksmatrix ist (die letzte L-Matrix in der Gleichung ist transponiert).
Matlab hat hierfür eine eingebaute Funktion:
[L, D] = ldl(K)
Es wird dann aus dem ursprünglichen Gleichungssystem:
L*D*L'*U = R
Meine Frage dazu: In der Literatur wird gesagt, dass sich durch diese Form das Gleichungssystem effektiver lösen lässt. Ist dies in Matlab wirklich nötig? Kann man auf diese Weise ein Gleichungssystem schneller lösen? Gibt es für bestimmte Werte in K und R eventuell gar keine Werte (z.B. bei einer singulären Matrix K), jedoch spuckt die "tringularisierte" Form eine Lösung aus? Oder würde es einfach reichen in Matlab das Problem mit folgendem Eintrag zu lösen:
U = inv(K)*R ???
Danke für eure Hilfe!
_________________

TB
Private Nachricht senden Benutzer-Profile anzeigen


Titus
Forum-Meister

Forum-Meister


Beiträge: 871
Anmeldedatum: 19.07.07
Wohnort: Aachen
Version: ---
     Beitrag Verfasst am: 21.12.2008, 20:49     Titel:
  Antworten mit Zitat      
Hallo,
nein, es ist nicht nötig, erst mit ldl die Zerlegung zu berechnen, das macht MATLAB von alleine. (Kleine Anmerkung, die Zerlegung funktioniert nur bei symmetrischen Matrizen, ansonsten nimmt man die etwas allgemeinere LR Zerlegung). Interessant sind diese Funktionen, wenn man z.B. viele Gleichungssysteme mit der selben Matrix zu lösen hat. Dann kann man sie einmal zerlegen und dann nur noch das Vorwärts-Einsetzen durchführen, um die Lösung zu berechnen.
Aber: bitte nicht inv(K)*R verwenden! Hier wird MATLAB gezwungen, den numerisch schlechtesten Algorithmus zum Lösen linearer Gleichungssysteme zu verwenden. Die Inverse zu berechnen ist unstabil, und damit das Ergebnis gezwungenermaßen schlecht. MATLAB hat als eingebauten Gleichungssystem-Löser den \, d.h. die Lösung ist einfach:
Code:


Titus
Private Nachricht senden Benutzer-Profile anzeigen
 
seasidetobi
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 19.06.08
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 10.01.2009, 00:41     Titel:
  Antworten mit Zitat      
Danke!
_________________

TB
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.