[英]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.