Labfans是一个针对大学生、工程师和科研工作者的技术社区。 论坛首页 | 联系我们(Contact Us)
MATLAB爱好者论坛-LabFans.com
返回   MATLAB爱好者论坛-LabFans.com > 工程数学软件 > MATLAB论坛
MATLAB论坛 一切MATLAB相关问题在此讨论。
回复
 
主题工具 显示模式
旧 2011-04-09, 11:43   #1
gilbertlam
初级会员
 
注册日期: 2011-04-09
年龄: 38
帖子: 1
声望力: 0
gilbertlam 正向着好的方向发展
默认 求助关于常微分方程组的一个问题,请各位大侠帮忙

最近,小弟在用matlab仿真中遇到一个解常微分方程组的问题,我先把方程组给列出来

dAdz=[ b1*Az(4)+(C1*Az(5)+C2*Az(6))
b2*Az(5)+C3*Az(4)
b3*Az(6)+C4*Az(4)
-b1*Az(1)-(C1*Az(2)+C2*Az(3))
-b2*Az(2)-C3*Az(1)
-b3*Az(3)-C4*Az(1) ];



现在的问题是系数b(包括b1,b2,b3)是10的6次方这样一个数量级,而系数C(包括C1,C2,C3,C4)是10的-1次方这样一个数量级。我尝试了用ode45(解决非刚性问题的函数包)和ode15s(解决刚性问题的函数包)来求解该常微分方程组,设置'RelTol'为1e-5,求解范围及步进为0:0.1:1.1,初始条件为[1 0 0 0 0 0],但出现这些问题,求解时间大概需要2个多钟头,而且最后出来的结果是错误的(因为在该方程中最后求解结果在任意z值下abs(Az(1))^2+abs(Az(2))^2+abs(Az(3))^2+abs(Az(4))^2+abs(Az(5))^2+abs(Az(6))^2=1)。



后来我尝试了下,认为地把系数b改成10的3次方这样一个数量级,系数C不变,结果用ode45求解,其他设置一样,求解时间只要1分钟多一些,而且结果是符合平方总和为1,即结果是正确的。



我的问题是:是否有一种方法是可以用来处理这类系数之间数量级相差较大(比如系数b和C之间差6、7个数量级)的常微分方程组,请各位大侠指点指点,小弟在此先谢过了!
gilbertlam 当前离线   回复时引用此帖
回复


发帖规则
不可以发表新主题
不可以发表回复
不可以上传附件
不可以编辑自己的帖子

启用 BB 代码
论坛启用 表情符号
论坛启用 [IMG] 代码
论坛禁用 HTML 代码



所有时间均为北京时间。现在的时间是 12:58


Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.