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

Annäherung an das Minimum plotten

 

Lauryi
Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 15.01.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 15.01.2019, 09:58     Titel: Annäherung an das Minimum plotten
  Antworten mit Zitat      
Hallo Smile

ich will die Annäherung meines Gauß-Newton Verfahrens an das Minimum mit einem surf Plot darstellen. Nur leider weis ich nicht ganz, wie man das mit dem surf - Befehl macht. Kann mir vielleicht jemand weiterhelfen ?

Code:
%Gauß-Newton
s = 0.2; %Standardabweichung
e = s*randn(10,1); %normalverteilter Fehler
   
x0_exakt = 0.5*rand(10,1)+5;
x0 = x0_exakt + e; %Startwerte

F = @(x) (x+5).^2 +x.^5 +9;
DF = @(x) 5*x.^4 + 2.*x + 10;
 
maxit = 30; %maximale Anzahl der Iterationsschritte
tol = 1e-8; %Abbruchkriterium

k=0;
x=x0;
s=-(DF(x0)'*DF(x0))\(DF(x0)'*F(x0)); %Schrittweite

while norm(s)>tol && k<maxit
    k=k+1;
    x=x+s;
    s=-(DF(x)'*DF(x))\(DF(x)'*F(x));
end
 


Liebe Grüße Smile
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: 15.01.2019, 18:47     Titel: Re: Annäherung an das Minimum plotten
  Antworten mit Zitat      
Hallo Lauryi,

surf erzeugt eine 3D-Fläche. Wie soll das Ergebnis denn aussehen? Man könnte hier eine Menge verschiedener Dinge als Fläche darstellen.

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

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 15.01.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 21.01.2019, 07:13     Titel:
  Antworten mit Zitat      
Hallo Jan,

ich möchte in meinem surf-Plot erkennen, dass mein Gauss-Newton Verfahren konvergiert bzw. erkennen, ob ich am Ende auch wirklich damit im Minimum lande.

Liebe Grüße
Private Nachricht senden Benutzer-Profile anzeigen
 
salerc
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 51
Anmeldedatum: 23.04.18
Wohnort: ---
Version: R2021a
     Beitrag Verfasst am: 21.01.2019, 16:48     Titel:
  Antworten mit Zitat      
Hallo Lauryi,

deine Funktion ist eindimensional, daher brauchst du hier nicht surf , sondern einfach nur plot .

Ich habe mal deinen Code dementsprechend erweitert:

Code:

%Gauß-Newton
s = 0.2; %Standardabweichung
e = s*randn(10,1); %normalverteilter Fehler
   
x0_exakt = 0.5*rand(10,1)+5;
x0 = x0_exakt + e; %Startwerte

F = @(x) (x+5).^2 +x.^5 +9;
DF = @(x) 5*x.^4 + 2.*x + 10;

maxit = 30; %maximale Anzahl der Iterationsschritte
tol = 1e-8; %Abbruchkriterium

k=0;
x=x0;
s=-(DF(x0)'*DF(x0))\(DF(x0)'*F(x0)); %Schrittweite

figure;
hold on;
t = -10:0.1:10;
plot(t, (t+5).^2 +t.^5 +9);
plot(x,F(x),'o');

while norm(s)>tol && k<maxit
    pause(0.1);
    k=k+1;
    x=x+s;
    s=-(DF(x)'*DF(x))\(DF(x)'*F(x));
    clf;
    hold on;
    plot(t, (t+5).^2 +t.^5 +9);
    plot(x,F(x),'o');
end


Allerdings hat deine Funktion gar kein lokales Minimum, sondern nur einen Sattelpunkt. Ich verstehe auch nicht ganz, warum du immer 10 Punkte gleichzeitig berechnest. Aber das war ja nicht deine Frage.

Viele Grüße
Salerc
Private Nachricht senden Benutzer-Profile anzeigen
 
Lauryi
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 15.01.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 22.01.2019, 16:09     Titel:
  Antworten mit Zitat      
Das war eine schlecht gewählte Beispielfunktion von mir ..
Ich verwende normalerweise eine komplexere Funktion und wollte hier mein Problem mit einem einfachen Beispiel beschreiben ..

Angenommen es gäbe ein lokales Minimum, dann hätte ich gerne einen Plot etwa in dieser Art:
https://www.google.de/search?q=gaus.....wM:&spf=1548165864227

Die Linien sind nicht zwingend erforderlich.
Private Nachricht senden Benutzer-Profile anzeigen
 
salerc
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 51
Anmeldedatum: 23.04.18
Wohnort: ---
Version: R2021a
     Beitrag Verfasst am: 23.01.2019, 09:41     Titel: Contour
  Antworten mit Zitat      
Hallo Lauryi,

für so einen Plot könntest du wahrscheinlich besser contour verwenden. Wie auch bei surf musst du dafür vorher mit meshgrid deine x und y erzeugen. In den online-Beschreibungen der Funktionen sind immer gute Beispiele dazu.

Die Punkte erzeugst du dann, analog zu dem in meinem Code, durch:
Code:

Oder falls du doch surf verwendest:
Code:
plot3(x,y,F(x),'o')


Viele Grüße
Salerc
Private Nachricht senden Benutzer-Profile anzeigen
 
Lauryi
Themenstarter

Forum-Newbie

Forum-Newbie


Beiträge: 4
Anmeldedatum: 15.01.19
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 31.01.2019, 15:47     Titel:
  Antworten mit Zitat      
Hallo nochmal Smile

ich verstehe nur nicht ganz, wie ich mein Iterationsverfahren in den contour Plot mit einbeziehe..

Vielleicht könnte mir das jemand erklären?

Liebe Grüße
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.