Производные производятся в питоне

Я пытаюсь найти производные более высокого порядка набора данных (x, y). x и y – 1D массивы длины N.

Предположим, я генерирую их как:

xder0=np.linspace(0,10,1000) yder0=np.sin(xder0) 

Я определяю производную функцию, которая принимает в 2 массиве (x, y) и возвращает (x1, y1), где y1 – производная, вычисленная для каждого индекса как: (y [i + 1] -y [i]) / (x [ + 1] -x [I]). x1 – это просто среднее значение x [i + 1] и x [i]

Вот функция, которая делает это:

 def deriv(x,y): delx =np.zeros((len(x)-1), dtype=np.longdouble) ydiff=np.zeros((len(x)-1), dtype=np.longdouble) for i in range(len(x)-1): delx[i] =(x[i+1]+x[i])/2.0 ydiff[i] =(y[i+1]-y[i])/(x[i+1]-x[i]) return delx, ydiff 

Теперь, чтобы вычислить первую производную, я вызываю эту функцию следующим образом:

 xder1, yder1 = deriv(xder0, yder0) 

Аналогично для второй производной я называю эту функцию, давая первые производные в качестве входных данных:

 xder2, yder2 = deriv(xder1, yder1) 

И это продолжается:

 xder3, yder3 = deriv(xder2, yder2) xder4, yder4 = deriv(xder3, yder3) xder5, yder5 = deriv(xder4, yder4) xder6, yder6 = deriv(xder5, yder5) xder7, yder7 = deriv(xder6, yder6) xder8, yder8 = deriv(xder7, yder7) xder9, yder9 = deriv(xder8, yder8) 

Что-то особенное происходит после того, как я достиг порядка 7. 7-й порядок становится очень шумным! Более ранние производные – это либо синусоидальные, либо cos-функции, как ожидалось. Однако седьмой порядок – это шумный синус. И, следовательно, все производные после этого взрываются.

Сюжет производных до 7-го порядка

Любая идея, что происходит?

Это хорошо известная проблема стабильности с числовой интерполяцией с использованием точек с одинаковым интервалом . Прочтите ответы на http://math.stackexchange.com .

Чтобы преодолеть эту проблему, вы должны использовать неравномерно расположенные точки , такие как корни многочлена Лагранра . Нестабильность возникает из-за недоступности информации на границах, поэтому требуется больше концентрации точек на границах, в соответствии с корнями, например, полиномами Лагранра или другими с аналогичными свойствами, такими как полином Чебышева.