2013-12-17 53 views
0

我正在使用ode45,並希望通過事件函數停止集成時,解決方案達到零。我需要的是事件函數返回我一個「標誌」。這意味着每當事件發送停止標誌到ode45停止,這個停止標誌(不管它是什麼)也會發送給我。MATLAB事件函數傳遞給我一個標誌,當它發送一個到ode45在同一時間

感謝

+0

你的問題不是很清楚。如果事件函數檢測到零並停止集成,則「ode45」停止並返回其輸出。你還需要什麼?這個標誌是什麼,你期望它到底在哪裏?您可以查看我的一些相關問題的答案,其中提供了有關如何使用(以及如何不使用)事件檢測的示例:[\ [1 \]](http://stackoverflow.com/a/15992197/2278029) ,[\ [2 \]](http://stackoverflow.com/a/16681767/2278029),[\ [3 \]](http://stackoverflow.com/a/20429657/2278029)和[\ [4 \]](http://stackoverflow.com/a/17370733/2278029)。 – horchler

+0

謝謝。該標誌是在這個聲明中的IE [T,Y,TE,YE,IE] =求解器(odefun,tspan,y0,options) 我需要它來進行一些關於我感興趣問題的數值計算的穩定性研究。 –

回答

1

ode45 documentation

[T,Y,TE,YE,IE] = solver(odefun,tspan,y0,options)解決如上述而 也發現其中的(t,y)功能,稱爲事件功能,是 爲零。對於每個事件函數,可以指定積分是否爲 以終止爲零以及過零點 的方向是否重要。通過將'Events'屬性設置爲函數(例如, events@events)並創建函數 [value,isterminal,direction] = events(t,y)來完成此操作。對於第i個事件功能 在events

  • value(i)是該函數的值。
  • isterminal(i) = 1,如果積分要終止在此事件>函數的零處,否則爲0。
  • direction(i) = 0direction(i) = 0如果要計算所有零(默認值),如果只有事件函數增加的零點,則爲+1,如果只有事件函數減少的零點,則爲-1。在TEYE,和IE回報,分別

相應的條目,在該一個 事件發生時,在該事件發生時的溶液中,並將索引消失事件功能的i 的時間。

事件功能是通過options參數設置,與odeset功能

+0

謝謝。它看起來像我在找什麼。 –

相關問題