Русская Википедия:Эрмитова интерполяция

Материал из Онлайн справочника
Перейти к навигацииПерейти к поиску

Эрмитова интерполяция - метод полиномиальной интерполяции, названный в честь французского математика Шарля Эрмита. Многочлены Эрмита тесно связаны с многочленами Ньютона.

В отличие от интерполяции Ньютона, эрмитова интерполяция строит многочлен, значения которого в выбранных точках совпадают со значениями исходной функции в этих точках, и все производные многочлена вплоть до некоторого порядка m в данных точках совпадают со значениями производных функции. Это означает, что n(m + 1) величин

<math>

\begin{matrix} (x_0, y_0), &(x_1, y_1), &\ldots, &(x_{n-1}, y_{n-1}), \\ (x_0, y_0'), &(x_1, y_1'), &\ldots, &(x_{n-1}, y_{n-1}'), \\ \vdots & \vdots & &\vdots \\ (x_0, y_0^{(m)}), &(x_1, y_1^{(m)}), &\ldots, &(x_{n-1}, y_{n-1}^{(m)}) \end{matrix} </math> должны быть известны, тогда как для ньютоновской интерполяции необходимы только первые n значений. Полученный многочлен может иметь степень не более, чем n(m + 1) − 1, максимальная степень многочлена Ньютона же равна n − 1. (В общем случае m не обязательно должно быть фиксировано, то есть в одних точках может быть известно значение большего количества производных, чем в других. В этом случае многочлен будет иметь степень N − 1, где N - число известных значений.)

Использование

Простой случай

При использовании разделенных разностей для вычисления многочлена Эрмита, первым шагом является копирование каждой точки m раз. (Здесь мы рассмотрим простой случай, когда для всех точек <math>m = 1</math>.) Поэтому, дана <math>n + 1</math> точка <math>x_0, x_1, x_2, \ldots, x_n</math>, и значения <math>f(x_0), f(x_1), \ldots, f(x_n)</math> и <math>f'(x_0), f'(x_1), \ldots, f'(x_n)</math> функции f, которую мы хотим интерполировать. Определим новый набор данных

<math>z_0, z_1, \ldots, z_{2n+1}</math>

такой, что

<math>z_{2i}=z_{2i+1}=x_i</math>

Теперь определим таблицу разделенных разностей для точек <math>z_0, z_1, \ldots, z_{2n+1}</math>. Однако, для некоторых разделенных разностей

<math>z_i = z_{i + 1}\implies f[z_i, z_{i+1}] = \frac{f(z_{i+1})-f(z_{i})}{z_{i+1}-z_{i}} = \frac{0}{0}</math>

что есть неопределенность! В этом случае заменим эту разделенную разность значением <math>f'(z_i)</math>, а другие вычислим обычным способом.

Общий случай

В общем случае полагаем, что в данных точках <math>x_i</math> известны производные функции f до порядка k включительно. Тогда набор данных <math>z_0, z_1, \ldots, z_{N}</math> содержит k копий <math>x_i</math>. При создании таблицы разделенных разностей при <math>j = 2, 3, \ldots, k</math> одинаковые значения будут вычислены как

<math>\frac{f^{(j)}(x_i)}{j!}</math>.

Например,

<math>f[x_i, x_i, x_i]=\frac{f(x_i)}{2}</math>
<math>f[x_i, x_i, x_i, x_i]=\frac{f^{(3)}(x_i)}{6}</math>

и так далее.

Пример

Рассмотрим функцию <math>f(x) = x^8 + 1</math>. Вычислив значения функции и её первых двух производных в точках <math>x \in \{-1, 0, 1\}</math>, получим следующие данные:

x ƒ(x) ƒ'(x) ƒ''(x)
−1 2 −8 56
0 1 0 0
1 2 8 56

Так как мы работаем с двумя производными, строим множество <math>\{z_i\} = \{-1, -1, -1, 0, 0, 0, 1, 1, 1\}</math>. Таблица разделенных разностей тогда имеет вид:

<math>

\begin{matrix} z_0 = -1 & f[z_0] = 2 & & & & & & & & \\

         &              &  \frac{f'(z_0)}{1} = -8  &                         &                           &      &     &   &    & \\

z_1 = -1 & f[z_1] = 2 & & \frac{f(z_1)}{2} = 28 & & & & & & \\

         &              &  \frac{f'(z_1)}{1} = -8  &                         &  f[z_3,z_2,z_1,z_0] = -21 &      &     &   &    & \\

z_2 = -1 & f[z_2] = 2 & & f[z_3,z_2,z_1] = 7 & & 15 & & & & \\

         &              &  f[z_3,z_2] = -1         &                         &  f[z_4,z_3,z_2,z_1] = -6  &      & -10 &   &    & \\

z_3 = 0 & f[z_3] = 1 & & f[z_4,z_3,z_2] = 1 & & 5 & & 4 & & \\

         &              &  \frac{f'(z_3)}{1} = 0   &                         &  f[z_5,z_4,z_3,z_2] = -1  &      &  -2 &   & -1 & \\

z_4 = 0 & f[z_4] = 1 & & \frac{f(z_4)}{2} = 0 & & 1 & & 2 & & 1 \\

         &              &  \frac{f'(z_4)}{1} = 0   &                         &  f[z_6,z_5,z_4,z_3] =  1  &      &   2 &   &  1 & \\

z_5 = 0 & f[z_5] = 1 & & f[z_6,z_5,z_4] = 1 & & 5 & & 4 & & \\

         &              &  f[z_6,z_5] = 1          &                         &  f[z_7,z_6,z_5,z_4] =  6  &      &  10 &   &    & \\

z_6 = 1 & f[z_6] = 2 & & f[z_7,z_6,z_5] = 7 & & 15 & & & & \\

         &              &  \frac{f'(z_7)}{1} = 8   &                         &  f[z_8,z_7,z_6,z_5] =  21 &      &     &   &    & \\

z_7 = 1 & f[z_7] = 2 & & \frac{f(z_7)}{2} = 28 & & & & & & \\

         &              &  \frac{f'(z_8)}{1} = 8   &                         &                           &      &     &   &    & \\

z_8 = 1 & f[z_8] = 2 & & & & & & & & \\ \end{matrix} </math> и получаем многочлен

<math>

\begin{align} P(x) &= 2 - 8(x+1) + 28(x+1) ^2 - 21 (x+1)^3 + 15x(x+1)^3 - 10x^2(x+1)^3 \\ &\quad{} + 4x^3(x+1)^3 -1x^3(x+1)^3(x-1)+x^3(x+1)^3(x-1)^2 \\ &=2 - 8 + 28 - 21 - 8x + 56x - 63x + 15x + 28x^2 - 63x^2 + 45x^2 - 10x^2 - 21x^3 \\ &\quad {}+ 45x^3 - 30x^3 + 4x^3 + x^3 + x^3 + 15x^4 - 30x^4 + 12x^4 + 2x^4 + x^4 \\ &\quad {}- 10x^5 + 12x^5 - 2x^5 + 4x^5 - 2x^5 - 2x^5 - x^6 + x^6 - x^7 + x^7 + x^8 \\ &= x^8 + 1. \end{align} </math> взятием коэффициентов диагонали таблицы разделенных разностей, и умножением коэффициента с номером k на <math>\prod_{i=0}^{k-1} (x - z_i)</math>, как при получении многочлена Ньютона.

Погрешность эрмитовой интерполяции

Назовем найденный многочлен H и исходную функцию f. Для точек <math>x \in [x_0, x_n]</math>, функция ошибки определяется как

<math>f(x) - H(x) = \frac{f^{(K)}(c)}{K!}\prod_{i}(x - x_i)^{k_i}</math>,

где c неизвестная из диапазона <math>[x_0, x_N]</math>, K - общее число данных значений плюс один, а <math>k_i</math> - число производных, известных в каждой точке <math>x_i</math>, плюс один.

См. также