Файл: Эксперименты лаба4,5(2курс).pdf

ВУЗ: Не указан

Категория: Не указан

Дисциплина: Не указана

Добавлен: 06.04.2021

Просмотров: 106

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
background image

В результате получаем

N

(

x

) =

N

(

x

0

+

th

) =

y

0

+

t

y

0

+

t

(

t

1)

2!

2

y

0

+

...

+

+

t

(

t

1)

...

(

t

n

+ 1)

n

!

n

y

0

.

(16)

Полученное выражение называется первым интерполяционным много-
членом Ньютона для интерполирования вперед. Оно справедливо на всем
отрезке

[

x

0

, x

n

]

, но для уменьшения ошибок округления разумно исполь-

зовать его только для левой половины рассматриваемого отрезка.

Полученная формула для интерполирования вперед практически

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

Интерполирующий полином запишем в следующем виде:

N

(

x

) =

a

0

+

a

1

(

x

x

n

) +

a

2

(

x

x

n

)(

x

x

n

1

) +

...

+

a

n

(

x

x

x

)(

x

x

n

1

)

...

(

x

x

1

)

.

(17)

Из условия совпадения значения многочлена и функции в узлах находим:

N

(

x

n

) =

y

n

a

0

=

y

n

,

N

(

x

n

1

) =

y

n

1

y

n

+

a

1

(

h

) =

y

n

1

a

1

=

y

n

y

n

1

h

=

y

n

1

h

.

Аналогично находим

a

2

=

y

n

2

y

n

1

+

y

n

2

2

h

2

=

2

y

n

2

2

h

2

,

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

a

k

=

k

y

n

k

k

!

h

k

.

Подставляя найденные коэффициенты в (17), получаем

N

(

x

) =

y

n

+

y

n

1

1!

h

(

x

x

n

) +

2

y

n

2

2!

h

2

(

x

x

n

)(

x

x

n

1

) +

...

+

+

n

y

0

n

!

h

n

(

x

x

n

)

...

(

x

x

1

)

.

(18)

6


background image

Делая замену

t

=

x

x

n

h

, окончательно находим

N

(

x

) =

N

(

x

n

+

th

) =

y

n

+

t

y

n

1

+

t

(

t

+ 1)

2!

2

y

n

2

+

...

+

+

t

(

t

+ 1)

...

(

t

+

n

1)

n

!

n

y

0

.

(19)

Формула (19) – второй интерполяционный многочлен Ньютона для ин-
терполирования назад.

Отметим, что существует один и только один интерполяционный мно-

гочлен при заданном наборе узлов интерполяции. Формулы Лагранжа,
Ньютона и др. порождают один и тот же многочлен, разница состоит в
алгоритме их построения.

3.3.

Точность интерполяции

Значения интерполяционного многочлена

y

=

ϕ

(

x

)

и рассматривае-

мой функции

y

=

f

(

x

)

в узлах

x

=

x

i

,

(

i

= 0

,

1

, ..., n

)

в точности совпада-

ют. Если исследуемая функция — многочлен степени

n

, то

f

(

x

)

ϕ

(

x

)

.

В остальных случаях разность

R

(

x

) =

f

(

x

)

ϕ

(

x

)

6

= 0

.

Очевидно, что

R

(

x

)

есть погрешность интерполяции и называется оста-

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

R

L

(

x

) =

(

x

x

0

)(

x

x

1

)

...

(

x

x

n

)

(

n

+ 1)!

f

(

n

+1)

(

x

0

)

.

(20)

В этой формуле

f

(

n

+1)

(

x

0

)

– производная

(

n

+ 1)

-го порядка функции

f

(

x

)

в некоторой точке

x

0

[

x

0

, x

n

]

.

Из анализа (20) следует, что погрешность интерполяции тем выше,

чем ближе точка

x

лежит к концам отрезка

[

x

0

, x

n

]

. Если же использо-

вать интерполяционный многочлен вне отрезка

[

x

0

, x

n

]

, то погрешность

возрастает очень заметно.

Остаточный член интерполяцинного многочлена Ньютона для случая

равноотстоящих узлов следует из (20)

R

N

(

x

) =

t

(

t

1)

...

(

t

n

)

(

n

+ 1)!

f

(

n

+1)

(

x

0

)

h

n

+1

,

t

=

x

x

0

h

.

(21)

7


background image

Из вида остаточного члена следует, что повышение степени интерпо-

ляционного многочлена уменьшает погрешность, однако из-за неясного
поведения

f

(

n

+1)

(

x

)

возможны проблемы. Поэтому на практике для по-

вышения точности целесообразно уменьшать шаг и выбирать специаль-
ное расположение узлов (например, сгущая их к концам отрезка). При
этом, как правило, стараются использовать многочлены малой степени.

3.4.

Задания для самостоятельной работы

Построить интерполяционный многочлен по заданным таблицам

а) в форме Лагранжа;
б) в форме Ньютона.

1.

x

i

0.2

0.5

1

y

i

0.2386693308 0.7294255386 1.841470985

x

i

1.5

2

2.2

y

i

3.247494987

4.909297427

5.648496404

2.

x

i

6.0

6.3

6.6

y

i

34.286714820 39.701203180 41.70367307

x

i

6.75

6.9

7.5

y

i

41.13764565

39.41511178

20.43623661

3.

x

i

2.2

2.4

2.8

y

i

2.4114988830 2.2626062840 2.057777659

x

i

3.2

3.4

3.8

y

i

2.001705224

2.033201807

2.209032288

4.

x

i

2.0

2.2

2.4

y

i

2.9835460860 4.0403875470 4.756899984

x

i

2.6

2.8

3.2

y

i

4.373250602

2.640288276

-1.283458022

5.

x

i

0.1

0.3

0.5

y

i

9.9833416650

3.283557852

1.917702154

x

i

0.7

1.1

1.5

y

i

1.314729974

0.7365350083 0.4433311052

8


background image

6.

x

i

4.0

4.3

4.5

y

i

2.4323981290 2.3608144630 2.348313255

x

i

4.6

4.7

4.9

y

i

2.351940650

2.361751112

2.398498400

7.

x

i

1.4

1.6

1.8

y

i

2.4323981290 4.2961499960 5.844778271

x

i

2.2

2.4

2.6

y

i

8.719672866

9.428320962

9.134725689

8.

x

i

2.0

2.3

2.9

y

i

3.4864546310 4.0469158410 5.932133517

x

i

3.2

3.8

5.0

y

i

7.354448569

11.55532021

29.73936426

9.

x

i

0.2

0.4

0.6

y

i

0.6896558743

1.390438928

1.774466077

x

i

0.8

1.0

1.2

y

i

1.503270954

0.3836039536 -1.469219613

10.

x

i

1.2

1.25

1.35

y

i

4.168650116

4.426278450

3.896391075

x

i

1.40

1.45

1.50

y

i

2.748858752 0.7599941296 -2.194454593

3.5.

Примеры процедур в среде Maple

3.5.1.

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

Для наглядности, построим таблицу значений функции, аналитиче-

ский вид которой известен.

> restart;
> f:=x-> ln(x)-(sin(x))ˆ 2-exp(x); # аналитический вид функции
> n:=5; # количество шагов
> x0:=1; # первый узел интерполирования
> sh:=0.2; # шаг интерполирования

# задание узлов интерполирования и значений функции в этих узлах
> for i from 0 to n do

9


background image

x[i]:=x0+sh*i; y[i]:=f(x[i]);
end do;

# Процедура создания интерполяционного многочлена в форме Лагран-

жа

> lagr:=proc(n,x,y,xx)
# n — количество узлов интерполяции (степень интерполяционного

многочлена)

# x — узлы интерполяции
# y — значения функции в узлах интерполяции
# xx — неизвестная переменная в интерполяционном многочлене

local i,j,s,sl;

# i, j — переменные циклов
# sl — слагаемое в интерполяционном многочлене
# s — переменная, для накопления суммы слагаемых (многочлен

Лагранжа)

s:=0;
for i from 1 to n do sl:=y[i];
for j from 1 to n do

# получение слагаемых

if (i<>j) then sl:=sl*(xx-x[j])/(x[i]-x[j]); end if;
end do;

# накопление всех слагаемых — образование многочлена Лагранжа

s:=s+sl;
end do;
return s;
end proc;

> poll:=z-> lagr(n,x,y,z);
# сравнение функции с построенным интерполяционным многочле-

ном

> plot([f(x),poll(x)],x=0..2);

3.5.2.

Построение интерполяционного многочлена Ньютона

Для наглядности, построим таблицу значений функции, аналитиче-

ский вид которой известен.

> restart;
# представление функции в аналитическом виде
> yf :=x->sin(x)*ln(x);
# количество шагов, первый узел и шаг интерполирования
> N := 20: x0 := 1: h := 0.2:

10