【问题标题】:Error handling (dividing by zero) [duplicate]错误处理(除以零)[重复]
【发布时间】:2014-05-01 13:31:13
【问题描述】:

我正在做一个项目,我正在绘制给定特定参数的卫星轨道运动。我正在绘制的方程式如下:

R=r/(1+e*np.cos(phi))

其中r 是圆形轨道的半径,e 是轨道的偏心率,phi 是从02*pi 的圆柱角。我一直在绘制 e 的不同值,如果我让 e==1,我会从 Python 收到这条消息:

RuntimeWarning:除法中遇到除以零

phi==pi时发生。

我想知道我可以做些什么来检查我的代码并告诉 Python 如果你收到这种错误,跳过那个计算并继续下一个计算?

【问题讨论】:

  • 也许你应该在你的轨道上少一点古怪。
  • 顺便说一句,对于那些抱怨的人:这不是一个真正的ZeroDivisionError 问题。

标签: python numpy error-handling runtime-error


【解决方案1】:

我认为避免这种情况的最好方法是在之前执行一个 IF 语句,如果 phi 等于 pi,则不要进行计算。我认为当错误如此可预测时,您不应该故意陷入错误。

为了使主题更清楚一点,我认为只有在无法预测错误的情况下才应使用 try/catch。 我不同意将错误用作可接受的软件行为或设计模式。

if(phi != PI):
    R=r/(1+e*np.cos(phi))

或者,如果您愿意,可以在 phi == PI 时做出特殊行为

【讨论】:

  • +1 因为e=1 代表抛物线轨道,所以R 的距离确实会随着phi 接近圆周率而趋于无穷大。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多