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

Mehrdimensionales Newton-Verf./Iterationsschritte ausgeben

 

leberkas
Forum-Newbie

Forum-Newbie


Beiträge: 3
Anmeldedatum: 11.06.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.06.2010, 13:39     Titel: Mehrdimensionales Newton-Verf./Iterationsschritte ausgeben
  Antworten mit Zitat      
Hallo,
hab folgendes Problem mit der Programmierung des Newton-Verfahrens in MATLAB. (nicht-lineare GLS)
In der Ausgabe sollen sämtliche Iterationsschritte mit Ergebnis angezeigt werden,
die man für's Ausrechnen der Nullstellen benötigt.
Bei mir wird aber nur das Endergibnis (x1=0,5; x2=0,5) angezeigt.
In meinem Beispiel werden genau 4 Schritte benötigt, um auf die Nullstellen zu kommen.

Vielleicht weiss jemand wie ich die Ausgabe aller Schritte in mein Verfahren implementiere...?

Hier seht ihr was ich bisher habe:
Code:

% %Nichtlineare Gleichungssysteme mit mehreren Variablen
% %Mehrdimensionales Newton-Verfahren

% %Für eine gegebene Funktion Funktion F(x,y) = [f1(x,y);f2(x,y)]
% %soll in Matlab das Newton-Verfahren implementiert werden.

% Gegeben sei:
% f1 = x^2+y^2+y-1=0
% f2 = x^2-y^2+x-y-2=0
% mit dem Startwert x0 = (0;0)

% Zur Vereinfachung werden die Variablen x,y in diesem Beispiel als x(1),x(2)
% angenommen. Aus der Ausgangsfunktion ergibt sich:
f1 = x(1)^2+x(2)^2+x(2)-1;
f2 = x(1)^2-x(2)^2+x(1)-x(2)-2;


N=20;          
x=[0;0];        
for i=1:N      
F=[x(1)^2+x(2)^2+x(2)-1; x(1)^2-x(2)^2+x(1)-x(2)-2];    
dF=[2*x(1)+2*x(2)+1; 2*x(1)-2*x(2)];                    
x=x-dF\F;      
end
x  

 

Vielen Dank schonmal falls Ihr mehr wisst;)

Edit by denny: Bitte die Code-Formatierung verwenden. Danke!
Private Nachricht senden Benutzer-Profile anzeigen


thunder
Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 27.08.08
Wohnort: ---
Version: R2010a Unix (Ubuntu)
     Beitrag Verfasst am: 23.08.2010, 19:51     Titel:
  Antworten mit Zitat      
Hallo Leberkas,

ist zwar schon ein wenig her aber vielleicht hilfts ja noch.
Um die Werte zu speichern einfach die einzelnen Elemente auslesen und in einem Vektor speichern. Falls du dir die Werte nur anzeigen lassen möchtest genügt es auch einfach das Semikolon hinter dem
Code:
wegzu lassen.

Code:

N=20;
x=[0;0];
for i=1:N
F=[x(1)^2+x(2)^2+x(2)-1; x(1)^2-x(2)^2+x(1)-x(2)-2];
dF=[2*x(1)+2*x(2)+1; 2*x(1)-2*x(2)];
x=x-dF\F;                     % zum Anzeigen einfach ";" weglassen
x1(i)=x(1);                  % Auslesen x(1) und speichern
x2(i)=x(2);                   % Auslesen x(2) und speichern
end
x


Eleganter wäre meiner ansicht nach auch die iteration mit einer while schleife zu versehen und die Abbruchbedingung durch eine entsprechend geringe Toleranzschwelle zu realisieren in Kombination mit einer max. Anzahl Iterationsschritte.

Ich hoffe das es noch was nützt.
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.