簡體   English   中英

使用 Octave/Matlab 求解帶有嵌入式非微分方程的微分方程組(見圖)

[英]Solve system of differential equation with embedded non diferential equations, using Octave/Matlab (see picture)

我有以下方程組(點擊查看圖片) ,並想求解 X(t)、Y(t)、Z(t),希望使用我熟悉的 Octave/Matlab,但我會不介意通過任何其他必要的方式解決它。

現在,Fsolve 可用於正則方程系統,而 Ode45、Lsode 可用於微分方程。 但是,這個特定的系統呢? 請注意,底部的微分方程不僅包含 Y,而且還包含 X 和 Z,它們依賴於上面的兩個非微分方程。

老實說,我不太確定如何接近解決這個系統的基本代碼,經過一段時間的思考,我決定尋求幫助。 如果有可能的話,我真的很感謝任何能稍微有效地解決這個問題的指導。 現在,幾乎任何回復都會對我有用。

如果你知道y ,你可以解出x ,這甚至可以無條件地作為x中單調的第二個方程

x = fsolve(@(x) y^2-1413.7*x-1095.2*cos(x)+2169, 0)

然后一旦你知道x ,你就可以使用已知的反余弦求解z

z = acos(0.20978-cos(x))

如果cos(x)接近-1這實際上可能無法給出結果。 可以人為地消除該錯誤,引入可能錯誤的解決方案

z = acos(min(1,0.20978-cos(x)))

為簡單起見,將這些操作組合在一個輔助函數中

function [x,z] = solve_xz(y)
    x = fsolve(@(x) y^2-1413.7*x-1095.2*cos(x)+2169, 0);
    z = acos(min(1,0.20978-cos(x)));
end

現在使用它來獲取y的 ODE

function dy = ode_y(t,y)
    [x,z] = solve_xz(y(1));
    dy = [ y(2); y(3); 6666.6667*(z-x)-333.3333*y(1)-33.3333*y(2)-5*y(3) ];
end

並應用您選擇的 ODE 求解器。 系統很可能是剛性的,因此ode45可能不是最好的求解器。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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