|
|
Numerisches Lösen von Gleichungen |
|
Geronymo |

Forum-Anfänger
|
 |
Beiträge: 13
|
 |
|
 |
Anmeldedatum: 22.10.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 14.01.2016, 15:07
Titel: Numerisches Lösen von Gleichungen
|
 |
|
 |
|
Servus,
Ich bin mal wieder auf ein Problem gestoßen, dass ich nicht selber bei Matlab/Simulink lösen kann, da dass meine Kompetenz übersteigt...
____________________________________________________________________
Problem:
Ich habe eine Gleichung
deltT_m,ln = dT_m,ln (Logarithmische Mittleretemperaturdifferenz)
deltaT_max = dT_max (max. Temperaturdifferenz (°C))
deltaT_min = dT_min (min. Temperaturdifferenz (°C))
ln = nat. Logarithmus oder auch log (hier egal)
-> Gleichung: dT_m,ln = ( dT_max - dT_min ) / ( ln( dT_max / dT_min) )
dT_max = T_w,E - T_k,A
dT_max = T_w,A - T_k,E
_______________________________________________________________
-> Einsetzen und dann nach T_w,A umstellen...
... jeder der das Versucht wird auf Probleme stoßen und merken es geht nicht richtig.
Also muss es wohl numerisch gelöst werden.[Vllt. hat jemand ne andere Idee?!] Ich habe nicht die Muse es per Hand für einen Bereich von 4000 Zahlenwerten oder mehr zu tun.
dT_m,ln , dT_max , T_w,A ist keine Konstante, wird aber von Simulink berechnet und ist abgreifbar
Wie kann man das programmieren, dass Simulink oder Matlab mir das macht
____________________________________________________________________
Mein kläglich gescheiterter Ansatz war
Umstellen nach 0= (((dTmax - x) / ( ln( dTmax / x ))) -dT_m,ln)
dann Newtonverfahren mal drüberrutschen lassen...
..ich vertehe selber nicht was ich da gemacht habe . Hab mir nur was dazu ausm Netz gesaugt und versucht umzuschreiben!
Bitte helft mir
|
|
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 14.01.2016, 15:22
Titel:
|
 |
Hallo,
grundsätzlich würde ich fsolve vorschlagen. Eine Möglichkeit könnten auch Lambert-Funktionen sein.
Wenn das über einen MATLAB Function - Block aufgerufen und Code generiert werden soll, bleibt aber nur fminsearch.
Grüße,
Harald
|
|
|
Geronymo |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 13
|
 |
|
 |
Anmeldedatum: 22.10.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 14.01.2016, 16:35
Titel:
|
 |
kannst du mir das mal beispielshalber mal aufschreiben, ich blicke da nicht durch!
Danke
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 14.01.2016, 16:43
Titel:
|
 |
Hallo,
zunächst mal müsstest du sagen, welchen Weg du einschlagen willst: Muss aus deinem Simulink-Modell Code generiert werden können?
Dann würde ich dich bitten, dir die Dokumentation der Funktion, die du verwenden willst, durchzulesen und konkrete Fragen dazu zu stellen.
Grüße,
Harald
|
|
|
Geronymo |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 13
|
 |
|
 |
Anmeldedatum: 22.10.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 15.01.2016, 13:04
Titel:
|
 |
|
 |
|
Servus,
Ich verstehe nicht so ganz was Du meinst?!
Ich brauche nur diesen Wert, der sich 'dynamisch' wie der Rest der Gleichung ändert.
D.h. ich bekomme immer neue Temperaturen und neue L.M.T.D's (Eine Rechnung mit diesen Zahlen, nächste Rechnung mit neuen Zhlen) und muss daraus eben die Temperaur am wärmeseitigen Ausgang des W.T's bestimmen.
Mir persönlich ist es egal ob Matlab oder Simulink das mit Blöcken lösen kann, wird!
Aber ich weiß nicht, wie ich das mit 'fsolve' oder 'fminsearch' auflösen kann.
Ich verstehe meistens leider auch nicht so ganz was in der Dokumentation steht, da ich nicht aus dem IT-Bereich komme und da viel Fachgesimpelt wird.
Wäre cool wenn einer mal ein beispiel geben könnte.(mit Erklärung bitte!)
0= (((dTmax - x) / ( ln( dTmax / x ))) -dT_m,ln)
vllt. mal für ein Zahlenbeispiel(mit egal was für Werten) auflösen per matlab oder so, dass da steht x = bsp. 3,069
Diese Zahl wird dann einfach weiter verwendet in Simulink für weiitere einfachere Rechnungen.
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 15.01.2016, 14:13
Titel:
|
 |
Hallo,
Zitat: |
Ich verstehe meistens leider auch nicht so ganz was in der Dokumentation steht, da ich nicht aus dem IT-Bereich komme und da viel Fachgesimpelt wird. |
Die Dokumentation ist sehr ausführlich, aber man muss sich ja nicht alle Optionen im Detail ansehen. Das Beispiel in der Dokumentation von fsolve sollte sich recht leicht auf andere Probleme übertragen lassen.
Mir ist deine Problemstellung nicht klar. Was soll denn dies heißen?
0= (((dTmax - x) / ( ln( dTmax / x ))) -dT_m,ln)
Soll ",ln" heißen, dass du danach lösen möchtest? Nach dem Logarithmus zu lösen ist mathematisch nicht sinnvoll. Man kann höchstens beispielsweise bei gegebenem x und dT_m nach dTmax lösen. Wenn es das ist, was du möchtest, wäre es hilfreich, typische Werte nicht nur für x, sondern auch dT_m anzugeben.
Grüße,
Harald
|
|
|
Geronymo |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 13
|
 |
|
 |
Anmeldedatum: 22.10.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 18.01.2016, 12:02
Titel:
|
 |
Servus,
Ich habe es im ersten Text versucht zu erklären, aber wurde leider nicht verstanden.
Ich habe es mal oldschool mit Stift und Papier gemacht und werde es al png reinstellen.
Wie diese Variablen nun heißen spielt erstmal keine Rolle, ob T_w,E oder sonstwas
schaut euch das Blatt an und vllt versteht man es jetzt dann besser!
alles gegeben außer T_w,A!!!!
Auflösen dieser Gleichung in Matlab oder Simulink!!!
Beschreibung: |
|
 Download |
Dateiname: |
20160118_105101.jpg |
Dateigröße: |
2.31 MB |
Heruntergeladen: |
340 mal |
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 18.01.2016, 13:48
Titel:
|
 |
Hallo,
gut, jetzt weiß ich immerhin, was du machen möchtest. Wenn du eine eigene Syntax erfindest, ist das halt nicht unbedingt hilfreich.
Schön wäre nun noch ein Wert für T_m.
Grüße,
Harald
|
|
|
Geronymo |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 13
|
 |
|
 |
Anmeldedatum: 22.10.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 18.01.2016, 14:23
Titel:
|
 |
jetzt sind ma zam^^
Ja das sind ja immer andere Werte, also einmal 4 einmal 3,224 oder dergleichen.
genauso werden die anderen Werte immer neu ausgegeben
also x ist gesucht und soll über newtonverfahren gesucht/ermittelt werden
nochmal aufs Blatt schaun bitte!!!
x wollte ich nur zum Verständnis einführen
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 18.01.2016, 14:35
Titel:
|
 |
Hallo,
in dem Beispiel wurde eine Gleichung nach dTmax gelöst.
Wenn du jetzt eine andere Gleichung hast oder nach was anderem auflösen willst, dann passe das doch bitte selbst entsprechend an.
Grüße,
Harald
|
|
|
Geronymo |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 13
|
 |
|
 |
Anmeldedatum: 22.10.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 18.01.2016, 14:57
Titel:
|
 |
|
 |
|
ah super danke!!!
ich hab noch ein paar Fragen:
@(dTmax) ist dann einfach der Wert nach dem es aufgelöst wird,
d.h. kann ich nun auch (dTmin)[als Beispiel] reinschreiben?
fsolve(f, 3) -- wofür steht die 3 nach dem komma ?
gerade einmal probiert.... geht nicht
hier einmal die Fehlermeldung
Warning: Input port 7 of 'Simulation/Subsystem1' is not connected.
> In T_aussen (line 85)
Warning: Output port 1 of 'Simulation/Subsystem1' is not connected.
> In T_aussen (line 85)
Warning: Output port 1 of 'Simulation/Subsystem1/L.M.T.D. Rechner' is not connected.
> In T_aussen (line 85)
Warning: Ignoring extra legend entries.
> In legend>set_children_and_strings (line 629)
In legend>make_legend (line 321)
In legend (line 247)
In T_aussen (line 93)
Warning: Ignoring extra legend entries.
> In legend>set_children_and_strings (line 629)
In legend>make_legend (line 321)
In legend (line 247)
In T_aussen (line 103)
Undefined function 'log' for input arguments of type 'timeseries'.
Error in T_aussen>@(dTmin)(dTmax-dTmin)/(log(dTmax/dTmin))-dT_ln
Error in fsolve (line 218)
fuser = feval(funfcn{3},x,varargin{:});
Error in T_aussen (line 108)
fsolve(f, 3);
Caused by:
Failure in initial user-supplied objective function evaluation. FSOLVE cannot continue.
>>
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 19.01.2016, 00:37
Titel:
|
 |
Hallo,
Zitat: |
@(dTmax) ist dann einfach der Wert nach dem es aufgelöst wird,
d.h. kann ich nun auch (dTmin)[als Beispiel] reinschreiben? |
Ja. Die anderen Variablen müssen dann vorab definiert worden sein.
Zitat: |
fsolve(f, 3) -- wofür steht die 3 nach dem komma ? |
Aus der Dokumentation
Zitat: |
x = fsolve(fun,x0) starts at x0 and tries to solve the equations fun(x) = 0 |
Du solltest die Ergebnisse schon immer einer Variable zuweisen, also z.B.
Aus irgendeinem Grund ist bei dir eine der Variablen eine timeseries statt ein Double. Warum das so ist, kann ich aus den bisherigen Informationen nicht ersehen.
Grüße,
Harald
|
|
|
Geronymo |
Themenstarter

Forum-Anfänger
|
 |
Beiträge: 13
|
 |
|
 |
Anmeldedatum: 22.10.15
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 25.01.2016, 11:18
Titel:
|
 |
ja icch habe mal ne timeserie eingeführt da ich sonst meine werte nicht mit der Zeit koppeln konnte, vllt. unvermögen, aber so hat es dann funktioniert!
Kann ich das mit timeserie ausrechnen lassen?
oder kann ich die nur dafür umwandeln lassen und dann wieder in eine timeserie tansformieren?
|
|
|
Harald |

Forum-Meister
|
 |
Beiträge: 24.499
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 25.01.2016, 12:21
Titel:
|
 |
Hallo,
zum einen sollte das ohne Timeseries möglich sein, zum anderen können Timeseries sicher auch umgewandelt werden.
Ohne das vor mir zu haben, ist das für mich allerdings schwierig.
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.
|
|