欧拉方法求解微分方程C语言,用欧拉方法求解微分方程组

将来,如果您在问题中包含完整的警告消息,这将很有帮助—它将包含发生问题的行:tmp/untitled.py:15: RuntimeWarning: overflow encountered in double_scalars

return (g-((densaire*g)/densparticula)-((mu*18.0*v)/(cc*densparticula* (D**2.00))))

当变量的大小超过可以表示的最大值时,Overflow出现。在本例中,double_scalars表示64位浮点,其最大值为:

^{pr2}$

所以表达式中有一个标量值:(g-((densaire*g)/densparticula)-((mu*18.0*v)/(cc*densparticula* (D**2.00))))

超过了~1.79e308。要找出哪一个,可以使用^{}在发生这种情况时引发FloatingPointError,然后捕捉它并启动Python debugger:...

with errstate(over='raise'):

try:

ret = (g-((densaire*g)/densparticula)-((mu*18.0*v)/(cc*densparticula* (D**2.00))))

except FloatingPointError:

import pdb

pdb.set_trace()

return ret

...

然后可以从调试器中检查此表达式各个部分的值。溢出似乎发生在:(mu*18.0*v)/(cc*densparticula* (D**2.00))

第一次出现警告时,(cc*densparticula* (D**2.00)的值为2.3210168586496022e-12,而(mu*18.0*v)的计算结果为-9.9984582297025182e+299。在

基本上你把一个很大的数除以一个很小的数,结果的大小超过了可以表示的最大值。这可能是您的数学问题,也可能是您对函数的输入没有合理地缩放。在

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值