用科学记数法和指数写方程时遇到困难

问题描述 投票:0回答:2

我在用 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 scientific-notation exponent
2个回答
1
投票

你所拥有的可以很容易地以非常直接的方式转换为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
来绘制此函数,使用的是
此示例代码
的未更改版本(除了函数和 x 上的边界)。这是我得到的 -500 到 500 之间的 x 值:


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.