我正在尝试在具有多个输入的 MATLAB 中评估一个 duffing 振荡器,但我遇到了一个奇怪的错误,我希望有人能够帮助我。
这是代码:
% file duffing.m
function dy=duffing(t,y,a,b,d,g,w)
dy=[y(2); -a*y(1)^3-b*y(1)-d*y(2)+g*cos(w*t)];
end
以及调用 duffing 函数的文件:
t=0:0.01:100;
%duffing oscillator
y0=[2,0];
a=1;
b=-1;
d=0.2;
w=1;
g=0.1;
% duffing oscillator
[t,y]=ode45('duffing',t,y0,a,b,d,g,w);
当我运行它时,我收到以下错误:
使用 odearguments 时出错(第 92 行) DUFFING 返回长度为 1 的向量,但初始条件向量的长度为 2。DUFFING 返回的向量和初始条件向量必须具有相同数量的元素。
但是当我将函数 duffing 定义为
function dy=duffing(t,y)
a=1;
b=-1;
d=0.2;
w=1;
dy=[y(2); -a*y(1)^3-b*y(1)-d*y(2)+g*cos(w*t)];
end
并传入
[t y]=ode45('duffing',t,y0);
与y0
上面相同,它运行良好,我可以绘制它。
我究竟做错了什么?