Problem with input of ode113
5 次查看(过去 30 天)
显示 更早的评论
I'm trying to run a very simple ODE. However when running it Matlab shows me the error: 'Index in position 1 exceeds array bounds (must not exceed 1)' for I_2 in the QIF function.
My code is posted below:
I_1= pi^2;
I_2= -2*pi^2;
params.tau= 10;
g= 0;
V_1= -65;
V_2= -65;
state= [V_1;V_2];
I= [I_1;I_2];
options = odeset('abstol',1e-8,'reltol',1e-8);
[t,state] = ode113(@QIF,[1 3000],state,I,params)
With QIF :
function [statep]= QIF(t,state,I,params);
I_1= I(1);
I_2=I(2);
v= (state(1)+state(2))/length(state);
V_1d= ((state(1)^2)+ I_1)/params.tau;
V_2d= ((state(2)^2)+ I_2)/params.tau;
statep= [V_1d,V_2d]
Does anyone see what I don't see?
0 个评论
采纳的回答
Stephan
2019-12-2
I_1= pi^2;
I_2= -2*pi^2;
params.tau= 10;
g= 0;
V_1= -65;
V_2= -65;
state= [V_1;V_2];
I= [I_1;I_2];
options = odeset('abstol',1e-8,'reltol',1e-8);
[t,state] = ode113(@(t,state)QIF(t,state,I,params),[1 10.8],state,options);
plot(t,state)
function statep= QIF(~,state,I,params)
I_1= I(1);
I_2=I(2);
V_1d= ((state(1)^2)+ I_1)/params.tau;
V_2d= ((state(2)^2)+ I_2)/params.tau;
statep = [V_1d;V_2d];
end
For t>10.84627 your function gives a warning due to the extreme rise of the resulting values. Maybe you should check if your implementation is correct.
3 个评论
Stephan
2019-12-2
Sounds like you might want to use ode events to tackle this. In the given link there is an example of a jumping ball - i suspect this is the kind of thing you want to do.
更多回答(0 个)
另请参阅
类别
在 Help Center 和 File Exchange 中查找有关 Ordinary Differential Equations 的更多信息
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!