Інтерполяційний поліном Лагранжа застосовують при наближенні табличних записів даних у вигляді функції, яка є досить добрим наближенням останньої, якщо та мало осцилює і може давати велику похибку, якщо для функцій зі швидкозмінною похідною вибрана мала кількість вузлів інтерполяції.

В загальному - задано таблицю даних вигляду

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

Потрібно побудувати поліном, який би у вузлах Х[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
alt=

Після сумування доданків, та розкладу в ряд отримаємо поліном з дробовими коефіцієнтами
> 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);

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

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