我正在尝试创建一个名为cos_series
的函数,它使用值x
和nterms
给出一个级数的和,使用这个方程1-x^2/2!+x^4/4!-x^6/6!+
这是我到目前为止的代码
def cos_series(x,nterms):
lst = []
lst2 = []
for i in range(nterms):
lst+=[x**(2*i)/(math.factorial(i*2))]
for i in range(nterms):
lst2+=[(x**(2*i)/(math.factorial(i*2)))*-1]
return sum(lst2[1::2] + lst[::2])
cos_series(math.pi/3,3)
返回值应该等于0.501796,但我很难达到它,有人能帮忙吗
您的代码似乎工作正常
您的逻辑只适用于:
一次生成序列的和,避免计算不使用的值
(请注意,在您更改问题后,您的代码实际上返回
0.501796201500181
-这是您期望的值;没有问题?)您不需要使用math.factorial(),也不需要将术语存储在列表中。你只需要在做的时候建立分子和分母,然后把它们加起来
通过迭代生成分子和分母,您的逻辑将更易于管理和调试:
相关问题 更多 >
编程相关推荐