无水1324 发表于 2008-4-15 12:14

回复 14楼 的帖子

六楼的可以计算出来,说明程序已经没有问题,至于提示的错误是求解已经发散了,是你系统参数的问题了,这个我们不知道怎么帮你找到正确的参数(数太多了)

sindy209 发表于 2008-4-16 16:23

子程序1:
function da=lx1(t,dy)
a=-1.5x-x*y(x^4+2z+1);
dy(1)=-1.5-y(5*x^4+2*z+1);
dy(2)=-x^5-2*x*z-1;
dy(3)=-2x*z;
子程序2:(其中怎么调用子程序1中的 ?)
function q=lx2(t,dy)
q=(y+1.5x+u)(1+dy(1)^2)*(2y+1);
主程序:(怎么把子程序中的q,g调用进来呢?)
clear alllubang=inline('','t','x,y,z,u,v');options=odeset('RelTol',1e-4,'AbsTol',1e-4);=ode45(lubang,,,options);figure(1)plot(t1,x(:,1),'k:')1

sindy209 发表于 2008-4-16 16:36

子程序1:
function dy=lx1(t,y,dy)a=-1.5*x-x*y(x^4+2z+1);dy(1)=-1.5-y(5*x^4+2*z+1);dy(2)=-x^5-2*x*z-x;dy(3)=-2x*z;子程序2:(是这样调用子程序a,dy(1)?)
function q=lx2(t,a,dy)q=x^6+x^2*2*z+x^2-0.001y+(u-a)^2((1+dy(1)^2)*(2z+1)+(x^2+u^2)^2+(dy(1)*x^2)^2);子程序3:(是这样调用子程序1,2中的a,q?)function g=lx3(t,a,q,dy)g=-2(u-a)+dy(1)*u+0.5*dy(2)*q+dy(3)*z-y*(u-a)*((1+dy(1)^2)(2z+1)+((x^2+u^2)^2+(dy(1)*x^2)^2);

主程序:(怎么把子程序中的q,g调用进来呢?)
clear alllubang=inline('','t','x,y,z,u,v');options=odeset('RelTol',1e-4,'AbsTol',1e-4);=ode45(lubang,,,options);figure(1)plot(t1,x(:,1),'k:')
这个应该是有结果的,我是根据一篇论文来做的。

谢谢!

huqingwan 发表于 2008-4-16 21:27

首先,你的x=zeros(5,5) 是定义了5阶方阵,而你用的时候把x当成数组来用。 还有,dy 是一个 441*3 的矩阵,你q的定义中dy(1)是什么东西?
页: 1 [2]
查看完整版本: ode求解的m函数定义问题