我正在尝试使用ode45来解决一首颂歌,它正在显示。
function ydot=vdpol(t,y)
t=0;
y=0;
mu=2;
ydot=[y(2);mu*(1-y(1)^2)*y(2)-y(1)];
tspan=[0 20]; y0=[2;0];
[t,y]=ode45(vdpol,tspan,y0);
size(t)
size(y)
plot(t,y(:,1),t,y(:,2),'--');
xlabel('time');
title('van der pol solution')
答案 0 :(得分:0)
你的问题在这里:
ydot=[y(2);mu*(1-y(1)^2)*y(2)-y(1)];
您刚尝试引用y
的第二个元素,但它不是数组:
whos y
Name Size Bytes Class Attributes
y 1x1 8 double
下一步:你不再使用ydot
,所以我想你不需要它!
下一步:使用vdpol
而不使用此函数或变量的任何定义。
这是一个正确的解决方案(这不是我的代码。来自here):
tspan = [0, 20];
y0 = [2; 0];
Mu = 1;
ode = @(t,y) vanderpoldemo(t,y,Mu);
[t,y] = ode45(ode, tspan, y0);
% Plot of the solution
plot(t,y(:,1))
xlabel('t')
ylabel('solution y')
title('van der Pol Equation, \mu = 1')