В математике алгоритм Невилла — это алгоритм, используемый для полиномиальной интерполяции , который был выведен математиком Эриком Гарольдом Невиллом в 1934 году. При наличии n + 1 точек существует единственный полином степени ≤ n , который проходит через заданные точки. Алгоритм Невилла вычисляет этот полином.
Алгоритм Невилла основан на форме Ньютона интерполирующего полинома и рекурсивном соотношении для разделенных разностей . Он похож на алгоритм Эйткена (названный в честь Александра Эйткена ), который в настоящее время не используется.
Для заданного набора из n +1 точек данных ( x i , y i ), где нет двух одинаковых x i , интерполирующий многочлен — это многочлен p степени не выше n со свойством
Этот многочлен существует и он уникален. Алгоритм Невилла вычисляет многочлен в некоторой точке x .
Пусть p i , j обозначает многочлен степени j − i , который проходит через точки ( x k , y k ) для k = i , i + 1, ..., j . P i , j удовлетворяют рекуррентному соотношению
Эта рекуррентность может вычислить p 0, n ( x ), что является искомым значением. Это алгоритм Невилла.
Например, для n = 4 можно использовать рекуррентное соотношение для заполнения треугольной таблицы ниже слева направо.
Этот процесс дает p 0,4 ( x ), значение полинома, проходящего через n + 1 точек данных ( x i , y i ) в точке x .
Для интерполяции одной точки этому алгоритму требуется O ( n 2 ) операций с плавающей точкой, а для интерполяции полинома степени n — O ( n 3 ) операций с плавающей точкой.
Производную полинома можно получить тем же способом, то есть:
В 1966 году Лайнесс и Молер показали, что, используя неопределенные коэффициенты для полиномов в алгоритме Невилла, можно вычислить разложение Маклорена окончательного интерполирующего полинома, что дает численные приближения для производных функции в начале координат. Хотя «этот процесс требует больше арифметических операций, чем требуется в методах конечных разностей», «выбор точек для оценки функции никак не ограничен». Они также показывают, что их метод может быть применен непосредственно к решению линейных систем типа Вандермонда.