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

LR-Zerlegung

 

jojo23
Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 22.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.07.2010, 12:21     Titel: LR-Zerlegung
  Antworten mit Zitat      
Hallo!
Ich LR-Zerlegung mit Skalierung und Spaltenpivotisierung mit Matlab erstellen. Stehe etwas aufn Schlauch! Kann mir da jemand helfen???
Private Nachricht senden Benutzer-Profile anzeigen


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 22.07.2010, 15:05     Titel:
  Antworten mit Zitat      
Hallo jojo,

was hast Du denn bisher geschrieben? Wo treten welche Schwierigkeiten auf?

Wenn Du schon Matlab dafür verwenden möchtest, würde ich direkt den Befehl LU benutzen. Effizienter geht es kaum.

Gruss Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
jojo23
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 22.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.07.2010, 19:19     Titel:
  Antworten mit Zitat      
hallo jan!
danke für deine antwort! ich muss das programm erstellen. ich bin anfänger und kenn mich mit matlab nur wenig aus. kannst du mir bitte genauer beschreiben was du meinst bzw wie es funktioniert.
vielen dank!
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 22.07.2010, 20:44     Titel:
  Antworten mit Zitat      
Hallo Jojo,

Du schreibst, dass Du das Programm schreiben musst. Dafür gibt es sicherlich einen Grund. Lernst Du gerade Matlab oder hörst Du einen Kurs über Numerik? In beiden Fällen solltest Du entweder zumindest ansatzweise ein Programm esrtellen können. Wenn nicht, wird Dein Lehrer/Professor/Assistent dafür bezahlt Dir zu helfen und würde es sicher nicht nett finden, wenn ich die Aufgaben lösen würde.

Ich erwähnt den Befehl LU. Mehr kannst Du Dir dazu mit diesen Befehlen anzeigen lassen:
help lu
doc lu
Und natürlich kannst Du auch Google danach fragen.

Wenn Du dann angefangen hast zu schreiben, bekommst Du hier bei Problemen natürlich gerne Ratschläge.

Viel Erfolg und herzlich willkommen bei Matlab, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
jojo23
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 22.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.07.2010, 11:46     Titel:
  Antworten mit Zitat      
hallo jan!
natürlich habe ich bereits angefangen und schon ein programm erstellt. ich habe ein programm für die gauss-elimination und für die zerlegung, weiß aber nicht wie ich die skalierung mit spaltenpivotisierung miteinbringe. dazu wollte ich eine nachiteration hinzufügen. ich habe erst einzelne programme erstellt und will diese nun kombinieren.

hier ist die gausselimination:

function x = gaussElim(A,b)
for k = 1 : size(A,2)
for i = k+1 : size(A,1)
if A(k,k) == 0
disp('Verfahren nicht durchführbar!');
return;
end
l = A(i,k) / A(k,k);
A(i,Smile = A(i,Smile - l * A(k,Smile;
b(i) = b(i) - l * b(k);
end
end

x = rueckw_einsetzen(A,b);

function x = rueckw_einsetzen(R,c)
n = size(R,1);
x = zeros(n,1);
x(n) = c(n) / R(n,n);
for k = n-1 : -1 : 1
x(k) = (c(k) - R(k, k+1:n) * x(k+1:n)) / R(k,k);
end

und hier die lr-zerlegung

function A = lr(A)
[n,n]=size(A);
for k=1:n-1
for i=k+1:n
A(i,k) = A(i,k)/A(k,k);
end
for i=k+1:n
for j=k+1:n
A(i,j) = A(i,j) - A(i,k)*A(k,j);
end
end
end

nun hänge ich an den oben beschriebenen sachen.

mfg
Private Nachricht senden Benutzer-Profile anzeigen
 
jojo23
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 22.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.07.2010, 12:29     Titel:
  Antworten mit Zitat      
hallo jan!
so jetzt habe ich das mit der pivotisierung hinbekommen. nun fehlt mir noch die skalierung und die nachiteration, hier stehe ich wirklich aufm schlauch.

mfg
Private Nachricht senden Benutzer-Profile anzeigen
 
Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 23.07.2010, 14:16     Titel:
  Antworten mit Zitat      
Hallo Jojo,
sehr gut, es ist immer hilfreich zu sehen, was die Fragenden bereits gelöst haben.

Zur Nach-Iteration: Wenn Du "A*x = b" gelöst hast, indem Du A in L und R zerlegt hast, ist dies leider ja wegen der Rundungsfehler nicht mathematisch perfekt. Deswegen ergibt "d = b - L*R*x" d~=0.

Da man nun A bereits zerlegt hat, läßt sich dies sehr schnell lösen:
A*k = d = b - L*R*x
Das daraus erhaltene k addiert man nun zu x:
x2 = x + k;
Wenn man das 1 bis 3 mal durchführt, verschwindet k praktisch und x3 ist eine sehr genaue Lösung.

Es gibt verschiedene Möglichkeiten das Problem zu skalieren. Es wäre schön, wenn alle Elemente von A die gleiche Größen-Ordnung hätten, weil dann die Pivotisierung stabiler ist.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
jojo23
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 6
Anmeldedatum: 22.07.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 23.07.2010, 14:28     Titel:
  Antworten mit Zitat      
hallo jan!
besten dank! ich werde es mal probieren und mich dann nochmal melden!

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