我编写了两个函数来计算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,两个函数输出的值大致相同。在那之后,价值观变得明显不同
目前没有回答
相关问题 更多 >
编程相关推荐