编写一个Python函数arctan(),它接受输入参数(参数)x,并以以下无限和计算前11项的和:-arctan( 1/x )= 1/x-1/3x^3+ 1/5x^5 - 1/7x^7 + 1/9x^9
因此,你的最后一项应该是1/21x^21。
使用以下公式测试函数:-pi/4 =4 arctan(1/5)- arctan(1/239)
提示: i)如果函数arctan()实现正确,则4 (4 arctan(1/5)−arctan(1/239)和−之间的差值应该小于10−15 ii),您的函数应该输入x并计算arctan(1/x)。由于方程(5),因此测试代码应该按如下方式调用arctan():4∗(4∗a r ta n(5)−a r ta n (239 ))
下面是我的代码,但我不知道我做错了哪一部分,需要你帮忙吗?
import numpy as np
sumA = 0
def arctan(x):
for i in range(0,11,2):
sumA = sumA + [1/(i*x**i)]
return sumA
print(arctan(1))
sumB = 0
def arctan(x):
for i in range(0,11,2):
sumB = sumB - [1/(i*x**i)]
return sumB
print(arctan(2))
Sum = 0
for i in range(0,11,1):
sum = sumA - sumB
print(sum)
有人能帮我解决这个问题吗?因为我不知道我做错了什么。
发布于 2022-10-25 06:59:28
在您的代码中有许多不准确之处:
在您的函数中,
x
,这是要计算arctan
的值。但是,您正在对变量sumA
进行求和,这也是函数的返回。因此,如果计算另一个arctan
,它将与前面的结果相加(因为代码sumA = 0
的部分不在函数中,并且每次调用时都不会刷新)。
return
;您希望函数在它完成所有循环之后返回,所以应该将它放在for循环之外。
range
函数也是错误的,如果您试图在for
循环中打印出迭代器,您将看到它将给您0,2,4,6,8,10。所以,首先您想从1开始,第二,如果您想包含11,您应该在12停止,因为python在上限之前停止了一个数字。
arctan
的泰勒展开只取奇数指数,而不是偶数。。
def arctan(x):i0 =1a=x表示范围内的i(3,12,2):i0 _= -1 x += i0_a**i/i返回x
输出:
0.7440115440115441
有更多的迭代(300):
0.7853814967307984
“实际”价值:
np.arctan(1) = 0.7853981633974483
https://stackoverflow.com/questions/74195770
复制相似问题