Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Calculus_of_approximations.doc
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
1.89 Mб
Скачать

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

Пусть функция y=f(x) задана таблицей (*). Построим интерполяционный многочлен Ln(x) степень которого не больше n, и выполняются условия (3.1): Ln(xi)=yi, i=0, 1, …, n

Будем искать Ln(x) в виде , где pi(x) многочлен степени n и , т.е. pi(x) только в одной точке отличен от нуля при i=j, а остальных точках он обращается в нуль. Следовательно, все эти точки являются для него корнями:

pi(x)=c(x-x0)(x-x1)…(x-xi-1)(x-xi+1)…(x-xn)

при x=xi

pi(xi)=c(xi-x0)(xi-x1)…(xi-xi-1)(xi-xi+1)…(xi-xn)

1=c(xi-x0)(xi-x1)…(xi-xi-1)(xi-xi+1)…(xi-xn)

c=[(xi-x0)(xi-x1)…(xi-xi-1)(xi-xi+1)…(xi-xn)]-1

подставим с в формулу pi(x), получим

отсюда

(3.2)

Это и есть интерполяционный многочлен Лагранжа. По таблице (*) формула (3.2) позволяет весьма просто составить внешний вид многочлена.

x

x0

x1

y

y0

y1

x

1

3

y

1

9

Пример 1.

N=1 (два узла интерполяции)

– уравнение прямой, проходящей через точки (x0, y0), (x1, y1)

Пример 2.

N=2 (три узла интерполяции)

x

x0

x1

x2

y

y0

y1

y2

x

1

3

4

y

12

4

6

– уравнение параболы, проходящей через точки (x0, y0), (x1, y1), (x2, y2)

П остроим график этой функции и отметим на нем узловые точки Mi(xi, yi)

З Рис 3.1 адача 1.

Найти приближенное значение функции f(arg) при данном значении аргумента arg с помощью интерполяционного многочлена Лагранжа, если функция задана таблицей.

x

x0

x1

xn

y

y0

y1

yn

arg=…

Алгоритм:

{Программа 3.1}

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:=1;

for J:=0 to N do

if I<>J 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.

Задача 2.

x

x0

x1

x2

y

y0

y1

y2

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

Решение: см. выше пример 2.

Варианты самостоятельных работ для задачи 1 и задачи 2 см. Приложение 2

3. Вычисление приближенного значения функции с помощью электронных таблиц

Напомним формулу интерполяционного многочлена Лагранжа:

Введем обозначения:

тогда (3.3)

По этой формуле удобно вычислять многочлен Лагранжа Ln(x) в таблице.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]