在 Python 中使用科学记数法和指数编写方程时遇到问题

问题描述

我在用 Python 编写这个方程并让它产生正确结果时遇到了一些问题:

y = 2.95710^-7 * x^4 – 2.34310^-5 * x^3 – 1.67*10^-4 * x^2 + 0.04938 * x – 1.083。

我尝试了以下代码

y = 0.0000002957*x**4 - 0.00002343*x**3 - 0.000167*x**2 + 0.04938*x - 1.083

还有:

y = (2.957*10**-7)*x**4 - (2.343*10**-5)x**3 - (1.67*10**4)*x**2 + 0.04938*x - 1.083

任何建议都会有所帮助,我认为问题可能在于科学记数法或指数以及我输入它们的方式

编辑 在回答问题时,等式吐出的数字比我在计算器上得到的数字不正确

解决方法

您可以以非常直接的方式轻松地将您拥有的内容转换为 Python。等效的 Python 语句(在修复原始方程中的一个缺陷之后......见下文)是:

y = 2.95710e-7 * x**4 - 2.34310e-5 * x**3 - 1.67e-4 * x**2 + 0.04938 * x - 1.083

这仅涉及 ^ 字符的简单替换,您可以用指数浮点常量中的 e 替换该字符,并用 **x 提升为整数幂。 为了能够更轻松地将源与结果进行比较,请参考以下原始方程式,并稍作修正:

y = 2.95710^-7 * x^4 – 2.34310^-5 * x^3 – 1.67^-4 * x^2 + 0.04938 * x – 1.083

更新:感谢 Pranav 指出源方程中的一个缺陷。术语 1.67*10^-4 应更改为 1.67^-4 以匹配其他类似术语,并对生成的 Python 方程进行等效修复。这些修复已在上面进行了评论。

在这种情况下,我总是喜欢看看我在做什么。我使用 matplotlib 绘制此函数,使用 this sample code 的未更改版本(函数和 x 上的边界除外)。这是我在 -500 到 500 之间得到的 x 值:

enter image description here

,

谢谢大家的回答。最有用的答案是使用“e”而不是科学记数法 (*10^x)。