Verfasst am: 27.05.2011, 11:47
Titel: Vektoren mit variablen Einträgen definieren
Hi!
Ich möchte eine Funktion in Abhängigkeit von 4 Variablen maximieren. Die Funktion kommt von der mehrdimensionalen Normalverteilung, es stehen also Vektoren und Matrizen in der Funktion.
Meine Frage ist, wie ich Vektoren (bzw. Matrizen) definieren kann, die Variablen als Einträge haben. Bzgl. dieser Variablen möchte ich dann später maximieren. Also z.B. mit 'fminsearch' oder ähnlichen Befehlen.
Wie definiere ich also z.B. die Matrix
diag(a,2,5,b)
wobei a und b keine festen Werte zugewiesen sind...
Es ist also die Frage:
- Möchtest du, dass du z.B. das b bekommst, was den Ausdruck in Abhängigkeit von a maximiert (also b = f(a) )? Dann musst du Methoden aus der Symbolic Math Toolbox verwenden
- Möchtest du, dass fminsearch oder was auch immer a und b variiert und dir optimale Kombinationen zurückgibt? Dann musst du mit einem Vektor der zu optimierenden Parameter arbeiten (siehe Beispiele in der Doku zu fminsearch) und die zusätzlichen Parameter anderweitig zur Verfügung stellen.
Danke. Bin vorhin auch auf die Symbolic Math Toolbox gestoßen. Leider ist das Uninetz etwas überlastet und der Download geht etwas langsam. Hatte die Toolbox damals nicht mitinstalliert
Werde es jetzt damit versuchen. Letztlich will ich einen Ausdruck maximieren, der von 4 Variablen abhängt. Also die zweite Variante, die du vorgeschlagen hast.
Ich melde mich, falls währenddessen weitere Fragen auftauchen... Es sollte ja kein Problem sein, bei 'fminsearch' dann genau diese Symbole a,b als Variablen zu benutzen!
ich sollte noch klarstellen: bei der Verwendung von fminsearch und ähnlichen ist es eben nicht nötig, die Variablen symbolisch zu definieren. Siehe auch die Beispiele in der Dokumentation.
Wichtig ist, dass die festen und die veränderlichen Parameter getrennt werden müssen. fminsearch und ähnliche gehen davon aus, dass alle Parameter veränderlich sind; etwaige feste Parameter müssen also separat zur Verfügung gestellt werden.
Wie kann ich das korrekt schreiben, damit das Gleiche passiert wie oben?
Ich muss das über solche Variablen machen, da die Variablen in meiner eigentlichen Funktion sehr kompliziert auftauchen. Ich hänge mal ein Beispiel an, in dem man die Funktion sehen kann. Ich möchte den Ausdruck in der letzten Zeile maximieren. Der hängt nur von (l,w,a,b) ab. Irgendwelche Ideen?
Code:
function garch(y,in)% 'y' und 'in' sind Vektoren mit 250 Einträgen
Danke. Mit x und dann den Variablen x(1),x(2),... hab ich das natürlich in der Hilfe auch gesehen. Aber mein Problem ist ja, dass die 4 Variablen (l,w,a,b) noch nicht mal direkt in der Funktion auftauchen, sondern in den Vektoren stehen.
Ich muss also so wie von dir angegeben eine 'function' definieren, wobei x der Vektor (l,w,a,b) ist, oder?
Habe es dann mittlerweile auch geschafft Hab wohl zu analytisch gedacht mit der Symbolic Math Toolbox...
Edit: Habe ein neues Problem. Die Funktion findet ein Minimum, auch wenn das abhängig ist vom Startvektor, aber das macht nichts.
Ich lasse diese Minimierung jetzt 100mal laufen jeweils mit anderem Input. Dann kommt die Fehlermeldung, dass die 'MaxFunEval' und 'MaxIter' zu gering sind. Das wundert mich etwas, denn bei jeder einzelnen Ausführung von fminsearch findet er Ergbnisse. Hier mal mein Code, der die 100 Ausführungen machen soll...
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
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.