这可能只是一个非常小的错误但我在调用函数时遇到错误:
error: 'D' undefined near line 7 column 25
我的功能是:
function dxdt = s(t,u,D,D0,ni,ax,ay,bn,bx,ex,ey,epsilon)
D = D0*(1+epsilon*sin(2*pi*t));
n = u(1);
x = u(2);
y = u(3);
dxdt = [D*ni - D*n - (ax*(n/(bn+n))*x); ...
-D*x+ex*ax*(n/(bn+n))*x-ay*(x/(bx+x))*y; ...
-D*y+ey*ay*(x/(bx+x))*y];
end
我把所有东西放在这里,但我认为只有D = ...
部分很重要。在我的脚本中,我以这种方式调用函数:
[T,U] = ode45(@(t,u) s(t,u,D,D0,ni,ax,ay,bn,bx,ex,ey,epsilon),interval,u0);
答案 0 :(得分:0)
在致电ode45
时,您正在创建此anonymous function:
@(t,u) s(t,u,D,D0,ni,ax,ay,bn,bx,ex,ey,epsilon)
此函数将接受在调用时应传递给它的两个参数t
和u
。在创建匿名函数之前,需要定义所有其他变量,例如D
。您的错误表明它们不是。
s
的这些附加参数也将be fixed at the value they had when the anonymous function was created,因此即使您在创建匿名函数后更改D
,该函数仍会使用之前的D
值在调用函数s
时。
查看有关变量范围的一些文档可能也会有所帮助: