Как в Python рассчитать конечные разности?

Рейтинг: 0Ответов: 0Опубликовано: 12.06.2023

Делаю полином. В рамках алгоритма считаю конечные разности. В рамках алгоритма мы идем по колонкам слева направо (см. рисунок), вычитаем из верхней строки нижестоящую и записываем результат в следующий столбец справа в ячейку сверху.

введите сюда описание изображения

Пример: в колонке y таблицы из 0,3091 вычитаем 0,0000 и получаем 0,3091, итог записываем в колонку дельта y. Затем спускаемся ниже и считаем: 0,5878 - 0,3091 = 0,2787 и проч. Надо просчитать конечные разности по всем колонкам.

Казалось бы, предложенный далее метод должен считать все корректно. Однако у меня конечные разности расходятся с расчетом преподавателя. Буду благодарен за анализ кода и замечания по нему.

Код:

import numpy as np

def func(x):
    return np.sin(x)

order = 4
x_i_list = [(0.1*np.pi*i) for i in range(0, 11)]

# 4.1. формируем список y_i
y_i_list = []
for x in x_i_list:
    y_i = (func(x)) 
    y_i_list.append(y_i)

# 5. строим конечные разности
if order < len(y_i_list):
    result_1 = [ np.diff(y_i_list, n=d) for d in np.arange(1, len(y_i_list)) ] 
    print('Конечные разности по столбцам: ', result_1)
else:
    print(f'Определите порядок полинома меньше {len(y_i_list)-1}')

Ответы

Ответов пока нет.