Определите функцию, которая вычисляет сумму - PullRequest
0 голосов
/ 27 сентября 2018

Мой класс работает с 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. 

У меня возникли проблемы, и я смог найти очень небольшую помощь, прибегая к помощи Google.Я даже не могу правильно определить функцию.Я думаю, что, возможно, мне нужно где-то вставить цикл 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 голосов
/ 27 сентября 2018

Вот 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()
...