Verfasst am: 20.05.2010, 13:27
Titel: Abbruch von ode45 bei bestimmtem Ereignis
Hallo Leute,
wir wollen mit der Funktion ode45 die Umlaufzeit des Merkur um die Sonne berechnen und die Keplerellipse zeichnen. Wie kann man ode45 dazu bringen, die Rechnung abzubrechen wenn der Impuls 0 wird (Bedingung für einen Umlauf, also Abstand minimal) und die Zeit auszugeben.
function yprime = merkur(t,y,m,mu,alpha,beta) % Funktion mit rechter Seite der DGL Merkur-Sonne-BG
yprime = [y(2)./m ;(y(4)^2/(m*y(1).^3))-(mu*m./y(1).^2)-... (3*alpha*beta*y(4)^2./(m*y(1)^4)) ;(y(4)./(m*y(1).^2))-... (2*alpha*beta*y(4)./(m*y(1).^3)) ;0];
function[value,isterminal,direction] = Ereignis(t,y) % Locate the time when height passes through zero in a % decreasing direction and stop integration.
value = y(2); % Detect height = 0
isterminal = 1; % Stop the integration
direction = 1; % Negative direction only end
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
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.