簡體   English   中英

Matlab ode45如何工作

[英]Matlab How Does ode45 Work

我問了一個關於matlabFunction如何工作的問題( 這里 ),這引發了一個與ode45函數相關的問題。 使用我在matlab函數中發布的示例,當我通過ode45傳遞此函數時,有一些初始條件,ode45讀取導數-s。*(xy)作為近似未知函數x; 同樣說的是-y + r。* xx。* z和y,以及-b。* z + x。* y和z? 更具體地說,我們有

matlabFunction([s*(y-x);-x*z+r*x-y; x*y-b*z],
            'vars',{t,[x;y;z],[s;r;b]},'file','Example2');

然后我們使用

[tout,yout]=ode45(@(t,Y,p)  Example2(t,Y,[10;5;8/3]),[0,50],[1;0;0]);

近似求解未知函數x,y和z。 ode45如何知道將函數定義為變量[x; y; z]並近似它們? 我有一種感覺,我的問題很模糊,但我想知道這些事情之間的聯系。

你的命令的語義是x'(t)= s *(y(t)-x(t)),y'(t)= - x(t)* z(t)+ r * x(t) -y(t)和z'(t)= x(t)* y(t)-b * z(t),其中給出了s,r和b的常數。 MATLAB將遵循您給出的命令並計算該系統的數值近似值。 我不完全確定你的問題是什么意思,

ode45如何知道這些功能,[...]並近似它們?

這正是你告訴它要做的事情,而且這是ode45唯一ode45事情。 (當你調用ode45 ,名字x,y,z完全不相關,順便說一下。該函數只關心值的向量。)如果你問的是近似於ODE的解決方案背后的算法給出了這個方式,您可以使用谷歌或任何其他搜索引擎輕松找到有關該主題的任意數量的書籍和講座。

順便說一句,您可能對函數odeToVectorfield感興趣,這簡化了從更傳統形式編寫的微分方程中獲取這些函數的過程。

暫無
暫無

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

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