Алгоритм Невилла

В математике алгоритм Невилла — это алгоритм, используемый для полиномиальной интерполяции , который был выведен математиком Эриком Гарольдом Невиллом в 1934 году. При наличии n + 1 точек существует единственный полином степени ≤ n , который проходит через заданные точки. Алгоритм Невилла вычисляет этот полином.

Алгоритм Невилла основан на форме Ньютона интерполирующего полинома и рекурсивном соотношении для разделенных разностей . Он похож на алгоритм Эйткена (названный в честь Александра Эйткена ), который в настоящее время не используется.

Алгоритм

Для заданного набора из n +1 точек данных ( x i , y i ), где нет двух одинаковых x i , интерполирующий многочлен — это многочлен p степени не выше n со свойством

p ( x i ) = y i для всех i = 0,..., n

Этот многочлен существует и он уникален. Алгоритм Невилла вычисляет многочлен в некоторой точке x .

Пусть p i , j обозначает многочлен степени ji , который проходит через точки ( x k , y k ) для k = i , i + 1, ..., j . P i , j удовлетворяют рекуррентному соотношению

п я , я ( х ) = у я , {\displaystyle p_{i,i}(x)=y_{i},\,} 0 я н , {\displaystyle 0\leq i\leq n,\,}
п я , дж ( х ) = ( х х я ) п я + 1 , дж ( х ) ( х х дж ) п я , дж 1 ( х ) х дж х я , {\displaystyle p_{i,j}(x)={\frac {(x-x_{i})p_{i+1,j}(x)-(x-x_{j})p_{i,j-1}(x)}{x_{j}-x_{i}}},\,} 0 я < дж н . {\displaystyle 0\leq i<j\leq n.\,}

Эта рекуррентность может вычислить p 0, n ( x ), что является искомым значением. Это алгоритм Невилла.

Например, для n = 4 можно использовать рекуррентное соотношение для заполнения треугольной таблицы ниже слева направо.

п 0 , 0 ( х ) = у 0 {\displaystyle p_{0,0}(x)=y_{0}\,}
п 0 , 1 ( х ) {\displaystyle p_{0,1}(x)\,}
п 1 , 1 ( х ) = у 1 {\displaystyle p_{1,1}(x)=y_{1}\,} п 0 , 2 ( х ) {\displaystyle p_{0,2}(x)\,}
п 1 , 2 ( х ) {\displaystyle p_{1,2}(x)\,} п 0 , 3 ( х ) {\displaystyle p_{0,3}(x)\,}
п 2 , 2 ( х ) = у 2 {\displaystyle p_{2,2}(x)=y_{2}\,} п 1 , 3 ( х ) {\displaystyle p_{1,3}(x)\,} п 0 , 4 ( х ) {\displaystyle p_{0,4}(x)\,}
п 2 , 3 ( х ) {\displaystyle p_{2,3}(x)\,} п 1 , 4 ( х ) {\displaystyle p_{1,4}(x)\,}
п 3 , 3 ( х ) = у 3 {\displaystyle p_{3,3}(x)=y_{3}\,} п 2 , 4 ( х ) {\displaystyle p_{2,4}(x)\,}
п 3 , 4 ( х ) {\displaystyle p_{3,4}(x)\,}
п 4 , 4 ( х ) = у 4 {\displaystyle p_{4,4}(x)=y_{4}\,}

Этот процесс дает p 0,4 ( x ), значение полинома, проходящего через n + 1 точек данных ( x i , y i ) в точке x .

Для интерполяции одной точки этому алгоритму требуется O ( n 2 ) операций с плавающей точкой, а для интерполяции полинома степени n — O ( n 3 ) операций с плавающей точкой.

Производную полинома можно получить тем же способом, то есть:

п я , я ( х ) = 0 , {\displaystyle p'_{i,i}(x)=0,\,} 0 я н , {\displaystyle 0\leq i\leq n,\,}
п я , дж ( х ) = ( х дж х ) п я , дж 1 ( х ) п я , дж 1 ( х ) + ( х х я ) п я + 1 , дж ( х ) + п я + 1 , дж ( х ) х дж х я , {\displaystyle p'_{i,j}(x)={\frac {(x_{j}-x)p'_{i,j-1}(x)-p_{i,j-1}(x)+(x-x_{i})p'_{i+1,j}(x)+p_{i+1,j}(x)}{x_{j}-x_{i}}},\,} 0 я < дж н . {\displaystyle 0\leq i<j\leq n.\,}

Применение к численному дифференцированию

В 1966 году Лайнесс и Молер показали, что, используя неопределенные коэффициенты для полиномов в алгоритме Невилла, можно вычислить разложение Маклорена окончательного интерполирующего полинома, что дает численные приближения для производных функции в начале координат. Хотя «этот процесс требует больше арифметических операций, чем требуется в методах конечных разностей», «выбор точек для оценки функции никак не ограничен». Они также показывают, что их метод может быть применен непосредственно к решению линейных систем типа Вандермонда.

Ссылки

  • Press, William; Saul Teukolsky; William Vetterling; Brian Flannery (1992). "§3.1 Полиномиальная интерполяция и экстраполяция (зашифровано)" (PDF) . Numerical Recipes in C. The Art of Scientific Computing (2nd ed.). Cambridge University Press. ISBN 978-0-521-43108-8.(ссылка плохая)
  • Дж. Н. Лайнесс и К. Б. Молер, Системы Ван дер Монда и числовое дифференцирование, Numerische Mathematik 8 (1966) 458-464 (doi: 10.1007/BF02166671)
  • Невилл, Э. Х.: Итеративная интерполяция. J. Indian Math. Soc.20, 87–120 (1934)
Взято с "https://en.wikipedia.org/w/index.php?title=Neville%27s_algorithm&oldid=1199037537"