【问题标题】:Having trouble writing an equation with scientific notation and exponents in Python在 Python 中用科学记数法和指数编写方程时遇到问题
【发布时间】:2021-06-25 16:56:58
【问题描述】:

我在用 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

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

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

【问题讨论】:

  • 您遇到了什么错误?
  • 你遇到了什么麻烦?你期望它产生什么?它实际上产生了什么?
  • (2.343*10**-5)x**3 需要是(2.343*10**-5)*x**3,也许吧?另外,请注意 Python 理解科学记数法。 2.343e-50.000023432.343*10**-5 一样有效
  • @user15108227 您希望它产生什么?它实际上产生了什么?请使用tour,阅读what's on-topic hereHow to Askquestion checklist,并提供minimal reproducible example
  • 除了x**3之前的*之外,(1.67*10**4)中还缺少一个-...*

标签: python scientific-notation exponent


【解决方案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 来绘制这个函数,使用this sample code 的未更改版本(除了函数和x 上的边界)。这是我在 -500 到 500 之间得到的 x 值:

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多