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

fminimax plot in Abhängigkeit von festen Variablenwerten

 

Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 06.07.2011, 19:36     Titel: fminimax plot in Abhängigkeit von festen Variablenwerten
  Antworten mit Zitat      
Hallo zusammen,

ich würde gerne folgenden Plot in Matlab erstellen.
Es gibt ja in der Optimization Toolbox die Funktion fminimax:

FMINIMAX finds a minimax solution of a function of several variables.
FMINIMAX attempts to solve the following problem:
min (max {FUN(X} ) where FUN and X can be vectors or matrices.
X

Sie rechnet mir das Minimum über dem Maximum verschiedener Funktionen aus. Gegeben habe ich nun speziell 3 verschiedene (quadratische) Funktionen z=f1(x,y),z=f2(x,y),z=f3(x,y) in 2 Veränderlichen. Über fminimax kriege ich leicht min(max(f1,f2,f2)) heraus. Nun möchte ich aber für verschiedene (aber fest vorgegebene) x-Werte, am besten x aus einem Intervall [a,b], mir die Minima (also (x,y*)) plotten lassen in einer Grafik. In der Grafik sollen also sowohl die Minima (x,y*) in der x-y Ebene dargestellt werden, als auch am besten noch f1,f2,f3 selber in der x-y-z Ebene.

War das verständlich ausgedrückt? Es gibt mehrere Unterforen, wo das gepasst hätte, ich dachte mir hier am besten. Wenn nicht, verschiebt den Thread bitte.

Wie bekomme ich das am besten in Matlab hin?

Viele Grüße
Verschoben: 08.07.2011, 13:00 Uhr von Bijick
Von Grafiken und Plots nach Toolboxen


Bijick
Ehrenmitglied

Ehrenmitglied



Beiträge: 914
Anmeldedatum: 18.06.07
Wohnort: Nürnberg
Version: R2006b, R2008b
     Beitrag Verfasst am: 08.07.2011, 13:06     Titel:
  Antworten mit Zitat      
Hallo Gast,

das ist ja erstmal kein Grafik- sondern ein Optimierungsproblem, denn Du musst die Paare (x,y*) ja erst mal bestimmen. Dafür musst Du Dein Programm so umschreiben, dass nur noch y die Optimierungsvariable ist, x aber ein Parameter. Dann kannst Du eine Schleife drumherum legen und die Paare (x,y*) berechnen.

Wenn Du soweit bist, können wir auch das Grafikproblem lösen.

Herzliche Grüße
Bijick
_________________

>> why
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.07.2011, 16:45     Titel:
  Antworten mit Zitat      
Hey,

danke dir. Ich habs soweit hinbekmomen!
Mein Code:

Code:

for x=-150:0.1:150
    options = optimset('Display','off');
    [y,fval,maxfval,exitflag] = fminimax(@(y) objfun(x,y), 0,[],[],[],[],[],[],[],options);
    plot(x,y,'b-')
    hold on;
end
 


Nun gehts aber an die Grafik.

Viele Grüße
Gast
 
Bijick
Ehrenmitglied

Ehrenmitglied



Beiträge: 914
Anmeldedatum: 18.06.07
Wohnort: Nürnberg
Version: R2006b, R2008b
     Beitrag Verfasst am: 08.07.2011, 19:34     Titel:
  Antworten mit Zitat      
Hallo Gast,

jetzt kannst Du zum Beispiel in der Schleife noch f1, f2 und f3 von (x,y) berechnen und das Ergebnis mit

Code:


in die Grafik einfügen. Oder Du füllst in der Schleife nur Vektoren auf und plottest sie dann anschließend in einem Rutsch. das geht jedenfalls schneller.

Herzliche Grüße
Bijick
_________________

>> why
Private Nachricht senden Benutzer-Profile anzeigen E-Mail senden
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.07.2011, 20:35     Titel:
  Antworten mit Zitat      
Hm, ich bekomms gerade nicht hin die Funktionen auszuwerten...

Meine objfun.m sieht wie folgt aus:
Code:

function f = objfun(x,y)

f(1) = 2*x^2-2*x*y+2*y^2+5*x+20*y+600;
f(2) = 2*x^2-2*x*y+2*y^2-5*x-20*y+200;
 


Wie kann ich denn jetzt f(x,y) jeweils auswerten? Habe es mit feval probiert, aber irgendwie kapier ich die Syntax noch nicht ganz.

Viele Grüße
Gast
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.07.2011, 20:53     Titel:
  Antworten mit Zitat      
Ich hab jetzt folgendes:
Code:

for x=-150:1:150
    z=x;
    options = optimset('Display','off');
    [y,fval,maxfval,exitflag] = fminimax(@(y) objfun(x,y), 0,[],[],[],[],[],[],[],options);
    val = objfun(x,z);
    plot(x,y,'b-')
    hold on;
    plot3(x,z,val(1),'g',x,z,val(2),'r')
    hold on;
end
 

Das ist aber irgendwie nicht das, was ich will. Die Funktionen sollen ja schon in 3D geplottet werden. So bekomm ich nur ein 2-D Bild.
 
Gast



Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 08.07.2011, 21:06     Titel:
  Antworten mit Zitat      
Fragen über Fragen:

Ich kann mit
Code:

for x=-10:.1:10
    for z=-10:.1:10
        val = objfun(x,z);
        plot3(x,z,val(1),'g',x,z,val(2),'r')
        hold on;
    end
end
 

jetzt beide Funktionen plotten. Aber 1. dauert das ewig, sogar nur von -10:10 jeweils und 2. wie bekomme ich jetzt den 2-D Plot, also (x,y*) in die Grafik rein?
 
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.