Как вернуть расчет серии, используя numpy? - PullRequest
0 голосов
/ 19 января 2020

Я пытаюсь решить проблему, в которой для скалярной переменной x (?∈ (0,2?)) и положительного целого числа N я должен вычислить и вернуть запись на изображении ниже. Я однодневный плода и у меня проблемы. Пожалуйста, посмотрите мой код?

Подсказка: используйте np.arange, np.sum, np.multiply.accumulate

equation

import numpy as np
def mysin(x,N):
    k=1
    arr=np.arange(k,N+1)
    for i in arr:
        i=(-1**(k-1))*(x**(2*k-1))/np.math.factorial(2*k-1)
    arr=np.sum(i)
    return arr

raise NotImplementedError()

1 Ответ

1 голос
/ 19 января 2020

Вам не нужно явно указывать l oop над массивом мощности, если вы возводите число в степень, являющееся массивом, тогда Numpy будет выполнять эту операцию по элементам. Факториал также можно вычислить внутри Numpy, используя функцию np.multiply.accumulate, а затем выбрать каждый второй элемент, поскольку факториал равен (2k - 1)!:

k = np.arange(1, N+1)
factorial = np.multiply.accumulate(np.arange(1, 2*N).astype(float))[::2]
return np.sum((-1)**(k-1) * x**(2*k-1) / factorial)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...