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

Integrieren abbrechen wenn

 

jasmin_89
Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 08.04.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 11.11.2020, 10:23     Titel: Integrieren abbrechen wenn
  Antworten mit Zitat      
Hi,

ich möchte gerne diese function so haben dass mir diese bei dem Ersten Tiefpunkt die Berechnung stoppt. ( Habe eine Schwingungsfunktion die von oben nach unten kommt, und dort sollte Sie dann stoppen)

Code:
optionen = odeset('Events', @deep);


Variable:
Code:
[t, u] = ode45(@bet, [0 10], [0 L], optionen)


Code:

function [val, term, dir] x= deep (L)

[t, u]=ode45(@bet, [0 80], [0 0 L]);
x = max(u(:,1));
term = 1;
dir = -1;





Nur bekomme ich da einen Fehler. Wie bekomme ich es hin dass mir die function die Berechnug beim Tiefpunkt abbricht?
Private Nachricht senden Benutzer-Profile anzeigen


Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 11.11.2020, 18:31     Titel:
  Antworten mit Zitat      
Hallo,

da geht etwas ein bisschen durcheinander.
Die Event Funktion muss die Form
Code:
[value,isterminal,direction] = myEventsFcn(t,y)
haben.
ode45 füttert die Event Funktion mit Inputs. Es ist also insbesondere nicht sinnvoll, innerhalb der Event Funktion nochmal die DGL zu lösen.
Wenn du die Änderung einer Größe wissen willst, müsstest du dir über persistent den vorherigen Wert merken. Einfacher ist es aber, die Änderung beim Lösen der DGL "mitzuziehen" über eine zusätzliche DGL:
u' = y

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
jasmin_89
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 08.04.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.11.2020, 09:16     Titel:
  Antworten mit Zitat      
Ah ok, ich habe dies nun so in Matlab geschrieben und es scheint zu funktionieren:

Code:

function [val, term, dir] = deep (t, u)
val = u(2);
term = 1;
dir = -1;
x = max(u(:,1))


Kann ich hier aber auch noch Variable Parameter einfügen?
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 13.11.2020, 09:53     Titel:
  Antworten mit Zitat      
Hallo,

siehe das Beispiel "Pass Extra Parameters to ODE Function" aus der Doku von ode45. Das geht entsprechend auch für Event Funktionen.

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
Private Nachricht senden Benutzer-Profile anzeigen
 
jasmin_89
Themenstarter

Forum-Anfänger

Forum-Anfänger


Beiträge: 39
Anmeldedatum: 08.04.20
Wohnort: ---
Version: ---
     Beitrag Verfasst am: 13.11.2020, 20:51     Titel:
  Antworten mit Zitat      
Ok, Danke für die Info. Aber ich komme mit der Hilfe der Dokumentation nicht recht weiter. Ich habe echt lange rumprobiert aber irgendwie ist das nicht so leicht.

Wie kann ich z.b in dieser Funktion noch einen zusätzlichen Variablen Parameter L und k einfügen?

Code:
[t, u]=ode45(@bet, [0 80], [0 0]


Kann ich dies nicht einfach so machen?

Code:

[t, u]=ode45(@bet, [0 80], [0 0 L k]);
 


Bzw. muss ich dies so machen?
Code:
[t,y] = ode45(@(t,y) odefcn(t,y,A,B), tspan, y0);


Und was bedeutet da tspan und y0? Ich werde aus der Dokumentation nicht schlau deswegen frage ich hier nochmals
Private Nachricht senden Benutzer-Profile anzeigen
 
Harald
Forum-Meister

Forum-Meister


Beiträge: 24.448
Anmeldedatum: 26.03.09
Wohnort: Nähe München
Version: ab 2017b
     Beitrag Verfasst am: 13.11.2020, 22:21     Titel:
  Antworten mit Zitat      
Hallo,

Zitat:
Bzw. muss ich dies so machen?

Wenn A und B die Parameter sein sollen: ja.

Zitat:
Und was bedeutet da tspan und y0?

Aus der Dokumentation:
Zitat:
[t,y] = ode45(odefun,tspan,y0), where tspan = [t0 tf], integrates the system of differential equations from t0 to tf with initial conditions y0.

Was ist daran denn nicht verständlich?

Grüße,
Harald
_________________

1.) Ask MATLAB Documentation
2.) Search gomatlab.de, google.de or MATLAB Answers
3.) Ask Technical Support of MathWorks
4.) Go mad, your problem is unsolvable ;)
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 - 2024 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.