|
muenzi |

Forum-Anfänger
|
 |
Beiträge: 26
|
 |
|
 |
Anmeldedatum: 12.11.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 10.05.2010, 20:51
Titel: For-Schleife und Fsolve
|
 |
|
 |
|
Hallo liebe Gemeinde, ich mal wieder...
Für ein Experiment muss ich eine Diagramm erstellen, dessen Punkte weder als Messwerte, noch als algebraische Gleichung berechenbar sind. Der einzige Weg ist eine iterative Lösung. Allerdings komme ich da nicht so recht vorwärts.
Ich habe folgende Gleichungen
f(T)=x1*p1(T)+(1-x1)*p2(T)-pbar=0
und p1(T)=10^(A1+B1/(C1+T)), p2(T)=10^(A2+B2/(C2+T)), mit bekannten Konstanten A1 bis C2.
Für beliebige T zwischen 0 und 100 möchte ich nun x1 berechnen. Alternativ ist auch die Berechnung von p1(T) und p2(T) und daraus T für beliebige x1 zwischen 0 und 1 denkbar (wird aber wohl schwerer denke ich).
Nun dachte ich mir, fsolve löst ja immer nur die statische Gleichung. x1 muss jedoch variiert werden und so kam ich auf die Idee mit der Schleife. Leider spukt die Schleife nur 1 Ergebnis aus und meldet dann folgenden Fehler:
Optimization terminated: first-order optimality is less than options.TolFun.
Woran liegt das? Habe sicher einen Fehler in der Schleife drin (ist schon etwas her, dass ich damit gearbeitet habe) oder ich verstehe fsolve nicht richtig.
Hier der Code
Wär top wenn jmd. helfen könnte.
Gruß Münzi
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 10.05.2010, 22:18
Titel:
|
 |
Hallo,
die x1-Werte werden ja auch in jeder Iteration überschrieben und nicht ergänzt. Das Inkrementieren von Tschleife ist unnötig bzw. unsinnig. Und die von dir genannte Fehlermeldung ist schließlich keine Fehler- sondern eine Meldung über den (erfolgreichen) Abschluss der Optimierung.
Zudem: ist die Gleichung nicht so einfach, dass man sie von Hand lösen könnte (in Abh. von den Konstanten).
Grüße,
Harald
|
|
|
muenzi |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 26
|
 |
|
 |
Anmeldedatum: 12.11.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 10.05.2010, 22:37
Titel:
|
 |
Ah okay, das macht natürlich Sinn. Ich danke dir für die Hilfe
|
|
|
muenzi |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 26
|
 |
|
 |
Anmeldedatum: 12.11.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 11.05.2010, 14:48
Titel:
|
 |
Ich muss das Thema leider nochmal aufwärmen weil ich kein extra Topic aufmachen will.
Ich muss mit Fsolve folgendes Gleichungssystem lösen:
y1*pu-gamma1(x1)*p1(T)*x1=0
(1-y1)*pu - gamma2(x1)*p2(T)*x1=0
mit x1 von 0 bis 1
gamma1(x1)=lange formel mit vielen konstanten und eben x1
gamma2(x1)=ähnlich wie gamma1(x1)
p1(T)=10^(A1+B1/(T+C1))
p2(T)=10^(A2+B2/(T+C2))
A, B, C sind Konstanten
Iterativ gelöst werden soll T(x1) und T(y1) im Bereich von x1. Also für beispielsweise x1=0,1 , 0,2, 0,3 usw..
Anschließend soll T über x aufgetragen werden.
Hab leider überhaupt keine Ahnung wie das in Fsolve geht. Wär daher über jegliche Hilfe dankbar, auch wenn es vielleicht nur ein Denkanstoß ist.
Gruß Münzi
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.501
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 11.05.2010, 16:38
Titel:
|
 |
Hallo,
das geht im Grunde genausoso wie vorher. gamma1 und gamma2 werden in Funktionen der Form
berechnet.
Diese Funktionen werden dann in dem Function Handle einfach verwendet [in der Zeile x1schleife(I)=...].
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
|
|
Impressum
| Nutzungsbedingungen
| Datenschutz
| FAQ
| RSS
Hosted by:
Copyright © 2007 - 2025
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.
|
|