繁体   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