在Python中计算指数的Taylor近似时值不正确

2024-10-03 23:27:14 发布

您现在位置:Python中文网/ 问答频道 /正文

我编写了两个函数来计算e^(-x):

def taylor1(x, n=12):
    sum = 0
    for i in range(n):
        sum += ( (-x)**i) / math.factorial(i)
    return sum

def taylor2(x, n=12):
    sum = 0
    for i in range(n):
        sum += ( x**i) / math.factorial(i)
    return 1/sum

第一个直接计算e^(-x),而第二个直接计算1/e^(x)。理论上,两个函数应该返回相同的值,但事实并非如此:

taylor1()的输出:

Exponent value for x=0: 1.0
Exponent value for x=5: -0.3592084034792353
Exponent value for x=10: -1162.6235369568703
Exponent value for x=15: -122924.17654220779
Exponent value for x=20: -3271048.1165624503
Exponent value for x=25: -41115385.050203174
Exponent value for x=30: -322535734.84415585

taylor2()的输出:

Exponent value for x=0: 1.0
Exponent value for x=5: 0.006774891102970596
Exponent value for x=10: 6.515712399651421e-05
Exponent value for x=15: 1.655747452084087e-06
Exponent value for x=20: 9.637493883917857e-08
Exponent value for x=25: 9.808057158702018e-09
Exponent value for x=30: 1.4649434456831522e-09

所以基本上,由taylor2()计算的值要精确得多。为什么会这样

注:对于值x=1、2、3、4,两个函数输出的值大致相同。在那之后,价值观变得明显不同


Tags: 函数inforreturnvaluedefrangemath