[英]Multiple outputs of Matlab ODE solver
我有以下Matlab ODE代碼:
[t,y,~,~,ie] = ode23tb(@(t,y) RHSODE(t,y),[0,t_end], [i0;v0],options);
我希望ODE求解器也可以給我結果z,它是y和dy / dt的函數,因此z = f(y,dy / dt)。
有誰知道如何將這樣的z加到求解器的輸出中?
有兩種方法可以做到這一點。 最常見且通常最快的方法是利用集成功能(在您的情況下為RHSODE
)並在執行集成后評估功能f
。 您的代碼中並未提供許多詳細信息,但可能看起來像這樣:
ydot = RHSODE(t,y);
z = f(y,ydot);
其中t
和y
是ode23tb
的輸出。 這要求將RHSODE
和f
進行向量化(或者可以將以上內容包裝在for
循環中)。
另一種方法要求您在積分函數RHSODE
內創建一個附加方程式(如果z
是矢量,則創建方程式)。 通常, ode23tb
在此函數中集成了任何內容,因此必須將f
乘以t
才能取消此功能。 同樣,您的代碼可能看起來像這樣:
function ydot = RHSODE(t,y)
ydot0 = ... % Your original ODE(s)
z = f(y,ydot);
ydot = [ydot0;z*t]; % Make column vector
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.