【问题标题】:Approximation of e^x using Maclaurin Series in Python在 Python 中使用 Maclaurin 系列逼近 e^x
【发布时间】:2014-07-23 15:49:11
【问题描述】:

我正在尝试在一个名为 my_exp(x) 的函数中使用 Maclaurin 级数来近似 e^x,我相信到目前为止我所做的一切都是正确的,但无论我尝试什么数字,我都会得到不正确的近似值。

import math
for i in range (x):
    exp = 1 + ((x**i)/math.factorial(i))
print(exp)

例如,每当我尝试my_exp(12) 时,我都会得到 18614.926233766233 而不是 162754.79141900392 帮忙?

【问题讨论】:

  • 您实际上并没有将总和相加 - 您的打印输出是该系列的最后一项。此外,您发布的代码似乎与您所说的不相符 - my_exp() 的定义在哪里?
  • 整个代码中有def my_exp(x) 我只是包含了函数的内容
  • 你的import函数里面吗?!请参阅PEP-8
  • 在近似无限级数方面,您可能会发现我的this answer 很有帮助。

标签: python series expansion exponential


【解决方案1】:

为了积累系列的条款,你需要将赋值给exp替换成这样一行:

exp = exp + ((x**i)/math.factorial(i))

【讨论】:

  • 我已将此添加到代码中,但它仍然给我一个不正确的答案
  • @vanaghka 另一件事是range (x) 作为您感兴趣的i 的值集并没有特别的意义。为什么在计算my_exp(1) 时停在i=0?计算my_exp(1000)时真的有必要用1000个词吗?
【解决方案2】:

您的问题是 e^x 级数是一个无限级数,因此只对级数的前 x 项求和是没有意义的。

def myexp(x):
  e=0
  for i in range(0,100): #Sum the first 100 terms of the series
    e=e+(x**i)/math.factorial(i)
  return e

您还可以定义结果的精度并获得更好的解决方案。

def myexp(x):
    e=0
    pres=0.0001
    s=1
    i=1
    while s>pres:
        e=e+s
        s=(x**i)/math.factorial(i)
        i=i+1
    return e

【讨论】:

    猜你喜欢
    • 2020-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-21
    • 1970-01-01
    • 2018-03-22
    • 1970-01-01
    • 2012-09-28
    相关资源
    最近更新 更多