2017-10-04 14 views
1

ode45を使用して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') 
+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') 
関連する問題