Файл: Вычислительный эксперимент и методы вычислений.pdf

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

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

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

Добавлен: 04.04.2021

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

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

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
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

21


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

22


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:

23


background image

Рис. 8. Графики исходной (

f

(

x

) = ln

x

sin

2

x

e

x

) и интерполирующей

функций

> for i from 0 to N do
# построение таблицы значений функции в узлах интерполяции

x[i] := x0+h*i; y[i] := yf(x[i])
end do:

# Процедура построения конечных разностей
> DeltaY := proc (k, i)
# k — порядок i-той конечной разности

if k = 1 then return y[i+1]-y[i]
else
return DeltaY(k-1, i+1)-DeltaY(k-1, i)
end if;
end proc;

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

тона

> Ntn:=proc(x)
# x — неизвестная переменная в интерполяционном многочлене

local S, A , i, j, t;

# S — переменная, для накопления суммы слагаемых (многочлен

Ньютона)

# A — слагаемое в интерполяционном многочлене
# i, j — переменные циклов

global N,h,x0;
t:=(x-x0)/h;
S:=0;
for i from 0 to N do
if i=0 then A:=y[i]
else
A:=DeltaY(i,0)/i!;

24


background image

for j from 1 to i do
A:=evalf(A*(t-j+1)) # получение слагаемых
end do;
end if;

# накопление всех слагаемых — образование многочлена Ньютона

S:=S+A;
end do;
return S;
end proc;

# сравнение функции с построенным интерполяционным многочле-

ном

> plot([Ntn(x),yf(x)],x=0..3);

Рис. 9. Графики исходной функции

f

(

x

) = sin

x

ln

x

и интерполирующей

функции

4.

Численное интегрирование

Пусть на отрезке

[

a, b

]

задана функция

y

=

f

(

x

)

. Разобьем отрезок

на

n

элементарных отрезков

[

x

i

1

, x

i

]

(

i

= 1

,

2

, ..., n

). На каждом из этих

отрезков выберем произвольную точку

ξ

i

и составим сумму произведений

значения функции

f

(

ξ

i

)

на длину отрезка

x

i

:

S

n

=

n

X

i

=1

f

(

ξ

i

)∆

x

i

,

(45)

S

n

– интегральная сумма.

Определенным интегралом от функции

f

(

x

)

на отрезке

[

a, b

]

называ-

ется предел интегральной суммы при неограниченном увеличении числа

25