Nun habe ich aber das nächste Problem - ich habe all diese Gleichungen, aber hier erhalte trotzdem noch den Fehler 81.
Die erste Gleichung (g3) wird noch gelöst, ich erhalte zwei Lösungen. Wenn ich aber nun versuche, die ersten Lösung einzusezten und dann also die g2-Gleichungen lösen will, dann erhalte ich "empty sym". Das passiert auch, wenn ich die Gleichungen symbolisch löse, ohne den Wert von a einzusetzen und auch, wenn ich versuche, die Gleichungen einzeln 0 zu setzen.
Möglicherweise haben die g1- bzw. g2-Gleichungen gar keine Lösungen, aber das kann ich mir nur schwer vorstellen...
Vielen Dank für Eure Hilfe!
Code:
%Grundlagen legen
syms c_0 c_1 c_2 gamma S a y K D E H
c_1 = .057;
c_2 = .124;
c_0 = .01;
gamma = .5;
K = 10.000;
y = 200;
die Gleichungen sind ziemlich komplex. Da verwundert es mich nicht, wenn es keine explizite Lösung gibt. Und selbst wenn es eine gibt, wird der Lösungsausdruck sehr länglich sein. Ich würde es daher mit einer numerischen Lösung versuchen, über fsolve. Dazu musst du allerdings für die anderen Parameter Werte einsetzen.
Hallo Harald,
was meinst du mit "für die anderen Parameter Werte einsetzen"? Jeweils das a und das S bestimmen?
Bis auf a und S (meine zu bestimmenden Werte) sind ja schon alle definiert.
Ich habe inzwischen auch versucht, das ganze anders zu lösen, nämlich mit fminsearch der ursprünglichen Gleichung. Dazu habe ich folgendes definiert:
wie es zu dem Fehler kommt, kann ich mir auch nicht erklären.
Ist die Funktion unter dem Namen neg_Wohlstand.m im momentanen Verzeichnis oder auf dem Suchpfad gespeichert?
Das syms ist unnötig, wenn du die Werte nachher überschreibst, und irritiert dann nur.
Du musst deine Funktion so umschreiben, dass sie einen Vektor mit zwei Komponenten als Eingabeargument annimmt. Daraus musst du dann a und S extrahieren. Man sollte versuchen, möglichst gute Startwerte anzugeben.
Das .m-file ist in der Standard MATLAB-Datei gespeichert und er hat auch keine Probleme, aus aufzurufen.
Ich habe jetzt mehrere Dinge ausprobiert, erhalte aber immer noch den Fehler bzw. teilweise einen anderen:
1) Ich den Input zur Vereinfachung auf a reduiziert und S also einen Wert zugewiesen. Außerdem habe ich, wie empfohlen, auf die Zuweisung syms verzichtet. Dann funktioniert fminsearch(@neg_Wohlstand,0) in dem Sinne, dass es einen Wert ausgibt - allerdings für unterschiedlich hohe S sehr unterschiedliche Ergebnisse, was mich stutzig macht.
2) Ich habe S als Vektor definiert, mit 200 Zeilen, um zu überprüfen, ob die Werte, die ich in 1) erhalten habe, doch stimmen könnten. Dabei tritt auf:
??? The following error occurred converting from sym to double:
Code:
Error using ==> mupadmex
Error in MuPAD command: DOUBLE cannot convert the input expression into a double array.
If the input expression contains a symbolic variable, use the VPA function instead.
1) Du kannst mal eine andere Routine wie fminunc versuchen. Dann würde ich auch exitflag zurückholen. Zudem kannst du ja mal den Funktionsverlauf plotten, um dir ein Bild davon zu machen.
2)
Zitat:
Dabei tritt auf:
Bei was genau? Bitte Code posten, nicht beschreiben. Das syms a ist jedenfalls nicht sinnvoll, wenn du andererseits a als Eingabeargument hast.
ja, aber was genau machst du denn, um diesen Fehler zu bekommen?
Grüße,
Harald
Einstellungen und Berechtigungen
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.