Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Информатика.-5

.pdf
Скачиваний:
9
Добавлен:
05.02.2023
Размер:
528.67 Кб
Скачать

51

линии, соединяющей точки (рис. 4.7а). Если можно использовать узлы x1 и x2 , которые лежат на интервале [1;1], значит, линия пересекает кривую в двух точках (x1; f (x1)) и (x2 ; f (x2 )) , и площадь под линией лучше приближает площадь под кривой (рис. 4.7б).

Y

Y

 

y = f (x)

y = f (x)

y1

 

y2

-1

 

 

 

0

 

1

X

 

-1

 

 

x1

0

x2

 

1

X

 

 

 

 

а)

 

 

 

 

 

 

 

 

 

 

 

б)

 

 

 

 

 

Рис. 4.7. Аппроксимация трапецией, использующей абсциссы -1 и 1 (а) и x1 и x2 (б)

Уравнение линии имеет вид y = f (x1) +

 

(x x1) ( f (x2 ) f (x1))

.

 

 

 

 

 

 

 

 

 

x2 x1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Площадь трапеции под линией равна S =

 

2x2

 

 

f (x1)

2x1

 

f (x2 ) .

 

 

x2

x1

x2 x1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Можно убедиться, что формула трапеции является частным случаем данной

формулы, если подставить в нее x1 = −1, x2 =1 и h = 2 , то

 

 

 

 

 

S =

2

f (x )

2 f (x ) = f (x ) + f

(x

)

= I

 

.

 

 

 

 

 

 

 

 

Тр

 

 

 

 

 

 

 

 

2

 

1

2

2

1

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Согласно методу Гаусса-Лежандра приближенное значение интеграла определяется

с помощью весового суммирования значений функции в двух точках по формуле

 

1

f (x)dx ≈ ω1 f (x1) + ω2 f (x2 )

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Значения абсцисс x1 и x2 и весов ω1

и ω2 выбирается из условия, что данная

формула будет точной для четырех функций:

 

f (x) =1,

x , x2

 

и x3 .

Четыре

интегральных условия имеют вид

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f (x) =1:

 

 

1 1dx = 2 = ω1 + ω2 ,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

52

f (x) = x :

 

 

1

xdx = 0 = ω1 x1 + ω2 x2 ,

 

 

 

 

 

 

 

1

 

 

 

 

f (x) = x2 :

 

 

1 x2dx =

2

= ω1 x12 + ω2 x22

,

 

3

 

 

 

 

 

 

1

 

 

 

f (x) = x3 :

 

 

1 x3dx = 0 = ω1 x13 + ω2 x23 .

 

 

 

 

 

 

 

1

 

 

 

 

Решим систему нелинейных уравнений:

 

ω1 + ω2 = 2

 

 

 

 

 

 

 

 

 

ω x + ω x

2

= 0

 

 

 

 

 

 

1

1

2

 

2

 

 

 

 

 

 

ω x2

+ ω x2

=

 

 

 

 

 

 

 

 

 

 

 

 

1

1

2

2

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ω x3

+ ω x3

= 0

 

 

 

 

 

 

 

 

 

 

 

 

1

1

2

2

 

 

 

 

 

 

 

 

 

Запишем

 

второе и

четвертое

уравнение

в виде

ω1 x1 = −ω2 x2

и

ω x3

= −ω x3

. Разделив

четвертое

уравнение на

второе,

получим x2

= x2

или

1

1

2

2

 

 

 

 

1

2

 

x1 = −x2 . Подставив это соотношение во второе уравнение системы, получим ω1 = ω2 .

Подставив полученное соотношение в первое уравнение системы, получим ω1 = ω2 =1.

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

ω x2

+ ω x2

= x2

+ x2

=

2

 

или x2

=

1

.

 

 

 

 

 

 

 

 

 

 

 

 

 

1

1

2

2

1

 

2

3

 

 

2

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Отсюда следует, что

x

=

1

 

,

x = −

1

 

. Таким образом, значение интеграла,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

3

 

1

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

найденное методом Гаусса-Лежандра по двум точка, вычисляется по формуле

1

 

 

 

1

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f (x)dx

 

 

 

 

 

 

 

 

 

 

 

 

 

 

f

 

 

 

+

f

 

 

 

 

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

3

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Данная формула имеет степень точности равную 3.

 

 

 

1

 

 

 

1

 

 

1

 

 

 

 

 

 

 

 

 

 

 

f (4)

(c)

 

f (x)dx =

f

 

 

 

+

f

 

 

 

 

 

 

+ E2 ( f ) , где E2

( f ) =

 

 

.

 

 

3

 

135

1

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Пример. Определить значение интеграла 1

 

dx

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1 x + 2

 

 

 

 

 

Точное значение интеграла находится по формуле

53

1

dx

= ln(x + 2)

 

1

= ln(3) ln(1) = ln(3) 1,09861.

 

 

 

 

1 x + 2

 

 

1

 

 

 

 

 

Вычисление данного интеграла методом трапеций с шагом h = 2 дает значение

1 dx

 

 

2

 

1

 

 

 

1

 

 

=1+ 0,33333 1,33333 .

 

 

 

=

 

 

 

+

 

 

 

 

 

1 x +

 

 

 

 

 

 

 

2

 

2

 

1+ 2

 

1

+

2

 

Вычисление данного интеграла методом парабол с шагом h =1 дает значение

1 dx

 

 

1

 

 

1

+ 4

 

1

 

 

 

1

 

 

 

1

 

 

1

+ 2

 

1

 

10

1,11111.

 

 

 

=

 

 

 

 

 

 

+

 

 

 

 

 

=

 

 

 

+

 

 

=

 

 

1 x +

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

3

 

1+ 2

 

0

+ 2

 

1

+

2

 

3

 

 

 

 

3

 

9

 

Вычисление интеграла методом Гаусса-Лежандра по двум точкам дает значение

1

dx

 

=

 

1

+

 

1

= 0,70291+ 0,38800 1,09091.

 

 

 

1

 

 

1

 

1 x +

2

 

 

+ 2

 

 

+ 2

 

 

 

3

 

 

3

 

 

 

 

 

 

 

 

 

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

Относительные погрешности вычислений интеграла составили: для метода трапеций 21%; для метода парабол 1,14%; для метода Гаусса-Лежандра 0,7%.

Если требуется вычислить значение интеграла на интервале [a;b] , то требуется выполнить замену переменной

x = a +2 b + b 2 a t , dx = b 2 a dt ,

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

b

 

 

 

1

a + b

 

 

b a

 

 

 

b a

 

b a

1

 

a + b

 

b a

 

 

f (x)dx =

f

 

 

 

+

 

 

 

t

 

 

 

 

dt =

 

 

 

f

 

 

+

 

t

dt .

 

2

 

2

2

 

 

2

 

 

2

a

 

 

1

 

 

 

 

 

 

 

 

 

1

 

2

 

 

 

Пример. Вычислить интеграл 2

6x5dx .

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

В данном случае a = 0 , b = 2,

f (x) = 6x5 . Проводим замену переменной

 

x =

0 + 2

+

2 0

t =1+ t ,

dx =

2 0

dt = dt . Получаем интеграл

 

 

 

 

2

 

 

2

 

 

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

5

1

 

 

 

5

 

 

 

 

 

 

 

1

5

 

 

 

 

1

5

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

6x

dx =

6 (1+ t)

dt

= 6

 

1+

 

 

 

 

 

+ 6

1+

 

 

 

 

= 58,66667 .

 

 

 

 

 

 

 

 

 

 

 

0

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

3

 

 

 

 

 

 

 

54

Пример. Вычислить интеграл 1

sin(x)

dx .

 

 

 

 

 

 

 

 

 

 

 

0

x

 

 

В данном случае a = 0 , b =1,

f (x) =

sin(x)

. Проводим замену переменной

x

 

 

 

 

 

 

 

 

 

 

 

 

 

x =

0 +1 +

10 t =

1+ t

, dx = 10

dt =

1 dt .

 

2

2

 

 

 

 

2

 

 

2

 

 

2

Получаем интеграл

 

 

 

 

 

 

 

 

 

 

 

 

1 sin

 

1+ t

 

 

 

 

1

 

 

 

2

 

1

 

 

 

sin(x) dx

= 1

 

 

 

 

dt = sin(0,5 + 0,5t) dt = 0,94604.

 

1+ t

 

0

x

2

1

 

 

1

1+ t

 

 

 

 

 

 

 

2

 

 

 

 

 

 

При вычислении значения интеграла методом Гаусса-Лежандра по трем точкам значение интеграла находится по формуле

1

f (x)dx ≈ ω1 f (x1) + ω2 f (x2 ) + ω3 f (x3 ) .

 

 

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Значения абсцисс x1 , x2 , x3 и весов ω1 , ω2 , ω3 выбирается из условия, что

данная формула будет точной для шести функций:

f (x) =1, x , x2 , x3 , x4 и x5 . В

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

 

 

 

 

 

 

 

 

 

 

 

 

 

x = − 0,6 ,

x

= 0 ,

x =

0,6 , ω

=

5

,

ω

=

8

, ω

=

5

,

 

 

 

 

1

 

 

2

 

3

1

 

9

 

 

2

9

 

3

9

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

f (x)dx

5

 

f (

0,6) +

 

8

f (0)

+

 

5

 

f (

0,6) .

 

 

 

 

 

 

 

 

 

 

 

1

9

 

 

 

9

 

 

9

 

 

 

 

 

 

 

 

 

Данная формула имеет степень точности равную 5. E3 ( f ) = f (6) (c) 15750

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

55

Таблица 6.4.2

Число точек

Абсциссы

Весовые коэффициенты

 

Точность

 

 

 

 

 

 

 

 

 

 

 

2

±0,57735

1; 1

 

 

 

f (4) (c)

 

135

 

 

 

 

 

 

 

 

 

 

3

±0,774597

0,555556

 

 

 

f (6) (c)

 

0

0,888889

 

 

 

 

 

 

 

 

15750

 

 

 

 

 

 

 

 

4

±0,861136

0,347855

 

 

 

f (8) (c)

±0,339981

0,652145

 

 

 

 

 

 

 

3472875

 

 

 

 

 

 

±

0,9061798

0,236927

 

 

 

f (10) (c)

5

±0,538469

0,478629

 

 

 

 

 

 

 

1237732650

 

 

 

0

0,568889

 

4.8 Численное решение интеграла методом Монте-Карло

Метод Монте-Карло принципиально отличается от ранее рассмотренных методов. Он не связан с аппроксимацией подынтегральной функции. В его основе лежит применение случайных величин. Использование случайных величин для решения различных прикладных задач применялось достаточно давно. Например, в 1777 году французский ученый Бюффон предложил метод определения значения числа π. С появлением компьютеров, которые могли с большой скоростью генерировать случайные числа, расширилась область применения стохастических методов. Годом рождения метода Монте-Карло считается 1950 год, в котором была опубликована статья «Метод МонтеКарло». Авторы статьи Николос Константин Метрополис и Станислав Мартин Улам. Название метода связано с городом Монте-Карло княжества Монако, в котором находится большое количество казино. Метод использовался при разработке водородной бомбы.

Предположим, что требуется вычислить интеграл

I = b f (x)dx .

a

Рассмотрим случайную величину u , которая равномерно распределена на интервале [a;b] . Тогда значение f (u) тоже будет случайной величиной. Ее математическое ожидание (среднее значение) находится по формуле

b

M[ f (u)] = f (x) ϕ(x)dx ,

a

 

 

 

 

 

 

 

 

56

где ϕ(x)

- плотность распределения случайной величины u , равная ϕ(x) =

1

на

b a

 

 

 

 

 

 

 

 

интервале [a;b] .

 

 

 

 

 

Тогда значение интеграла равно

 

 

M[ f (u)] = 1 f (x)dx .

 

 

 

 

 

 

 

 

b

 

 

 

 

 

 

b a

a

 

 

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

 

 

b

f (x)dx = (b a) M[ f (u)].

 

 

a

 

 

 

 

 

 

 

 

Если имеется N случайных точек u1,...,uN , то данная формула принимает вид

 

b

 

 

b a

 

N

 

 

f (x)dx =

 

f (ui ) .

 

 

 

 

 

a

 

 

 

N

i=1

 

 

Рассмотрим геометрическую интерпретацию вычисления интеграла методом Монте-Карло на примере вычисления интеграла

I = b f (x)dx .

a

Ограничим функцию f (x) прямоугольником, изображенным на рис.6.4.8,

площадь которого можно легко найти.

y

y=f(x)

1

a

b

x

Рис. 4.8. Численное интегрирование функции y = f (x) методом Монте-Карло

Набросаем в этот прямоугольник

N точек, координаты

которых выбираются

случайно. Определим количество точек,

которые попали под график функции f (x) .

Обозначим это количество M . Тогда площадь области, ограниченной функцией f (x) и

осью координат, находится по формуле

57

S= SПР MN .

Спомощью такого метода можно определить значение числа π. Найдем точное значение следующего интеграла

S= π sin(x)dx = −cos(x) 0π =1+1 = 2 .0

Площадь прямоугольника, который ограничивает функцию, равна SПР = π.

Получается соотношение 2 = π MN . Тогда значение числа π определяется по формуле

π = 2MN .

Погрешность метода E определяется объемом выборки случайных величин. Чем больше случайных точек, тем точнее получается результат.

E 1N

58

5. Интерполяция и приближение полиномами

Интерполяция – приближенное или точное нахождение какой-либо величины по известным отдельным значениям этой же или других величин, связанных с ней.

В первоначальном понимании восстановление функции по известным ее значениям или значениям ее производных в заданных точках.

Экстраполяция – продолжение функции за пределами ее области определения. Постановка задачи. Предположим, что функция y = f (x) известна в N +1 точке

(x0 , y0 ) , (x1, y1 ) ,…, (xN , yN ) , где значения xk принадлежат интервалу [a;b] и

удовлетворяют условиям a x0 x1 ... xN b и yk = f (xk ) . Требуется найти функцию,

которая проходила бы через данные точки.

Точки (x0 , y0 ) , (x1, y1 ) ,…, (xN , yN ) называются узловыми. Условие прохождения интерполяционной функции через узловые точки называется условием Лагранжа.

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

5.1 Интерполяция алгебраическим полиномом

Интерполирующая функция ϕ(x) имеет вид многочлена

ϕ(x) = c0 + c1 x + c2 x2 + c3 x3 +...cN xN .

Для интерполяционного построения требуется предварительно найти значения коэффициентов многочлена c0 ,c1,c2 ,...,cN . Степень многочлена соответствует числу

узловых точек (x0 , y0 ) , (x1, y1 ) ,…, (xN , yN ) . Поскольку интерполяционная функция ϕ(x)

проходит через узловые точки, то можно записать систему уравнений

 

 

 

 

 

 

 

 

2

 

3

 

 

N

 

ϕ(x0 ) = y0

c0

+ c1 x0

+ c2

x0

+ c3

x0

+...cN x0

= y0

 

 

ϕ(x ) = y

 

c

+ c

x

+ c

x2

+ c

x3

+...c

 

xN

= y

 

1

1

 

0

1

1

2

1

3

1

 

N

1

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

3

 

 

N

 

 

 

 

 

 

+ c2 xN

+ c3

xN +...cN xN

= yN

ϕ(xN ) = yN

c0 + c1 xN

Запишем данную систему уравнений в матричном виде X C = Y ,

59

1

x

x2

xN

 

c

 

y

0

 

 

 

 

0

0

0

 

 

0

 

 

 

 

 

1

x

x2

xN

 

c

 

 

y

 

 

1

x

1

1

1

,

 

1

 

 

 

1

 

где X =

 

x2

xN

C = c

,

Y = y

 

.

 

 

 

2

2

2

 

 

2

 

 

 

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

xN

2

N

 

 

 

 

 

 

 

 

 

xN

xN

 

cN

yN

Тогда коэффициенты многочлена определяются по формуле

C = X1 Y ,

где X1 – матрица обратная матрице X .

После нахождения коэффициентов многочлена можно приступить к вычислению значения ϕ(x) в любой точке, принадлежащей интервалу [a;b]. Использование для этой цели схемы Горнера позволит резко повысить быстродействие программы. При обычном

способе вычисления значения многочлена степени N требуется выполнить

N операций

сложения и

N +(N 1) +(N 2) +... + 2 +1 +0 =

N (N +1)

операций умножения. Метод

 

 

 

 

 

 

 

 

 

 

2

 

 

 

 

Горнера или искусственное разделение задуман, как вложенное умножение.

 

 

ϕ(x) = c

+ c x + c

x2 + c x3

+...c

N

xN = c

+ x (c + x (c

+ x (c

+ x (... + c

N

x)...)))

0

1

2

3

 

0

1

2

3

 

 

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

Фрагмент программы на языке Си

Фрагмент программы на языке Паскаль

 

p:=c[n];

p=c[n];

for(i=n-1; i>=0; i--)

for i:=n-1 downto 0 do

p=c[i]+p*x;

p:=c[i]+p*x;

 

 

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

Интерполяционный полином Лагранжа имеет вид

P(x) = y

 

 

 

x x1

 

x x2

...

x xN

 

+ y

x x0

 

x x2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

x x x x

 

x x

N

1

x x x x

 

 

 

 

 

0

1

 

0

2

 

 

0

 

 

 

 

1

0

 

 

1 2

 

x x

 

 

 

x x

 

 

x x

 

 

 

=

 

N

N

x x j

+yN x

x

x x

... x x

 

1

yi x x

 

 

 

 

 

 

 

0

 

 

 

 

1

 

 

 

 

 

N

 

 

 

 

 

 

 

 

 

 

 

N

 

 

 

0

 

0

 

1

 

 

 

N

 

 

N 1

 

 

i=0

j=0

i

 

j

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

ji

 

 

 

 

 

... x xN + x1 xN

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

60

P(x

) = y

 

 

x0 x1

 

x0 x2

...

x0 xN

 

+ y

x0

x0

 

x0

x2

...

x0 xN

+

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

0

 

x x x x

2

 

 

x x

N

 

1 x x x x

2

 

 

x x

N

 

 

 

 

 

 

 

 

 

 

0

 

1

 

 

0

 

 

 

 

0

 

 

1

0

1

 

 

1

 

+y

N

 

x0

x0

 

x0

x1

...

 

x0

xN 1

= y

 

+0 +... +0

= y

 

= f

(x

)

 

 

 

 

x

x x

 

 

 

 

 

 

 

 

 

 

x

N

 

 

 

x

N

x

N 1

 

 

 

0

 

 

 

 

 

0

 

0

 

 

 

 

 

 

 

 

 

 

0

0

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

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

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

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

PN (x) = a0 +a1 (x x0 ) +a2 (x x0 ) (x x1 ) +... +aN (x x0 ) (x x1 ) ... (x xN ) ,

где a0 ,a1,a2 ,...,aN - коэффициенты полинома Ньютона.

Коэффициенты полинома Ньютона находятся исходя из выполнения условия Лагранжа PN (xi ) = yi , где i = 0,1,2,..., N .

Коэффициент a0 находится из соотношения PN (x0 ) = y0 .

PN (x0 ) = a0 +a1 (x0 x0 ) +a2 (x0 x0 ) (x0 x1 ) +... +aN (x0 x0 ) (x0 x1 ) ... (x0 xN ) = y0

Так как все слагаемые, кроме первого, равны нулю, то a0 = y0 . Далее находим коэффициент a1 из соотношения PN (x1 ) = y1 .

PN (x1 ) = a0 +a1 (x1 x0 ) +a2 (x1 x0 ) (x1 x1 ) +... +aN (x1 x0 ) (x1 x1 ) ... (x1 xN ) = y1

Все слагаемые, начиная с третьего, равны нулю, а коэффициент a0 = y0 . y0 +a1 (x1 x0 ) = y1

Тогда a1 = y1 y0 . x1 x0

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

f [xK J

, xK J +1

,..., xK ]=

f [xK J +1,..., xK ]f [xK J

,..., xK 1

]

.

xK

xK J

 

 

 

 

 

 

 

 

А итерационная процедура очень простая. Покажем ее на примере таблицы 5.1.