Многочлен Лагранжа. Построение в Maple

Интерполяционный многочлен Лагранжа применяют при приближении табличных записей данных в виде функции, которая является очень хорошим приближением, если та мало осциллирует и может давать большую погрешность, если для функций со быстросменной производной выбрана малое количество узлов интерполяции

В общем — задано таблицу данных вида

таблица данных

Нужно построить полином, который бы в узлах Х[i] принимал значение Y[i].

Эту проблему решил Лагранж, а искомый полином имеет вид

полином Лагранжа, формула

где полиномы на единицу меньшего порядка чем количество данных, вычисляют по формуле

лагранжевие коэффициенты, формула

Функции называют лагранжевими коэффициентами, они обладают свойством
свойство лагранжевых коэффициентов
Многочлен вида

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

называют интерполяционным многочленом Лагранжа.

Задача 1. Для функции у=cos(Pi*x) построить интерполяционный полином Лагранжа . За узлы интерполяции взять точки x[0]=0; x[1]=1/4; x[2]=1/3; x[3]=1/2. Изобразить функцию и узлы на графике, а также построить оригинал.

Решение:

Вычисляем значения функции в узлах

значение функции в узлах интерполяции
значение функции в узлах интерполяции
значение функции в узлах интерполяции
значение функции в узлах интерполяции

и приводим в виде таблицы

таблица

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

интерполяционный многочлен Лагранжа
интерполяционный многочлен Лагранжа
интерполяционный многочлен Лагранжа

Упрощение вручную мы делать не будем.

Используем для этого математический пакет Maple, в нем задачи по высшей математике , физике, механике , химии решают очень быстро.

Задаем значение функции
> restart;
> with(plots):
>x[0]:=0; x[1]:=1/4;x[2]:=1/3;x[3]:=1/2;

В цикле находим значение функции в точках интерполяции
> for i from 0 to 3 do y[i]:=cos(Pi*x[i]) end do;

Далее строим интерполяционный многочлен
> F:=y[0]*(t-x[1])*(t-x[2])*(t-x[3])/((x[0]-x[1])*(x[0]-x[2])*(x[0]-x[3]))+y[1]*(t-x[0])*(t-x[2])*(t-x[3])/((x[1]-x[0])*(x[1]-x[2])*(x[1]-x[3]))+y[2]*(t-x[0])*(t-x[1])*(t-x[3])/((x[2]-x[0])*(x[2]-x[1])*(x[2]-x[3]));

полином Лагранжа в Maple
полином Лагранжа в Maple

Здесь использована переменная t ,поскольку переменная x имеет тип массива и не может быть использована . Для удобства раскладываем (series) полином Лагранжа по степеням переменой
> G:=series(F,t,4);

Поскольку при переменных в коэффициентах содержатся корни , то округляем (evalf) их до целых значений . В результате получаем функцию третьей степени.
> G1:=evalf(G);

Далее реализуем построение графиков этой функции , оригинала , и значение функции в точках интерполяции .

> Q1:=plot(G1,t=0..1/2,color=black,thickness=2):
> Q2:=plot(cos(Pi*x),x=0..1/2,color=blue,thickness=2):

Записываем функцию отображения суперпозиции графиков

> display(Q1,Q2);

интерполяционный многочлен Лагранжа, график

Из графика убеждаемся, что разницы между функцией и оригиналом практически нет.

Рассмотрим другую задачу.

Задача 2.

Данная таблица экспериментальных данных.

таблица экспериментальных данных

Построить интерполяционный полином Лагранжа, а также графики полинома и таблично заданной функции

Решение:

Построим интерполяционный полином Лагранжа по приведенной выше формуле . Для табличных данных он будет иметь достаточно громоздкий вид, поэтому возьмем только его формулу, а остальной анализ выполним в Maple.

интерполяционный многочлен Лагранжа
интерполяционный многочлен Лагранжа
интерполяционный многочлен Лагранжа
интерполяционный многочлен Лагранжа
интерполяционный многочлен Лагранжа
интерполяционный многочлен Лагранжа

Далее подобные выкладки выполним в Maple. Задаем узлы и значения функции в узлах
> restart; with(plots):
> x[0]:=-1; x[1]:=2;x[2]:=5;x[3]:=6;x[4]:=8;x[5]:=10;
> y[0]:=1;y[1]:=-2;y[2]:=3;y[3]:=7;y[4]:=2;y[5]:=-2;

Далее строим интерполяционный полином Лагранжа . Если правой кнопкой мыши выбрать опцию Standard Math то увидим следующую запись полинома

полином Лагранжа в Maple
многочлен Лагранжа Лагранжа в Maple
многочлен Лагранжа

После суммирования слагаемых и разложения в ряд получим полином с дробными коэффициентами
> G:=series(F0+F1+F2+F3+F4+F5,t,6);

разложение функции в Maple

которые после округления упрощаем к виду
> G1:=evalf(G);

Выполняем построение многочлена Лагранжа
> Q1:=plot(G1,t=-1.5..10.5,color=blue, thickness=2):
> Q2:=plot([[x[0],y[0]],[x[1],y[1]],[x[2],y[2]],[x[3],y[3]],[x[4],y[4]],[x[5],y[5]]],style=point):
> display(Q1,Q2);

интерполяционный многочлен Лагранжа, график

На этом знакомство с интерполяционным полиномом Лагранжа завершается. Используйте многочлен Лагранжа при приближении табличных данных функциями, а также математические программы для упрощения вычислений.

Ссылка на основную публикацию