簡體   English   中英

Matlab ODE求解器的多個輸出

[英]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);

其中tyode23tb的輸出。 這要求將RHSODEf進行向量化(或者可以將以上內容包裝在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM