Ode23没有完成执行
问题描述:
我是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来终止它。我在这里做错了什么?
答
你是下溢的受害者。会发生什么是没有无限数量的浮点数(请参阅Is floating point math broken?),所以结果不完全精确。当数字足够小时,计算机可能会将该号码视为0
。 matlab用于ode23
的过程基于有限差分,其涉及划分。考虑到下溢错误,或者会出现0
问题的划分,或者可能溢出一个令人难以置信的小除数,将结果趋向无穷大并且不能满足解决方案的条件。
你正在使用的是什么? –
@EliSadoff在我的函数中它是0.0000047 * 0.000001 – imulsion
试着用'n = 0.2'来看看它是否解决了。你有可能陷入下流。 –