2016-11-15 104 views
0

我是Matlab新手,我试图求解常微分方程y'= - y/n。我在脚本中定义函数是这样的:Ode23没有完成执行

function dv = lc(v1) 
dv = -v1/(0.0000047*0.000001); 

然后尝试解决这个问题是这样的:

[t,v] = ode23('lc',[0 5],1) 

但操作无法完成执行。它只是吃掉我的RAM,并在角落里说“Busy”,直到我按ctrl + c来终止它。我在这里做错了什么?

+0

你正在使用的是什么? –

+0

@EliSadoff在我的函数中它是0.0000047 * 0.000001 – imulsion

+0

试着用'n = 0.2'来看看它是否解决了。你有可能陷入下流。 –

回答

1

你是下溢的受害者。会发生什么是没有无限数量的浮点数(请参阅Is floating point math broken?),所以结果不完全精确。当数字足够小时,计算机可能会将该号码视为0。 matlab用于ode23的过程基于有限差分,其涉及划分。考虑到下溢错误,或者会出现0问题的划分,或者可能溢出一个令人难以置信的小除数,将结果趋向无穷大并且不能满足解决方案的条件。