为了账号安全,请及时绑定邮箱和手机立即绑定

溢出错误:(34,“结果太大”)关于使用欧拉方法的微分方程的分辨率

溢出错误:(34,“结果太大”)关于使用欧拉方法的微分方程的分辨率

慕丝7291255 2022-08-16 18:47:46
我试图解决一个物理问题的微分方程:高尔夫球的坠落。我正在使用欧拉解析方法,我有这个代码: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 resdef 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 listeZlisteZ = reso_z_euler(temps, F, Z0, K)当我运行此代码时,终端抛出一个错误:OverflowError:(34,“结果太大”)我从未见过此错误,我不知道该怎么办。你的帮助会很好..谢谢
查看完整描述

1 回答

?
波斯汪

TA贡献1811条经验 获得超4个赞

  • 您正在使用未知或非本地数组作为时间,而不是tempsliste_t

  • 你没有实现欧拉方法,你必须使用某种机制来实现向量算术,例如Z = Z + pas*F(Z,liste_t[i-1])

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


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


查看完整回答
反对 回复 2022-08-16
  • 1 回答
  • 0 关注
  • 98 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信