Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2012/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Matlab系统微分方程,递归定义_Matlab_Ode - Fatal编程技术网

Matlab系统微分方程,递归定义

Matlab系统微分方程,递归定义,matlab,ode,Matlab,Ode,我正在寻找一种紧凑而有效的方法来解决以下问题。 我有一个微分方程系统,比如说3,我想把它推广到分子动力学类型的计算中 目前这是起点 function dy = molec(t,y) dy = zeros(3,1); A = 1; B = 1; dy(1) = (A/B)* (2 * (y(2)-y(1)) - 0.5) ; dy(2) = (A/B)* ( 2* ( y(1) - y(2) ) + 4* (y(3)-y(2)) ) ; dy(3) = (A/B)* (

我正在寻找一种紧凑而有效的方法来解决以下问题。 我有一个微分方程系统,比如说3,我想把它推广到分子动力学类型的计算中

目前这是起点

function dy = molec(t,y)
dy = zeros(3,1);
A = 1;
B = 1;
dy(1) = (A/B)*   (2 * (y(2)-y(1)) - 0.5) ;
dy(2) = (A/B)*  (  2* ( y(1) - y(2) )  + 4* (y(3)-y(2))    )     ;
dy(3) = (A/B)*  ( 6 * (- y(3)) + 4 * (  y(2) - y(3) )    );
我希望有100-150个变量。我可以通过键入dy(n)定义来添加更多的dy(n)定义,但这几乎不实用。相反,我想利用问题的递归定义。 事实上,给定一个已知的序列a_n,定义了第n项

dy(n) = (A/B)* a_n*(y_{n-1} - y{n}) + a_{n-1}*y_{n+1} - y_{n})

非常感谢您的帮助,这是一个迭代定义,里面没有递归

使用类似

diff = y(2:N)-y(1:N-1)
dy(1:N-1)=a(1:N-1) .* diff
dy(2:N) = dy(2:N) - a(2:N) .* diff
dy(1) = dy(1) + ...
dy(N) = dy(N) + ...
dy = dy * (A/B)

或者直接实现公式的
循环。

LutzL,非常感谢您的帮助。我确实尝试使用一个循环来实现我的公式,但我遇到了一些问题,我倾向于得出结论,dy不能通过循环来定义。