Донецкий национальный технический университет
Опубликован: 15.03.2007 | Доступ: свободный | Студентов: 5217 / 1566 | Оценка: 4.11 / 3.78 | Длительность: 12:32:00
Специальности: Математик
Лекция 11:

Компьютерное моделирование при обработке опытных данных

Построение интерполяционного многочлена в явном виде

Для построения интерполяционного многочлена вида (11.2) необходимо определить его коэффициенты a0, a1, :, an, т.е. ai i=0,1,2,:,n. Количество неизвестных коэффициентов равно

n+1=N,

где

n-степень многочлена (11.2),

N-количество узловых точек табличной функции (11.1).

Для нахождения коэффициентов, используем свойство (11.3) интерполяционного многочлена (11.2). На основании этого свойства интерполяционный многочлен должен пройти через каждую узловую точку (xi, yi) таблицы (11.1), т.е.,

a_0x_i^n + a_1x_i^{n-1} + \ldots + a_{n-1}x_i + a_n = y_i, i=0,1,\ldots,n. ( 11.4)

Подставляя в (11.4) каждую узловую точку таблицы (11.1) получаем систему линейных уравнений:

\left\{ \begin{array}{l} 
a_0x_0^n + a_1x_0^{n-1} + \ldots + a_{n-1}x_0 + a_n = y_0,\\ 
a_0x_1^n + a_1x_1^{n-1} + \ldots + a_{n-1}x_1 + a_n = y_1,\\ 
\ldots \ldots \ldots \ldots \ldots \ldots\\ 
a_0x_n^n + a_1x_n^{n-1} + \ldots + a_{n-1}x_n + a_n = y_n. 
\end{array} \right. ( 11.5)

Неизвестными системы (11.5) являются a0, a1, a2, :, an т.е. коэффициенты многочлена (11.2). Коэффициенты при неизвестных системы (11.5) x_i^n, x_i^{n-1}, \ldots, x_i^0, i=0,1, \ldots,n,  i=0,1,:,n легко могут быть определены на основании данных таблицы (11.1).

Интерполяция по Лагранжу

Интерполяционный многочлен может быть построен при помощи специальных интерполяционных формул Лагранжа, Ньютона, Стерлинга, Бесселя и др.

Интерполяционный многочлен по формуле Лагранжа имеет вид:

L_n(x)=\frac{(x-x_1)(x-x_2)(x-x_3) \ldots \ldots (x-x_n)}{(x_0-x_1)(x_0-x_2)(x_0-x_3) \ldots (x_0-x_n)} \cdot y_0 +\\ 
+ \frac{(x-x_0)(x-x_2)(x-x_3) \ldots \ldots (x-x_n)}{(x_1-x_0)(x_1-x_2)(x_1-x_3) \ldots (x_1-x_n)} \cdot y_1 +\\ 
+ \frac{(x-x_0)(x-x_1)(x-x_3) \ldots \ldots (x-x_n)}{(x_2-x_0)(x_2-x_1)(x_2-x_3) \ldots (x_2-x_n)} \cdot y_2 + \ldots\\ 
+ \frac{(x-x_0)(x-x_1)(x-x_1) \ldots \ldots (x-x_{n-1})}{(x_n-x_0)(x_n-x_1)(x_n-x_1) \ldots (x_n-x_{n-1})} \cdot y_n. ( 11.6)

Докажем, что многочлен Лагранжа является интерполяционным многочленом, проходящим через все узловые точки, т.е. в узлах интерполирования xi выполняется условие Ln(xi) = yi. Для этого будем последовательно подставлять значения координат узловых точек таблицы (11.1) в многочлен (11.6). В результате получим:

если x=x0, то Ln(x0) = y0,

если x=x1, то Ln(x1) = y1,

:::::

если x=xn, то Ln(xn) = yn.

Это достигнуто за счет того, что в числителе каждой дроби при соответствующем значении уj, j=0,1,2,:,n отсутствует сомножитель (x-xi), в котором i=j, а знаменатель каждой дроби получен заменой переменной х на соответствующее значение хj.

Таким образом, интерполяционный многочлен Лагранжа приближает заданную табличную функцию, т.е. Ln(xi) = yi и мы можем использовать его в качестве вспомогательной функции для решения задач интерполирования, т.е. L_n(x_k) \approx y_k.

Чем больше узлов интерполирования на отрезке [x0,xn], тем точнее интерполяционный многочлен приближает заданную табличную функцию (11.1), т.е. тем точнее равенство:

f(x_k) \approx L_n(x_k).

Однако с увеличением числа узлов интерполирования возрастает степень интерполяционного многочлена n и в результате значительно возрастает объем вычислительной работы. Поэтому при большом числе узлов необходимо применять ЭВМ. В этом случае удобно находить значения функции в промежуточных точках, не получая многочлен в явном виде.

При решении задачи экстраполирования функции с помощью интерполяционного многочлена вычисление значения функции за пределами отрезка [x0,xn] обычно производят не далее, чем на один шаг h, равный наименьшей величине

\left|x_{i+1} - x_i\right|,
так как за пределами отрезка [x0,xn] погрешности, как правило, увеличиваются.

Программирование формулы Лагранжа

Свернем формулу Лагранжа (11.6). В результате получим

Ln(x) = \sum \limits_{j=0}^{n} B_j \cdot y_j,

где

B_j = \prod \limits_{i=0}^{n} \frac{x-x_i}{x_j-x_i},

но при этом обязательно выполнение условия i \neq j.

При построении алгоритма используют конструкцию из двух включенных циклов:

Внешним циклом накапливаем сумму L = \sum \limits_{j=0}^{n} B_j \cdot y_j.

Внутренним циклом накапливаем произведение B_j = \prod \limits_{i=0}^{n} \frac{x-x_i}{x_j-x_i}, i \neq j.

Алгоритм (рис.11.3) не предусматривает получение интерполяционного многочлена в явном виде, а сразу решает задачу интерполирования функции в заданной точке, x=D.

Обозначения в алгоритме:

n - степень интерполяционного многочлена Лагранжа (11.6), равная количеству узловых точек N минус один, т.е. n=N-1.

D - значение аргумента в точке, для которой решается задача интерполирования табличной функции (11.1).

L - значение многочлена (11.6).

Схема алгоритма интерполяции по Лагранжу

Рис. 11.3. Схема алгоритма интерполяции по Лагранжу
Александр Никитин
Александр Никитин

Добрый день.

В расчете параметра Т4 xi суммируется с величиной h/2 ?

Елена Голяева
Елена Голяева
Александр Кудлаев
Александр Кудлаев
Россия