Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Kozlov (1).doc
Скачиваний:
723
Добавлен:
18.03.2016
Размер:
15.9 Mб
Скачать

Полиномиальная (алгебраическая) интерполяция

Если в качестве интерполяционной функции выбран многочлен от од ой переменной: P(x)=a0 + a1·x + a2·x2 + a3·x3 +…+an·xn, такая интерполяция называется алгебраической интерполяцией. В этом случае СЛАУ для определения коэффициентов интерполяционного полинома имеет вид:

AutoShape 38

а ее определитель:

отличен от нуля, так как узлы интерполяции попарно различны. Это известный из курса линейной алгебры определитель Вандермонда. Следовательно, решение задачи алгебраической интерполяции всегда существует и единственно.

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

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

Интерполяционный полином в форме Ньютона

Пусть задана табличная функция. Построим таблицу разделенных разностей

fn

f(xn-1,xn)

f(xn-2,xn-1,xn)

f(x0,x1,…,xn)

Введем обозначениеij, разделенная разность (или разностноеотношение) первого порядка. Очевидно, что.

Вычислим все разностные отношения первого порядка по двум первым точкам (разделенные разности). Определим рекуррентно разделенные разности более высокого порядка.

Теперь можно построить всю таблицу разделенных разностей.

Предположим, что сетка равномерная, т.е. xk=x0+kh.

Если мы вычислим вторую производную в точке x1:

Разделенная разность второго порядка, то она будет аппроксимировать производную второго порядка с точностью до числового множителя 0,5. Если аналогично рассуждать дальше, то разделенная разность порядка kбудет аппроксимировать соответствующую производную с точностью до числового множителя 1/k!.

По данным на сетке наибольший порядок разности, которую возможно вычислить f(x0, x1, … ,xn) - разделенная разностьn-ого порядка.

Определим Pn(x)=f0+f(x0,x1)·(x-x0)+ f(x0,x1,x2)·(x-x0)·(x-x1)+…+ f(x0,x1,...,xn)·(x-x0) ·(x-x1) ·…·(x-xn-1).

Это и есть интерполяционный полином в форме Ньютона. Проверим, что этот полином является интерполяционным. Применим метод математической индукции. Надо проверить совпадения интерполяционного полинома и функции в узлах интерполяции.

x=x0, P(x0)=f0,

x=x1, P1 = и так далее.

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

Пусть некоторая функция y=f(x) задана таблично:

xi

yi

x0

y0

x1

y1

.

.

.

.

.

.

xn

yn

где x0, x1,..., xn- узлы интерполяции.

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

Многочлен Лагранжа, как это было рассмотрено выше, строят следующим образом:

Эту формулу можно записать несколько иначе:

Обозначим , а zi=

Тогда . Запишемв видеи будем вычислять коэффициенты,, … ,

Для n=1

i=0 s0=, a00=-x1, a01=1; i=1 s1=, a10=-x0, a11=1.

Для n=2

i=0 s0=, a00=x1·x2, a01=-(x1+x2), a02=1;

i=1 s1=, a10=x0·x2, a11=-(x0+x2), a12=1;

i=2 s2=, a20=x0·x1, a21=-(x0+x1), a22=1.

Для n=3

i=0 s0=, a00=-x1·x2·x3, a01=(x1·x2+ x1·x3+ x2·x3),

a02=-(x1+x2+x3), a03=1;

i=1 s1=, a10=-x0·x2·x3, a11=(x0·x2+ x0·x3+ x2·x3),

a12=-(x0+x2+x3), a13=1;

i=2 s2=, a20=-x0·x1·x3, a21=(x0·x1+ x0·x3+ x1·x3),

a22=-(x0+x1+x3), a23=1;

i=3 s3=, a30=-x0·x1·x2, a31=(x0·x1+ x0·x2+ x1·x2),

a32=-(x0+x1+x2), a33=1.

Аналогичным образом можно найти коэффициенты для любого значения n.

Алгоритм метода

  1. Ввод исходных данных: таблицы значений xi,yi, i=0,1,2,..,n и с.

  2. Расчет значений si.

  3. Расчет коэффициентов aij.

  4. Расчет Li.

  5. Расчет Ln=.

  6. Расчет Ln(с).

  7. Вывод результатов.

Реализация метода в MS Excel

Исходные данные для расчета:

x

y

0

2,218282

1

1,216526

2

0,159583

3

-0,12842

4

0,020147

5

0,827984

Заполнение клеток листа MS Excel:

Адрес клетки

Содержание

Тип

A2

x

Текст

B2

y

Текст

A3:B8

Исходные данные

Число

A10

c равное 1,5

Число

D2

yi/П(xi-xj)

Текст

K2:F2

а5i а4i а3i а2i а1i а0i соответственно

Текст

N2:R2

x5 x4 x3 x2 x соответственно

Текст

D3

=B3/((A3-A4)*(A3-A5)*(A3-A6)*(A3-A7)* (A3-A8))

Формула

D4

=B4/((A4-A5)*(A4-A6)*(A4-A7)*(A4-A8)* (A4-A3))

Формула

D5

=B5/((A5-A6)*(A5-A7)*(A5-A8)*(A5-A4)* (A5-A3))

Формула

D6

=B6/((A6-A7)*(A6-A8)*(A6-A3)*(A6-A4)* (A6-A5))

Формула

D7

=B7/((A7-A8)*(A7-A3)*(A7-A4)*(A7-A5)* (A7-A6))

Формула

D8

=B8/((A8-A3)*(A8-A4)*(A8-A5)*(A8-A6)* (A8-A7))

Формула

F3:F8

1

Число

G3

=-(A$4+A$5+A$6+A$7+A$8)

Формула

G4

=-(A$3+A$5+A$6+A$7+A$8)

Формула

G5

=-(A$3+A$4+A$6+A$7+A$8)

Формула

G6

=-(A$3+A$4+A$5+A$7+A$8)

Формула

G7

=-(A$3+A$4+A$5+A$6+A$8)

Формула

G8

=-(A$3+A$4+A$5+A$6+A$7)

Формула

H3

=(A4*A5+A4*A6+A4*A7+A4*A8+A5*A6+ A5*A7+A5*A8+A6*A7+A6*A8+A7*A8)

Формула

H4

=(A5*A3+A5*A6+A5*A7+A5*A8+A6*A7+ A6*A8+A6*A3+A7*A8+A7*A3+A8*A3)

Формула

H5

=(A6*A7+A6*A8+A6*A3+A6*A4+A7*A8+ A7*A3+A7*A4+A8*A3+A8*A4+A3*A4)

Формула

H6

=(A7*A8+A7*A3+A7*A4+A7*A5+A8*A3+ A8*A4+A8*A5+A3*A4+A3*A5+A4*A5)

Формула

H7

=(A8*A3+A8*A4+A8*A5+A8*A6+A3*A4+ A3*A5+A3*A6+A4*A5+A4*A6+A5*A6)

Формула

H8

=(A3*A4+A3*A5+A3*A6+A3*A7+A4*A5+ A4*A7+A4*A6+A5*A6+A5*A7+A6*A7)

Формула

I3

=-(A4*A5*A6+A4*A5*A7+A4*A5*A8+ A4*A6*A7+A4*A6*A8+A4*A7*A8+A5*A6*A7+A5*A6*A8+A5*A7*A8+A6*A7*A8)

Формула

I4

=-(A5*A6*A7+A5*A6*A8+A5*A6*A3+ A5*A7*A8+A5*A7*A3+A5*A8*A3+A6*A7*A8+A6*A7*A3+A6*A8*A3+A7*A8*A3)

Формула

I5

=-(A6*A7*A8+A6*A7*A3+A6*A7*A4+ A6*A8*A3+A6*A8*A4+A6*A3*A4+A7*A8*A3+A7*A8*A4+A7*A3*A4+A8*A3*A4)

Формула

I6

=-(A7*A8*A3+A7*A8*A4+A7*A8*A5+ A7*A3*A4+A7*A3*A5+A7*A4*A5+A8*A3*A4+A8*A3*A5+A8*A4*A5+A3*A4*A5)

Формула

I7

=-(A8*A3*A4+A8*A3*A5+A8*A3*A6+ A8*A4*A5+A8*A4*A6+A8*A5*A6+A3*A4*A5+A3*A4*A6+A3*A5*A6+A4*A5*A6)

Формула

I8

=-(A3*A4*A5+A3*A4*A6+A3*A4*A7+ A3*A5*A6+A3*A5*A7+A3*A6*A7+A4*A5*A6+A4*A5*A7+A4*A6*A7+A5*A6*A7)

Формула

J3

=A4*A5*A6*A7+A4*A5*A6*A8+A4*A5*A7*A8+A4*A6*A7*A8+A5*A6*A7*A8

Формула

J4

=A5*A6*A7*A8+A5*A6*A7*A3+A5*A6*A8*A3+A5*A7*A8*A3+A6*A7*A8*A3

Формула

J5

=A6*A7*A8*A3+A6*A7*A8*A4+A6*A7*A3*A4+A6*A8*A3*A4+A7*A8*A3*A4

Формула

J6

=A7*A8*A3*A4+A7*A8*A3*A5+A7*A8*A4*A5+A7*A3*A4*A5+A8*A3*A4*A5

Формула

J7

=A8*A3*A4*A5+A8*A3*A4*A6+A8*A3*A5*A6+A8*A4*A5*A6+A3*A4*A5*A6

Формула

J8

=A3*A4*A5*A6+A3*A4*A5*A7+A3*A4*A6*A7+A3*A5*A6*A7+A4*A5*A6*A7

Формула

K3

=-A4*A5*A6*A7*A8

Формула

K4

=-A5*A6*A7*A8*A3

Формула

K5

=-A6*A7*A8*A3*A4

Формула

K6

=-A7*A8*A3*A4*A5

Формула

K7

=-A8*A3*A4*A5*A6

Формула

K8

=-A3*A4*A5*A6*A7

Формула

N3

=F3*$D3

Формула

N4

=F4*$D4

Формула

N5

=F5*$D5

Формула

N6

=F6*$D6

Формула

N7

=F7*$D7

Формула

N8

=F8*$D8

Формула

O3

=G3*$D3

Формула

O4

=G4*$D4

Формула

O5

=G5*$D5

Формула

O6

=G6*$D6

Формула

O7

=G7*$D7

Формула

O8

=G8*$D8

Формула

P3

=H3*$D3

Формула

P4

=H4*$D4

Формула

P5

=H5*$D5

Формула

P6

=H6*$D6

Формула

P7

=H7*$D7

Формула

P8

=H8*$D8

Формула

Q3

=I3*$D3

Формула

Q4

=I4*$D4

Формула

Q5

=I5*$D5

Формула

Q6

=I6*$D6

Формула

Q7

=I7*$D7

Формула

Q8

=I8*$D8

Формула

R3

=J3*$D3

Формула

R4

=J4*$D4

Формула

R5

=J5*$D5

Формула

R6

=J6*$D6

Формула

R7

=J7*$D7

Формула

R8

=J8*$D8

Формула

S3

=K3*$D3

Формула

S4

=K4*$D4

Формула

S5

=K5*$D5

Формула

S6

=K6*$D6

Формула

S7

=K7*$D7

Формула

S8

=K8*$D8

Формула

M10

аj

Текст

N10

=СУММ(N3:N8)

Формула

O10: S10

Автозаполнение формулой из N10

Формула

B10

=N9*A10^5+O9*A10^4+P9*A10^3+Q9*A10^2+ R9*A10+S9

Формула

Вид листа MS Excel.

Ответ: Интерполяционная функция 0,01426·х5-0,1908·х4+0,92568·х3-1,6829·х2-0,068·х+2,2183 и значение функции в точке с=1,5 равно 0,59628.

Реализация в MatLab

Дано: таблица значений функции

x

y

0

2,218282

1

1,216526

2

0,159583

3

-0,12842

4

0,020147

5

0,827984

точка с=1,5.

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

Решение. Воспользуемся интерполяционной формулой Лагранжа

Составим функцию, реализующую расчет по этой формуле.

function L = lagrang(x,y,c)

% вычисление интерполяционного полинома в форме Лагранжа

% x - массив координат узлов

% y - массив значений интерполируемой функции

% c - значение аргумента, для которого надо вычислить значение функции

% L - значение функции в точке с

% число узлов интерполяции

N=length(x);

% обнуляем L

L=0;

for k=1:N

t=1;

for j=[1:k-1,k+1:N]

t=t*(с-x(j))/(x(k)-x(j));

end

L=L+y(k)*t;

end

end

Сохраним эту функции в файле lagrang.m.

Реализация функции в MatLab:

В командном окне введем следующие команды:

% Задаем значения х

>> x=0:1:5;

% Задаем значения у

>> y=[2.218282 1.216526 0.159583 -0.12842 0.020147 0.827984];

% Задаем значение с

>> с=1.5;

>> L=lagrang(x,y,с);

Реализация в MatLab:

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

x

y

0,1

0,0398

0,15

0,0596

0,2

0,0793

0,25

0,0987

0,3

0,1179

0,35

0,1368

Найти интерполяционную функцию по методу Лагранжа и рассчитать значение функции в точке 0,22.

Решение задачи средствами MS Excel

Скопируем диапазон клеток A2:S10 с листа MS Excel с предыдущим расчетом и вставим на новый лист в клетки A6:S14. В клетки A7: B12 введем исходные данные и получим коэффициенты интерполяционной функции. В клетку А14 запишем значение 0,22 и клетке В14 увидим значение у (0,22). Найдем расчетное значение функции Лапласа по формуле и запишем в клетку В15.

Вид листа MS Excel.

Ответ: Интерполяционная функция -13,33·х5+15,333·х4-6,833·х3+1,4217·х2+0,2582·х+0,005 и значение функции в точке с=0,22 равно 0,08709, которое хорошо согласуется с значением по формуле Лапласа.

Решение задачи в MatLab

Решение рассматриваемого примера показано на рисунке:

Ответ: значение функции в точке 0,22 равно 0,0871.

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