声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

12
返回列表 发新帖
楼主: sindy209

[数学理论] ode求解的m函数定义问题

[复制链接]
发表于 2008-4-15 12:14 | 显示全部楼层

回复 14楼 的帖子

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

评分

1

查看全部评分

回复 支持 反对
分享到:

使用道具 举报

 楼主| 发表于 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 all
lubang=inline('[u+x^2*sin(2*x)+2*v*sin(x)+0.5*x*sint;0.5*q;-z+x^4+0.625;g+5*x+(6*u^2)/(1+2*x^2)+(1-cosu)*v+0.5*x*cost;-v+x^2+0.5]','t','x,y,z,u,v');
options=odeset('RelTol',1e-4,'AbsTol',1e-4);
[t1,x,y,z,u,v]=ode45(lubang,[0 2],[1,1,1,1,1,1],options);
figure(1)
plot(t1,x(:,1),'k:')[local]1[/local]

子程序1.doc

27 KB, 下载次数: 5

 楼主| 发表于 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:(是这样调用子程序12中的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 all
lubang=inline('[u+x^2*sin(2*x)+2*v*sin(x)+0.5*x*sint;0.5*q;-z+x^4+0.625;g+5*x+(6*u^2)/(1+2*x^2)+(1-cosu)*v+0.5*x*cost;-v+x^2+0.5]','t','x,y,z,u,v');
options=odeset('RelTol',1e-4,'AbsTol',1e-4);
[t1,x,y,z,u,v]=ode45(lubang,[0 2],[1,1,1,1,1,1],options);
figure(1)
plot(t1,x(:,1),'k:')

这个应该是有结果的,我是根据一篇论文来做的。

谢谢!

子程序1.doc

27 KB, 下载次数: 3

发表于 2008-4-16 21:27 | 显示全部楼层
首先,你的x=zeros(5,5) 是定义了5阶方阵,而你用的时候把x当成数组来用。 还有,dy 是一个 441*3 的矩阵,你q的定义中dy(1)是什么东西?
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-5-9 19:01 , Processed in 0.065470 second(s), 23 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表