yizhibusy 发表于 2015-9-22 16:06

ode45计算一直无法得到结果

matlab运行下面的程序为什么一致处于busy状态而无法得到需要的结果?
x0=;T=10;
P=300000:1000:500000;
hold on
for j=1:length(P)
for w=10:1:170
=ode45('ququjili',,x0,[],P(j),w);
end
end
griddata(P,w,x(50,1),linspace(300000,500000),linspace(10,170),'v4');
surf(P,w,x(50,1))function y=ququjili(t,x,flag,P,w)
y=;

happy 发表于 2015-9-23 09:10

有可能是方程刚性导致的,可以判断一下是否是刚性方程
ode45是适用于求解非刚性方程,刚性方程一般用ode15s或者ode23s

关于刚性方程的问题可以参考《刚性常微分方程初值问题的数值解法》这本书
http://forum.vibunion.com/thread-137670-1-1.html
我已经将这本书上传至上述帖子了

yizhibusy 发表于 2015-9-25 13:22

谢谢,我试试看

xiaoshihanlan 发表于 2017-8-29 15:59

yizhibusy 发表于 2015-9-25 13:22
谢谢,我试试看

请问,最后使用哪个求解器解决的?我现在计算使用ode45,也是没有反应呢

suffer 发表于 2017-9-14 10:22

xiaoshihanlan 发表于 2017-8-29 15:59
请问,最后使用哪个求解器解决的?我现在计算使用ode45,也是没有反应呢

根据你的实际情况选择合适的求解器吧




以上图片来自MATLAB 技术论坛

xiaoshihanlan 发表于 2017-9-15 09:19

suffer 发表于 2017-9-14 10:22
根据你的实际情况选择合适的求解器吧




非常感谢!我的方程采用ode45解不动,改用23s可以进行

linlin820 发表于 2017-9-15 09:21

xiaoshihanlan 发表于 2017-9-15 09:19
非常感谢!我的方程采用ode45解不动,改用23s可以进行

这说明你的方程是刚性的

xiaoshihanlan 发表于 2017-9-15 09:24

linlin820 发表于 2017-9-15 09:21
这说明你的方程是刚性的

嗯,应该是,之前没有判定一下方程的刚性,请教一下方程的刚性判定方式?我的方程很庞大

linlin820 发表于 2017-9-15 09:34

xiaoshihanlan 发表于 2017-9-15 09:24
嗯,应该是,之前没有判定一下方程的刚性,请教一下方程的刚性判定方式?我的方程很庞大

看下面的定义

xiaoshihanlan 发表于 2017-9-15 09:37

linlin820 发表于 2017-9-15 09:34
看下面的定义

非常感谢,我学习下
页: [1]
查看完整版本: ode45计算一直无法得到结果