使用 spyder 中具有指定容差的连续项之间的关系扩展泰勒级数
Expanding taylor series using relation between successive terms with a specified tolerance in spyder
我已经使用此代码在 spyder(Python 3.8).
中使用指定的 tole运行ce 确定了 e^pi 的值
from math import*
term=1
sum=0
n=1
while (abs(e**pi-term))>0.0001:
term=term*pi/n
sum+=term
n+=1
print(sum,e**pi)
我运行这个代码好几次了。但是当我 运行 这段代码时,spyder 没有显示任何内容。我是 python 的新手。所以现在我无从知道这段代码是否正确。如果您能验证此代码是否有效,将对您有所帮助。
while 循环没有结束。
我一直处于跳出循环的状态(在 10,000 次循环时)以证明这一点:
from math import*
term=1
sum=0
n=1
while (abs(e**pi-term))>0.0001:
term=term*pi/n
sum+=term
n+=1
if n > 10_000:
print('large n')
break
print(sum,e**pi)
如果把while循环换成for循环,那么你可以看到每次迭代如下。
term=1
sum=0
for n in range(1, 101):
term=term*(math.pi)/n
sum+=term
print(n, sum, math.e**math.pi)
这是前 10 项的结果:
1 3.141592653589793 23.140692632779263
2 8.076394854134472 23.140692632779263
3 13.244107634184441 23.140692632779263
4 17.30281976060121 23.140692632779263
5 19.852983800478555 23.140692632779263
6 21.188246569333145 23.140692632779263
7 21.787511098653937 23.140692632779263
8 22.02284172901283 23.140692632779263
9 22.104987615623955 23.140692632779263
10 22.13079450701397 23.140692632779263
数字越来越大,因此 while
循环从未退出(并且您的笔记本电脑可能在此过程中变得非常热!!)。
好的,所以 e^x 的泰勒级数是 n=0 到 x^n / n 的总和!通过在每次迭代期间乘以 pi/n,您似乎做得正确。
我注意到的一个问题是您的 while 循环条件。要检查函数的错误,您应该从实际值中减去当前的 sum
。这就是你进入无限循环的原因,因为你的 term
将接近 0,所以差值将接近实际值 e^pi,它总是大于 .0001 或任何你的错误。
另外,由于n从1开始,所以sum也应该从1开始,因为泰勒级数的第0项已经是1了。这就是你进入死循环的原因,因为
因此,我们的代码应该是这样的:
from math import*
term = 1
sum = 1
n = 1
while (abs(e ** pi - sum)) > 0.0001:
term = term * pi / n
sum += term
n += 1
print(sum,e**pi)
输出:
23.140665453179782 23.140692632779263
我希望这有助于回答您的问题!如果您需要任何进一步的说明或详细信息,请告诉我:)
我已经使用此代码在 spyder(Python 3.8).
中使用指定的 tole运行ce 确定了 e^pi 的值from math import*
term=1
sum=0
n=1
while (abs(e**pi-term))>0.0001:
term=term*pi/n
sum+=term
n+=1
print(sum,e**pi)
我运行这个代码好几次了。但是当我 运行 这段代码时,spyder 没有显示任何内容。我是 python 的新手。所以现在我无从知道这段代码是否正确。如果您能验证此代码是否有效,将对您有所帮助。
while 循环没有结束。
我一直处于跳出循环的状态(在 10,000 次循环时)以证明这一点:
from math import*
term=1
sum=0
n=1
while (abs(e**pi-term))>0.0001:
term=term*pi/n
sum+=term
n+=1
if n > 10_000:
print('large n')
break
print(sum,e**pi)
如果把while循环换成for循环,那么你可以看到每次迭代如下。
term=1
sum=0
for n in range(1, 101):
term=term*(math.pi)/n
sum+=term
print(n, sum, math.e**math.pi)
这是前 10 项的结果:
1 3.141592653589793 23.140692632779263
2 8.076394854134472 23.140692632779263
3 13.244107634184441 23.140692632779263
4 17.30281976060121 23.140692632779263
5 19.852983800478555 23.140692632779263
6 21.188246569333145 23.140692632779263
7 21.787511098653937 23.140692632779263
8 22.02284172901283 23.140692632779263
9 22.104987615623955 23.140692632779263
10 22.13079450701397 23.140692632779263
数字越来越大,因此 while
循环从未退出(并且您的笔记本电脑可能在此过程中变得非常热!!)。
好的,所以 e^x 的泰勒级数是 n=0 到 x^n / n 的总和!通过在每次迭代期间乘以 pi/n,您似乎做得正确。
我注意到的一个问题是您的 while 循环条件。要检查函数的错误,您应该从实际值中减去当前的 sum
。这就是你进入无限循环的原因,因为你的 term
将接近 0,所以差值将接近实际值 e^pi,它总是大于 .0001 或任何你的错误。
另外,由于n从1开始,所以sum也应该从1开始,因为泰勒级数的第0项已经是1了。这就是你进入死循环的原因,因为
因此,我们的代码应该是这样的:
from math import*
term = 1
sum = 1
n = 1
while (abs(e ** pi - sum)) > 0.0001:
term = term * pi / n
sum += term
n += 1
print(sum,e**pi)
输出:
23.140665453179782 23.140692632779263
我希望这有助于回答您的问题!如果您需要任何进一步的说明或详细信息,请告诉我:)