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

Fminsearch

 

schnuti1985
Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 19.06.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.06.2010, 11:30     Titel: Fminsearch
  Antworten mit Zitat      
Hallo ich hoffe einer kann mir helfen.
Ich soll aus einer Funktion 3 Parameter optimieren mit fminsearch oder fmincon.
Irgendwie klappt bei mir aber die ganze Sache nicht und nun wollte ich fragen ob jemand evt. meinen Fehler erkennt.

Danke schonmal

Optimierung_nichtlin_Regression.m
 Beschreibung:

Download
 Dateiname:  Optimierung_nichtlin_Regression.m
 Dateigröße:  429 Bytes
 Heruntergeladen:  803 mal
optimierung.m
 Beschreibung:

Download
 Dateiname:  optimierung.m
 Dateigröße:  149 Bytes
 Heruntergeladen:  769 mal
Private Nachricht senden Benutzer-Profile anzeigen


mr_endres
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 78
Anmeldedatum: 11.06.08
Wohnort: Unterfranken
Version: ---
     Beitrag Verfasst am: 19.06.2010, 12:48     Titel:
  Antworten mit Zitat      
Hallo,

also du möchtest für jeden Wert von S die Funktion in "optimierung.m" minimieren ?

Für einen festen Wert von S sollte "Optimierung_nichtlin_Regression.m" so lauten:

Code:

function[]=Optimierung_nichtlin_Regression
close all;
clear all;
clc;
%%%OPTIMIERUNG fminsearch%%%%%%%%%%%
S=[0.05,0.15,0.3,0.4,0.75,1.5,3,6,10,20,38.95,78,117,195,389];                                                    


mue_max=0.1471;
K_m=0.0295;
K_i=33.92;


parameter=[mue_max K_m K_i]


options=optimset('MaxIter', 10,'Display','iter');
% die unabhängige Variable x hast du vergessen
Parameter_optimiert=fminsearch(@(x)optimierung(x,S(1)),parameter,options)
 


Wenn du das für jeden S-Wert machen willst, dann benöitgst du eine for-Schleife oder ähnliches.

MfG
Johannes
Private Nachricht senden Benutzer-Profile anzeigen
 
schnuti1985
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 19.06.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.06.2010, 12:59     Titel:
  Antworten mit Zitat      
Hi Johannes vielen dank für die schnell Antwort. bei mir tritt eine Fehlermeldung wegen dem (x)@optimierung, wenn ich das so eingebe.liegt das viell. daran dass ich matlab 6.5 habe?

LG
Private Nachricht senden Benutzer-Profile anzeigen
 
mr_endres
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 78
Anmeldedatum: 11.06.08
Wohnort: Unterfranken
Version: ---
     Beitrag Verfasst am: 19.06.2010, 13:15     Titel:
  Antworten mit Zitat      
Ja, ich denke die Version 6.5 kennt noch keine "anonymous-functions".

Du kannst der Funktion "optimierung.m" dann keinen Parameter S beim Aufruf übergeben. Du müsstest dann eine globale Variable S definieren oder etwas eleganteres ...

MfG
Johannes
Private Nachricht senden Benutzer-Profile anzeigen
 
schnuti1985
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 19.06.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.06.2010, 13:21     Titel:
  Antworten mit Zitat      
oh wie schade.

und was bedeutet globales S? wo schreibe ich das dann hin? ist denn das File optimierung.m soweit in Ordnung? sorry das ich so dumme fragen stelle aber matlab is einfach nicht mein freund.

LG
Private Nachricht senden Benutzer-Profile anzeigen
 
mr_endres
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 78
Anmeldedatum: 11.06.08
Wohnort: Unterfranken
Version: ---
     Beitrag Verfasst am: 19.06.2010, 13:35     Titel:
  Antworten mit Zitat      
Hallo,

unschön aber fürs erste :

"Optimierung_nichtlin_Regression.m" :
Code:

close all;
clear all;
clc;
%%%OPTIMIERUNG fminsearch%%%%%%%%%%%
s=[0.05,0.15,0.3,0.4,0.75,1.5,3,6,10,20,38.95,78,117,195,389];                                                    


mue_max=0.1471;
K_m=0.0295;
K_i=33.92;


parameter=[mue_max K_m K_i];


options=optimset('MaxIter', 10,'Display','iter');

global S;

for i=1:length(s)
    S=s(i);
    Parameter_optimiert(i,1:3)=fminsearch(@optimierung,parameter,options);  
end
 



"optimierung.m" :
Code:

function F=optimierung(parameter)

global S;
mue_max=parameter(1);

K_m=parameter(2);

K_i=parameter(3);

F=1/K_m*(S./(mue_max./K_m + S+(S.^2/K_i)));
 


Dann einfach das m-file "Optimierung_nichtlin_Regression.m" ausführen lassen und in der Matrix "Parameter_optimiert" sollten die gesuchten Werte stehen.

Aber es geht sicherlich noch eleganter. Du solltest dich mit Matlab anfreunden Smile

MfG
Johannes
Private Nachricht senden Benutzer-Profile anzeigen
 
schnuti1985
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 19.06.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.06.2010, 14:05     Titel:
  Antworten mit Zitat      
ja das sollte ich wohl wirklich
vielen vielen dank für die hilfe.
Private Nachricht senden Benutzer-Profile anzeigen
 
schnuti1985
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 19.06.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.06.2010, 16:40     Titel:
  Antworten mit Zitat      
Halli hallo
ich hab schon wieder eine Frage. Ich glaube ich habe fminsearch einfach nicht richtig verstanden und wollte fragen ob mir jemand ein beispielprogramm schicken kann mit einem plot?
und toll wäre auch eins für fmincon denn eigentlich soll ich meine aufgabe mit fmincon lösen.
vielen lieben dank
Private Nachricht senden Benutzer-Profile anzeigen
 
mr_endres
Forum-Fortgeschrittener

Forum-Fortgeschrittener


Beiträge: 78
Anmeldedatum: 11.06.08
Wohnort: Unterfranken
Version: ---
     Beitrag Verfasst am: 19.06.2010, 16:50     Titel:
  Antworten mit Zitat      
Hallo,

schau dir doch einmal die Hilfeseiten zu "fmincon" und "fminsearch" an, dort sind auch Beispiele gegeben.

"fmincon" sucht wie fminsearch ein Minimum, bei dem die Lösung eine zusätzliche Nebenbedingung erfüllen muss. Das gefundene Minimum muss nicht mit dem globalen Minimum der Funktion identisch sein.

MfG
Johannes
Private Nachricht senden Benutzer-Profile anzeigen
 
schnuti1985
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 11
Anmeldedatum: 19.06.10
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.06.2010, 16:58     Titel:
  Antworten mit Zitat      
mein problem is, dass mit meinen neuen parameter die Kurve viel weiter von meinen ursprünglichen punkten abweicht.
eigentlich müsste doch fminsearch bewirken dass meine neuen parameter dann beim plotten genau durch meine ursprungspunkte führt oder nicht?
Und mit der matlabhilfe komm ich nicht klar.Die Syntax verwirrt mich noch mehr.
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.