定义一个计算总和的函数

时间:2018-09-27 16:28:40

标签: arrays function numpy sum

我的班级正在使用numpy,并且有一个作业要在其中创建一个用于计算和的函数。

Assignment Description

我正在尝试定义用于计算总和的函数C_series(x,k):

C(x; k) = the sum of (-1)^n*x^(2n) /(2n!) when n goes from 0 to k. 

我在这里遇到麻烦,通过谷歌搜索几乎找不到什么帮助。我什至无法正确定义函数。我想我可能需要在此处放置for循环,因为我想遍历不同x和k值的总和,但是我不太确定如何用代码编写。到目前为止,这就是我所拥有的,但是我敢肯定,一切都错了:

import numpy as np
def C_series(x, k):    
     return np.sum((-1)**n*x**(2*n))/np.math.factorial(2*n)

x = np.linspace(-3*pi, 3*pi, 7)
k = np.array([2, 4, 6, 8, 10])

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:0)

有2种方法。一条直线,另一条使用霍纳方案(略作修改)。由于您的问题是一项作业,因此我将继续弄清楚它们是如何作为练习来工作的。

def C(x, k, Horner=False):
    if Horner:
        res = -1 if k % 2 else 1
        for j in range(k, 0, -1):
            res *= x*x/(2*j*(2*j-1))
            res += 1 if j % 2 else -1
        return res
    else:
        terms = (x / np.arange(1, 2*k+1)).cumprod()[1::2]
        return 1 + terms[1::2].sum() - terms[::2].sum()