
Интерполяционный многочлен Лагранжа
Пусть функция y=f(x) задана таблицей. Построим интерполяционный многочлен Ln(x), степень которого не больше n и выполняются условия: Ln(x) =уi i = 0, 1, ..., п. Будем искать Ln(x) в виде
Ln(x)
= р0(х)у0
+ р1(х)у1
+ ... + рп(х)уп
=
рi(х)уi,
где рi(х) — многочлен степени п;
,
т. е. рi(х)
только в одной точке
отличен от нуля при i=j,
а в остальных точках
он обращается в нуль. Следовательно,
все эти точки являются для него корнями:
pi(x) = с(х - х0)(х – х1)...(х – хi-1)(х – хi+1)...(х – хn);
При x = xi
pi(xi) = с(xi – x0)(хi – x1)...(хi – хi-1)(хi – хi+1)...(хi – хn);
с = [(xi - х0)(хi – хi)...(хi – хi-1)(хi – хi+1)...(хi – хn)]-1;
подставим с в формулу pi(x), получим:
отсюда
Это и есть интерполяционный многочлен Лагранжа. По неполной таблице формула позволяет весьма просто составить внешний вид многочлена.
Пример 1. Построить интерполяционный многочлен Лагранжа для функции, заданной таблично
X |
1 |
2 |
3 |
5 |
Y |
1 |
5 |
14 |
81 |
Решение
Степень Ln(x) не выше третьей, так как функция задается четырьмя значениями:
Пример 2. Для
функции у = sin(
x)
построить интерполяционный полином
Лагранжа, выбрав узлы х0
= 0; x1
=
; х2
=
Решение
Вычислим соответствующие значения функции:
у0
=
0;
Применяя формулу, получаем
Пример 3. Построить интерполяционный полином Лагранжа для двух узлов интерполяции:
x |
x0 |
x1 |
y |
y0 |
y1 |
x |
1 |
3 |
y |
1 |
9 |
Решение
N= 0, 1 (два узла интерполяции).
— уравнение прямой, проходящей через точки (х0, у0), (х1, у1);
Пример 4. Построить интерполяционный полином Лагранжа для трех узлов интерполяции:
x |
1 |
3 |
4 |
y |
12 |
4 |
6 |
x |
x0 |
x1 |
x2 |
y |
y0 |
y1 |
y2 |
Решение
N= 0, 1, 2 (три узла интерполяции).
- уравнение параболы, проходящей через точки (x0, y0), (x1, y1), (x2, y2);
Построим график этой функции (рис. 1) и отметим на нем узловые точки Мi(хi, уi).
Рис 1. График полученной функции (к примеру 4)
Пример 5. Найти приближенное значение функции f(arg) при данном значении аргумента arg с помощью интерполяционного многочлена Лагранжа, если функция задана таблицей
x |
x0 |
x1 |
... |
xn |
y |
y0 |
y1 |
… |
yn |
arg=… |
Программа________________________________________
program Lagrange;
uses Crt;
var X, Y : array[1.. 100] of Real;
Arg, L, F : Real;
I, J, N integer;
begin
Write('Введите количество узлов интерполяции');
Readln(n);
Writeln ('В ведите таблицу значений xi, yi');
for I:=0 to N do begin
Write('X[',I,']='); ReadLn(X[I]);
Write('Y[',I,']^); ReadLn(Y[I]);
end;
Write('Введите аргумент '); Readln(Arg);
L:=0;
For I:—0 to N do begin
F:=l;
for J:=0 to N do
if IOJ then F:=F*(Arg-X[J])/(X[I]-X[J]);
F:=F*Y[I]; L:=L+F;
end;
Writeln('Значение многочлена Лагранжа в точке ',Arg:0:3);
Writeln('Равно ', L:0:3);
Readln;
end.