楼主:
domolcy (Kuma)
2019-08-04 21:24:16版上的大神们好,
小弟最近利用MMA跑联立微分方程式,
但会遇到数值精确度跑掉的问题(如图所示)
https://i.imgur.com/lsCGEyi.jpg
麻烦大神们拨冗帮助小弟,谢谢。
作者:
LPH66 (-6.2598534e+18f)
2019-08-05 09:30:00数值方法会跑到这么大的数出现可能有些发散性问题在这比较不是精确度问题: 注意到错误讯息中的那些数是 10 的 307 次方这种超大数之所以问题不在倒数结果的原因是, 看起来倒数是方程一部份(MMA 里除法跟倒数是同样的东西) 那这就代表这个超大数确实是数值计算过程中的中间值, 那就要考虑为何会有这种值
楼主:
domolcy (Kuma)
2019-08-05 10:33:00您好,这个值确实是我要的,但希望MMA可以继续算下去,请问有什么办法吗?
调working precision开big# 记得常数也要是big# 如有理数 或改用exp写该# 除法改减法 稍不精确但至少能跑
作者:
LPH66 (-6.2598534e+18f)
2019-08-13 06:08:00我有点好奇是什么样的数值微分方程会需要(可能暂时性地)出现这种数量级的数...就我对一些数学/物理/etc 方面的理解来看, 10^307 这数量级大到不太可能会有一些应用上的意义而数值模拟微分方程是一个很应用方向的东西因此就算是中间值都会有某种程度上的应用意义在这两件事情是有点矛盾的, 所以才会认为问题是方程有发散性而若发散性是可能状况之一的话, 发散到多大就不重要了
楼主:
domolcy (Kuma)
2019-08-16 00:47:00抱歉,忘了回。我处理的系统是需要算高阶的correlation function, 所以当correlation function 在很高阶的时候,就会有这种数量级,或许我可能改用其他的方法来算我感兴趣的物理量。 如果不大懂我在说什么,可以站内信,我们可以一起讨论。
1T site 10阶delta也就~10^120 除非在算amr而且系统类似NS不平滑 个人觉得10^307都可以当作delta处理
作者:
pig030 (FEBUR.PHEIX)
2019-09-07 01:53:00有没有可能先行处理一处方程式让他们更简化再来跑模拟