WICHTIG: Der Betrieb von goMatlab.de wird privat finanziert fortgesetzt. - Mehr Infos...

Mein MATLAB Forum - goMatlab.de

Mein MATLAB Forum

 
Gast > Registrieren       Autologin?   

Partner:




Forum
      Option
[Erweitert]
  • Diese Seite per Mail weiterempfehlen
     


Gehe zu:  
Neues Thema eröffnen Neue Antwort erstellen

Anfangswert nach best Zeit ändern

 

Gast312

Gast


Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 19.01.2012, 23:58     Titel: Anfangswert nach best Zeit ändern
  Antworten mit Zitat      
Hey,
ich bin ein absoluter Neuling bei MatLab und habe vermutlich eine ganz doofe Frage Wink Allerdings finde ich darauf einfach keine Antwort.
Und zwar lernen wir gerade wie man die ODE Solver einsetzt, also schreiben wir eine Hauptfkt und eine Nebenfkt.

In der Hauptfkt gebe ich die Parameter ein und Anfangsbedingungen, sowie das Zeitintervall (t=[0,10])

Die Nebenfkt berechnet mir dann die DGL und in der Hauptfkt steht dann [t z]= ode45(@Nebenfkt, t, h, options,p)

Das klappt auch alles super und ich kann eine Grafik zeichnen, z.B. die Population von Fischen und Haien in einem See oder einen Schwingkreis.

Dann gibt es eine Zusatzaufgabe, dass bei t=4 eine Ölpest ist bzw eine Spannung zugeschaltet wird und sich dadurch ein Wert, der in der DGL (Nebenfkt) ist, ändert.

Ich denke, dass man das relativ einfach über eine if-Schleife darstellen kann. Habe mir das so vorgestellt:

if t==4
k=0.2
else
k=0.5
end

Aber das klappt nicht. Ich denke, dass das daran liegt, dass das t gar nicht in den DGL vorkommt, sondern nur das k??

Wir hatten so etwas schon mal, dass wenn eine bestimmte Höhe (y-Wert) erreicht wird, sich ein Anfangswert ändert. Aber die Zeit ist ja der x-Wert
und irgendwie funktioniert das nicht.

Weiß jemand wie das muss??

Vielen lieben Dank!!


Jan S
Moderator

Moderator


Beiträge: 11.057
Anmeldedatum: 08.07.10
Wohnort: Heidelberg
Version: 2009a, 2016b
     Beitrag Verfasst am: 21.01.2012, 17:50     Titel: Re: Anfangswert nach best Zeit ändern
  Antworten mit Zitat      
Hallo,

Es gibt keine "if-Schleifen".
Es ist nicht ersichtlich, was t und k in Deiner Nebenfunktion sind.
Falls t die Zeit ist, ist es unwahrscheinlich, dass t genau den Punkt 4.00000000 erreicht, da die Schrittweiten in ODE45 ja dynamisch geändert werden.
Eventuell meinst Du "if t > 4" statt "if t==4".
Das hätte aber einen deutlichen Nachteil:
ODE-Solver sind nur für stetig differnzierbare Funktionen definiert. Da für einen Schritt mehrere Zwischenwerte berechnet werden, könnte eine Hälfte der Werte vor t=4 liegen, die andere Hälft dahinter. Das bringt den Schrittweiten-Algorithmus aus der Fassung. Zwar berechnet ODE45 dann irgendetwas - wahrscheinlich wird die Schrittweite so weit herunter gefahren, dass diese Unstetigkeit in den Rundungsfehlern untergeht. Für die Genauigkeit der Lösung und die Rechenzeit ist das aber dramatisch!

Wenn Du bei t=4 einen Parameter ändern möchtest, ist es sinnvoll den Integrator zunächst bis t=4 laufen zu lassen und danach die End-Werte als Startwerte für die nächste Integration mit geändertem Parameter zu nehmen.

Leider können die event-Funktionen keinen direkten Einfluß auf die Parameter ausüben. Das wäre eine schöne Erweiterung der Integeratoren von Matlab, zur Zeit geht es aber nicht.

Gruß, Jan
Private Nachricht senden Benutzer-Profile anzeigen
 
Neues Thema eröffnen Neue Antwort erstellen



Einstellungen und Berechtigungen
Beiträge der letzten Zeit anzeigen:

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 | goMatlab RSS Button 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.