Почему не работает эта умная функция интегрирования Фурье? - PullRequest
1 голос
/ 19 июня 2020

Когда я пытаюсь интегрировать массив periodi c с функцией scipy sp.fftpack.diff(x,order=-1), он иногда работает, а иногда нет.

Например, при интеграции x=sin(alpha) для получения массива значения интеграла при оценке от 0 до дискретных значений до 2*pi я получаю ожидаемый результат -cos(\alphas). Однако, когда я использую его для вычисления значений интегралов x=sin(alpha)+cos(alpha)+1 в тех же диапазонах, я не получаю правильного ответа, даже если функция имеет периодi c.

Не понимаю, как работает эта функция. Есть у кого-нибудь идеи?

https://docs.scipy.org/doc/scipy/reference/generated/scipy.fftpack.diff.html

Например, с помощью этого кода я получаю результаты на изображении, я также сравниваю результаты с полученными по правилу трапеции, которое работает при исправлении смещения. введите здесь описание изображения

import numpy as np
from scipy import fftpack as sp
from scipy import integrate as inte
import matplotlib.pyplot as plt

N=150
h=(2*np.pi)/N
x=np.arange(-np.pi,np.pi,h)
y=np.sin(x)+np.cos(x)+1
arrExact=-np.cos(x)+np.sin(x)+x
st=inte.cumtrapz(y,x,initial=0)-2.1
di=sp.diff(y, order=-1)-1
plt.plot(x,di,label='diff')
plt.plot(x,arrExact,label='Exact')
plt.plot(x,st,label='cumpTrapz')
plt.legend()
plt.show()

Редактировать: Хорошо, прочитав еще раз, я понял, что scipy предполагает x [0] = 0, однако Мне нужно интегрировать спектральные массивы, которые не удовлетворяют этому условию. Как я могу продолжить?

...