Python 欧拉法求解微分方程的溢出错误:(34,';结果太大';)

Python 欧拉法求解微分方程的溢出错误:(34,';结果太大';),python,compiler-errors,differential-equations,Python,Compiler Errors,Differential Equations,我试图解决一个物理问题的微分方程:高尔夫球的下落。 我使用的是Euler分辨率方法,我有以下代码: def F(Z, t): res = [Z[1], (-K/m)*Z[1]*sqrt((Z[1]**2) + (Z[1]**2)), Z[3], (-K/m)*Z[3]*sqrt((Z[3]**2) + (Z[3]**2))] return res def reso_z_euler(liste_t, F, CI, K): n = len(liste_t) Z =

我试图解决一个物理问题的微分方程:高尔夫球的下落。 我使用的是Euler分辨率方法,我有以下代码:

def F(Z, t):
    res = [Z[1], (-K/m)*Z[1]*sqrt((Z[1]**2) + (Z[1]**2)), Z[3], (-K/m)*Z[3]*sqrt((Z[3]**2) + (Z[3]**2))]
    return res

def reso_z_euler(liste_t, F, CI, K):
    n = len(liste_t)
    Z = CI
    pas = (liste_t[-1] - liste_t[0])/(n-1)
    listeZ = [Z]
    for i in range(1, n):
        Z = F(Z, temps[i-1])
        listeZ.append(Z)
    return listeZ

listeZ = reso_z_euler(temps, F, Z0, K)
当我运行这段代码时,终端抛出一个错误:OverflowerError:(34,‘结果太大’) 我从未见过这个错误,我不知道该怎么办。。 你的帮助太好了。。 谢谢

  • 您使用的是未知或非本地数组,时间为
    temps
    ,而不是
    liste\t

  • 如果没有实现Euler方法,则必须采用某种机制来实现向量算法,例如

    Z = [ zk+pas*fk for zk, fk in zip(Z, F(Z,liste_t[i-1])) ]
    
  • 你忘了在导数计算中包括重力


一般来说,欧拉方法只适用于学习数值常微分方程积分的原理,对于任何有用的结果,使用高阶方法