我正在尝试编写一个Python程序,该程序将使用泰勒级数生成e的近似值,以用户定义的长度(例如100个小数位)并打印所有100位数字。但是,输出永远不会超过15个小数位,这是python对于numpy.e的默认精度。我该如何解决?下面是我正在使用的代码。
import math
precision = int(input("Number of decimal places = "))
e = 0
s = 1
i = 1
while s > (10**(-1*precision)):
e = e + s
s = 1/math.factorial(i) # e = 1 + 1/1! + 1/2! + 1/3! + ...
i = i + 1
print(e)
答案 0 :(得分:1)
我认为您可以使用sympy和mpmath。
首先根据泰勒级数在x = 0处的误差并求值为1来找出我们需要的项数。
1/n! e^1 < 1e-100
取n = 75就足够了。尽管我们只能使用100,这也足够好了。
在sympy中,我们在0处创建泰勒级数e ^ x,然后在1处求值
import sympy, mpmath
f = 0
for i in range(0, 100):
f += 1/sympy.factorial(i)
mpmath.mp.dps = 100
print(mpmath.mpf(f))
为我提供
的值2.718281828459045235360287471352662497757247093699959574966967627724076630353547594571382178525166427