|
|
|
ode45 und zeitabhängiger Term in Funktion |
|
| Weissbart |

Forum-Newbie
|
 |
Beiträge: 4
|
 |
|
 |
Anmeldedatum: 29.10.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 23.01.2012, 18:54
Titel: ode45 und zeitabhängiger Term in Funktion
|
 |
Hallo liebes Forum
Habe folgendes Problem bei dem ich einfach nicht weiter komme. Vielleicht kann mir jemand helfen.
Ich muss ein Diff Gleichungsystem lösen. Dazu verwende ich den ode45 Löser. Mein Code sieht wie folgt aus:
und
Nun ist mein Problem, dass die Kraft F in dx(2) nur bei bestimmten Zeitpunkten aktiv sein soll. Also z.B. bei 5 und 3 Sekunden und sonst immer 0. Dachte ich kann einen Art Schalter ts einbauen, den ich zwischen 1 und 0 hin und her schalte. Habs aber nicht zusammen bekommen.
Wie mach ich Matlab das klar?
Danke für jede Hilfe
mfg, Weissbart
|
|
|
|
|
|
| samsa10 |

Forum-Fortgeschrittener
|
 |
Beiträge: 50
|
 |
|
 |
Anmeldedatum: 10.12.08
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 23.01.2012, 19:55
Titel:
|
 |
Hallo!
Spalte die Summanden in dx(2) auf, also:
und Fneu ist nur an den gewünschten Stellen ungleich 0.
Grüße samsa
|
|
|
|
| Weissbart |
Themenstarter

Forum-Newbie
|
 |
Beiträge: 4
|
 |
|
 |
Anmeldedatum: 29.10.11
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 23.01.2012, 20:05
Titel:
|
 |
Hallo Samsa
Danke für deine Antwort. Leider weiss ich nicht wie man zum Beispiel so ein Fneu definiert, damit matlab damit im ode45 rechnen kann.
Danke!
mfg, Weissbart
|
|
|
|
| Harald |

Forum-Meister
|
 |
Beiträge: 24.502
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 23.01.2012, 20:47
Titel:
|
 |
Hallo,
z.B.
Grüße,
Harald
|
|
|
|
| Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 23.01.2012, 22:41
Titel: Re: ode45 und zeitabhängiger Term in Funktion
|
 |
| |
 |
|
Hallo Weissbart,
Es ist technisch möglich ODE45 eine unstetige Funktion integrieren zu lassen. Allerdings ist ein Runge-Kutta-Integrator mit Schrittweitensteuerung dafür nicht konzipiert. Es ist vergleichbar mit dem Einhämmern von Schrauben in die Wand - manchmal hält's.
Um einen Schritt zu berechnen wertet der Runge-Kutta-Algorithmus die Funktion zu verschiedenen Zeiten aus. Wenn ein Teil der Werte nun vor und ein paar nach dem Zeitsprung liegen, geht die Schrittweitensteuerung von einer extremen Änderung des Gradienten aus und verkleinert die Schrittweite so lange, bis entweder hmin erreicht ist (das ergibt dann zumindest eine Warnung), oder bis Rundungsfehler den Knick zufällig verschwinden lassen. In beiden Fällen wurden dann aber viele Millionen Schritte zu viel berechnet und die kummulierten lokalen Fehler führend zu einem sehr ungenauen Ergebnis.
Es gibt Integratoren, bei denen man per Event-Funktion direkt die Parameter ändern kann. Die fahren dann die Zeit exakt bis zum Schaltpunkt und starten den Integrator danach neu. Leider können die Matlab-Integratoren dies aber nicht. Stattdessen muss man entweder mit einer Event-Funktion den Integrator stoppen, oder wenn die Schalt-Zeitpunkte explizit vorliegen kann man einfach die Integration nur bis zu diesem Punkt laufen lassen. Dann werden die Parameter geändert und der Integrator neu gestartet.
Aus numerischer Sicht ist dringend zu empfehlen auf jede Unstetigkeit in der zu integrierenden Funktion zu verzichten: Die Funktionen IF, MAX, MIN, ABS (es sei denn das Argument hat Steigung 0 beim Nullpunkt, z.B. SIN^2), und RAND dürfen niemals Einfluss auf die Trajetorie haben, unstetige Funktionen wie Tangens bedürfen eines expliziten Tests.
Gruß, Jan
|
|
|
|
| Thomas84 |

Forum-Meister
|
 |
Beiträge: 546
|
 |
|
 |
Anmeldedatum: 10.02.10
|
 |
|
 |
Wohnort: ---
|
 |
|
 |
Version: ---
|
 |
|
|
 |
|
Verfasst am: 24.01.2012, 07:23
Titel:
|
 |
Hallo,
| Zitat: |
| Aus numerischer Sicht ist dringend zu empfehlen auf jede Unstetigkeit in der zu integrierenden Funktion zu verzichten: Die Funktionen IF, MAX, MIN, ABS (es sei denn das Argument hat Steigung 0 beim Nullpunkt, z.B. SIN^2), und RAND dürfen niemals Einfluss auf die Trajetorie haben, unstetige Funktionen wie Tangens bedürfen eines expliziten Tests. |
Ich denke es wird aus Bequemlichkeit trotzdem oft so gemacht.
Die obige DGL benötigt 200 Integrationsschritte (siehe Anhang) bei Standardeinstellungen. Bei größeren F werden allerdings wirklich die meisten Integrationsschritte an den Unstetigkeitsstellen verbraten.
viele Grüße
Thomas
| Beschreibung: |
|
 Download |
| Dateiname: |
int_ode45.png |
| Dateigröße: |
9.91 KB |
| Heruntergeladen: |
872 mal |
|
|
|
|
| Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 24.01.2012, 12:18
Titel:
|
 |
| |
 |
|
Hallo Thomas84,
| Zitat: |
| Ich denke es wird aus Bequemlichkeit trotzdem oft so gemacht. |
Ja, das stimmt. Aber da dies ein Forum für eine Software ist, die für ernsthafte wissenschaftliche Arbeit genutzt wird, halte ich es für wichtig, den Ratschlag zu verbreiten.
Ein Integrator funktioniert nur dann zuverlässig, wenn man ihn innerhalb der Spezifikationen betreibt. Ich habe schon eine Menge wissenschaftlicher Publikationen gesehen, bei denen große (>1000 Komponenten), steife, unstetige Funktionen durch ODE45 durchgenudelt werden und keine Analyse der Sensitivitäten durchgeführt wird, also eine Bestimmung der Abhänigkeit der Endwerte von einer Variation der Anfangswerte.
Es gibt immer wieder Wissenschaftler, die eine "Trajektorie" als Lösung angeben, nachdem sie ein unstetiges chaotisches System durch einen Integrator gejagt haben. Um dem vorzubeugen, sollte man gleich seinen Professor beeindrucken und auf die Simulation unstetiger Systeme auch in trivialen Übungsaufgaben verzichten.
Würdet ihr einer gehuddelten Berechnungsmethode trauen, wenn damit die Euro-Werte auf euren Giro-Konten bestimmt werden? Nein? Wieso sollte man dann für wissenschaftliche Projekte kleinere Ansprüche stellen?
Gruß, Jan
|
|
|
|
| Harald |

Forum-Meister
|
 |
Beiträge: 24.502
|
 |
|
 |
Anmeldedatum: 26.03.09
|
 |
|
 |
Wohnort: Nähe München
|
 |
|
 |
Version: ab 2017b
|
 |
|
|
 |
|
Verfasst am: 24.01.2012, 12:44
Titel:
|
 |
Hallo Jan,
es gibt weitaus Schlimmeres Ich weiß von einer Dissertation, in der ein sehr interessantes Phänomen beschrieben wurde. Leider hat sich im Nachhinein herausgestellt, dass das Phänomen dadurch entstand, dass zur Simulation expliziter Euler mit konstanter Schrittweite verwendet wurde.
Verglichen damit sind Vergehen wie das Integrieren über Unstetigkeiten (die es im realen System so meist ohnehin nicht gibt) doch verzeihlich.
Grüße,
Harald
|
|
|
|
| Jan S |

Moderator
|
 |
Beiträge: 11.057
|
 |
|
 |
Anmeldedatum: 08.07.10
|
 |
|
 |
Wohnort: Heidelberg
|
 |
|
 |
Version: 2009a, 2016b
|
 |
|
|
 |
|
Verfasst am: 24.01.2012, 23:37
Titel:
|
 |
| |
 |
|
Hallo Harald,
Ein expliziter Euler mit konstanter SChrittweite wäre zumindest von der Unstetigkeitsstelle nicht ganz so hart getroffen...
Ich kenne eine Dissertation, bei der ein sehr scharfer Peak genau bei der gesuchten Frequenz gefunden wurde, wobei zunächst alle Frequenzen darüber und danach alle Frequenzen darunter weggefiltert wurden. Aber dies wurde wenigstens noch vor der Endfassung entdeckt und gelöscht.
Liebe Doktoranden!
Natürlich wird in diesem Forum viel über FOR-Schleifen und den SAVE-Befehl gesprochen. Man kann hier aber auch genügend Knowhow finden, um über weit anspruchsvollere Probleme zu diskutieren, die bei der Anwendung von Matlab auftreten. Numerische Verfahren verfügen immer über gewisse Tücken und die Verwendung ausserhalb der Spezifikationen ist ein grober handwerklicher Fehler. Die Gefahren werden aber nicht explizit in der Dokumentation beschrieben, weil eine Dokumentation kein Lehrbuch ist. Die immense Fülle der Matlab-Bibliotheken verleitet dazu, mal eben die verfügbaren Tools zu verwenden. Bei ernsthafter wissenschaftlicher Arbeit muss man sich aber unbedingt mit den Werkzeugen auskennen, oder jemand fragen, der über die notwendige Ausbildung verfügt.
Viele Grüße, Jan
|
|
|
|
|
|
|
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.
|
|