满城飞絮 发表于 2008-11-15 18:37

用matlab求解常微分时的Warning

function hh
%options=odeset()
=ode23t(@fun,0:0.01:5,0.5)
plot(t,y)
function dy=fun(t,y)
dy=(y^2+5)*(t+6);

结果:
Warning: Failure at t=9.940611e-002. Unable to meet integration tolerances without reducing the step size below the smallest value allowed (3.531614e-016) at time t.
> In ode23t at 726
In try28 at 3

t =

0
0.0100
0.0200
0.0300
0.0400
0.0500
0.0600
0.0700
0.0800
0.0900


y =

0.5000
0.8275
1.1902
1.6108
2.1237
2.7926
3.7382
5.2505
8.2098
17.2406
请问要怎样才能避免Warning的出现?
多谢!

wxl789 发表于 2008-11-15 19:48

回复 楼主 满城飞絮 的帖子

帮你顶一下
同问。 。。 。 。 。

ch_j1985 发表于 2008-11-15 23:30

回复 楼主 满城飞絮 的帖子

变步长试试

满城飞絮 发表于 2008-11-15 23:40

变了几次试过还是这样哈,我都觉得是步长的问题,但不知道要用什么样的步长才不会出现Warning!

ch_j1985 发表于 2008-11-16 09:45

试试=ode23t(@fun,,0.5)
doc ode23t

wxl789 发表于 2008-11-16 11:09

回复 5楼 ch_j1985 的帖子

用了ode23t
修改了步长和总时间,
还是出现Warning: Failure at t=2.813557e-001.Unable to meet integration tolerances without reducing the step size below the smallest value allowed (9.995763e-016) at time t.

继续请教。。。。

ch_j1985 发表于 2008-11-16 11:57

回复 6楼 wxl789 的帖子

能否把常微分方程贴出来?

满城飞絮 发表于 2008-11-16 14:33

dy/dx=(y^2+5)*(x+6).
x范围是0到5,y0=0.5

wxl789 发表于 2008-11-17 09:48

回复 7楼 ch_j1985 的帖子

我那个方程是自己编写程序构造的,蛮复杂。

这个警告提示和具体的方程有关吗?
页: [1]
查看完整版本: 用matlab求解常微分时的Warning