使用ode45时索引超出矩阵尺寸

时间:2017-10-04 04:24:44

标签: matlab ode

我正在尝试使用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')

1 个答案:

答案 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')