以下scipy.integrate.odeint错误在数字上是什么意思?
Repeated convergence failures (perhaps bad Jacobian or tolerances).
也就是说,如果我确定模型的程序实现是正确的,那么关于数值方案与解决方案过程的问题的错误消息本身是什么?
以下scipy.integrate.odeint错误在数字上是什么意思?
Repeated convergence failures (perhaps bad Jacobian or tolerances).
也就是说,如果我确定模型的程序实现是正确的,那么关于数值方案与解决方案过程的问题的错误消息本身是什么?
以下 scipy.integrate.odeint 错误在数字上是什么意思?
Repeated convergence failures (perhaps bad Jacobian or tolerances).
您必须告诉我们您使用的是什么方法。我可以想到两个广泛的(不一定是详尽的)场景:
也就是说,如果我确定模型的程序实现是正确的,那么关于数值方案与解决方案过程的问题的错误消息本身是什么?
这真的意味着你必须做更多的诊断。
SciPy 是一个很好的包,它们在 Python 包装器(dopri5、vode 等)中包装已建立的数值软件方面做得很好,但是这些代码在编写时并没有考虑到易于数值诊断,因此,你会与使用 PETSc 之类的库(开发人员通过拥有为了尝试不同的数值方法,内置了许多提供有用诊断输出的工具)。
这两组工具之间的权衡是,类似 SciPy 的工具更易于学习,在“正常工作”时非常出色,并提供小型、简单的公共 API,而类似 PETSc 的工具具有更大和更复杂的公共 API,是更强大,需要更多的时间和精力来学习。
一般来说,您需要查看 ODE 求解器中任何方程求解的残差与迭代输出,并且可能还需要查看 ODE 求解器中步长误差测试的输出,以便区分应用程序中的故障点,然后从那里,您需要弄清楚如何解决该故障点(这可能像放松公差一样简单,也可能像使用不同的离散化一样复杂,因为您使用的数值方法可能存在根本缺陷,可能不适用于您的问题)。