die Frage des Codeerstellers an einen Fremden, was denn der Code ausgeben würde lässt mich leicht schmunzeln
Die Antwort: Nichts!
Du rasterst deine Funktion zwar richtig ab, merkst dir aber die
Ausgaben nicht. Dementsprechend kannst du sie nicht vergleichen.
Daher auch kein Minimum herausfinden.
Und zweihundertmilliarden Rechnungen würden Jahre dauern.
Aber der Grundgedanke war schon richtig. Es gibt aber effektivere Methoden
wie fmincon. Allein das es zwei Toolboxen für Optimierung gibt zeigt aber
schon dass die Antwort sehr umfangreich ausfallen könnte.
Für deinen speziellen Fall gehts auch ohne Toolboxen:
Wie gesagt, ich bin nen Anfänger: Meines Erachtens nach sollte es ja x_min und y_min ausgeben, aber ich war mir nicht sicher was ich da zusammenprogrammiert habe.
Bis du dir sicher, dass das das Minimum ist?
Ich habe durch ausprobieren für x = 10 16 7 6 7 einen geringeren Wert rausbekommen nämlich y = 59,6...
Außerdem passt deine Lösung nicht, denn sie verstößt gegen die Nebenbedingungen:
die beste Hilfe ist die Dokumentation. Dort findest du ausführliche Informationen, beispielsweise zu fminsearch und fmincon.
Dass die Lösung gegen die Nebenbedingungen verstößt sollte nicht verwundern, da sie nirgends berücksichtigt wurden.
Die Funktionen aus der Optimization Toolbox liefern lokale Minima, d.h. sie sind auf einen ausreichend guten Startwert angewiesen, um zum globalen Minimum zu konvergieren.
Für globale Minimierung sind die Methoden aus der Global Optimization Toolbox besser geeignet, wie ga oder patternsearch. Natürlich kann man auch mal über verschiedene Startwerte iterieren.
das verwundert mich, denn bei mir läuft dein Code durch. Ich finde lediglich die Positionierung der Funktion g merkwürdig, aber das ist Geschmackssache.
Zudem sollte die äußere Funktion auch die Ergebnisse zurückgeben.
Nicht benötigte Argumente kannst du mit [] überspringen.
Also ich habe Matlab nur an der Uni, zuhause versuche ichs mit Scilab, aber es will nicht funktionieren. Vielleicht deswegen die Fehlermeldung. Ich werde den Code am nächsten Dienstag an der Uni testen.
Harald hat Folgendes geschrieben:
1) Zudem sollte die äußere Funktion auch die Ergebnisse zurückgeben.
2) Nicht benötigte Argumente kannst du mit [] überspringen.
1) Was meinst du genau damit? Ich habs verändert, meinst du es so? (Ich habe den Startwert x_0 in den Input getan)
2) Ich dachte in eckige Klammern schreibt man Vektoren und Matrizen. Welche Argumente werden nicht benötigt?
Wenn funktioniert was gibt es dir denn aus? Ich meine, welche Lösung?
Kannst du mir auch damit helfen?:
_Andi_ hat Folgendes geschrieben:
Wenn ich die Grenzen in lb und ub angeben soll, was trage ich für A,b,Aeq,beq ein? (ich weiß wofür sie stehen, aber ich sie nicht gegeben).
zu 1)
Genau, vor allem die Ausgabeargumente zurückgeben, sonst siehst du sie ja nicht.
zu 2)
Die nicht benötigten Argumente sind A, b, Aeq und beq.
[] ist auch ein leeres Array, und es ist eine Art Konvention, dass man die zuvor genannten Parameter auf [] setzt, wenn keine Nebenbedingungen dieser Art vorhanden sind.
der Lückentext ist schwierig zu interpretieren.
Ich würde aber vermuten, dass es lediglich eine Warnung ist, dass MATLAB aufgrund der Problemklasse einen anderen Algorithmus verwendet als den standardmäßig eingestellten.
Für genaueres müsstest du zumindest die vollständige Meldung hier reinkopieren.
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.