如何解决系数符号翻转时 scipy odeint 的精度问题
设置
我正在尝试求解一个二阶微分方程,其中系数仅以数值方式已知(在下面的公式中,让后缀 d 为导数,即 Tdd 是 T 的二阶导数)
-Tdd - alpha * Td + beta * T == 0
方法
我使用 scipy.integrate.odeint(scipy 版本 1.5.2)以 2 个一阶 ODE 系统的形式求解这个方程。作为精度的衡量标准,我只是将 T 的解代入方程(并期望得到 0)。
问题
下图显示,在 beta 将符号从正数翻转为负数的那一点,精度如何下降到巨大的绝对值。
到目前为止我尝试过的/有效的
这些解决方案还不错,并且在物理上接近我们的预期,但是从上下文中我知道它们有一个错误或 O(1e-4),这对于我们的案例来说太大了。解决方案当然表现良好,没有表现出任何激烈的行为。
我尝试了 100 到 1e8 步,但精度没有发生质的变化。
我在 odeint 中随机玩了很多参数,没有更深入地了解它们的作用,所有这些都没有改变精度/精度中的驼峰。
欢迎任何建议或提示:D
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。