24小时热门版块排行榜    

CyRhmU.jpeg
查看: 2310  |  回复: 1

cml3635

铁虫 (初入文坛)

[求助] 关于利用ode45函数求解微分方程组

我想利用ode45函数求解某二阶微分方程组。编程如下:
!!!M函数:
function dx=sl(t,x)
xx=[1,2,3,,4,5,6,7,8,9];
yy=[0,-1,2,5,-1,4,7,10,-3];
dx=[x(2)
    2*x(4)+x(1)+xx(t/0.02)
    x(4)
    -2*x(2)+x(3)+3*yy(t/0.02)];


!!!Matlab主程序
x0=[0;0;0;0];
options=odeset('reltol',1e-8);
n=9;
A=cell(1,n);
for i=1:9
tic
[t,A{1,i}]=ode45(@sl,[0,i*0.01,i*0.02],x0,options);
toc
end


通过运行发现报错:
??? Attempted to access xx(0); index must be a positive integer or logical.

Error in ==> sl at 4
dx=[x(2)

Error in ==> funfun\private\odearguments at 110
f0 = feval(ode,t0,y0,args{:});   % ODE15I sets args{1} to yp0.

Error in ==> ode45 at 173
[neq, tspan, ntspan, next, t0, tfinal, tdir, y0, f0, odeArgs, odeFcn, ...


通过分析发现,其说明对xx矩阵要调用xx(0),这个不符合逻辑,因而出错。我本意是想通过t/0.02而调用xx中的xx(t/0.02)元素。难道ode45函数不支持这样吗?我要怎么解决。欢迎大家探讨,谢谢大家指点!!
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

每天的生活心情跟上坟一样样的。
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

cml3635

铁虫 (初入文坛)

自己顶哈!!
每天的生活心情跟上坟一样样的。
2楼2014-12-10 21:06:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 cml3635 的主题更新
信息提示
请填处理意见