Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ЧМ_2012 / Лекции / Численные_методы.pdf
Скачиваний:
392
Добавлен:
09.06.2015
Размер:
1.99 Mб
Скачать

27

Рис. 4. Результат работы Листинга_2.3

2) Метод трапеций

Кривую f (x) , заданную на отрезке [a;b] можно приближенно заменить на секущую, как показано на рис.5. Тогда, соответственно, значение интеграла

b

f (x)dx

можно приближенно заменить

площадью трапеции:

a

 

 

 

 

 

b

f (x)dx (b a)

f (a) + f (b)

.

 

2

 

a

 

 

 

 

Рис. 5

Для повышения точности следует разбить отрезок [a;b] , введя на нем

достаточно густую сетку. Затем интеграл разбивают на сумму интегралов по шагам сетки и к каждому слагаемому применяют приведенную выше формулу. При постоянном шаге сетки формула имеет вид:

28

b

 

b a

 

f (x0 ) +

f (xn )

n1

 

 

 

f (x)dx

(

+f (xi )) ,

 

2

 

a

 

n

 

i=1

 

 

 

где n - число отрезков разбиения,

xi - узлы сетки.

 

 

 

Задача 2. Вычислить

определенный

интеграл

1

x

dx методом

1

1+ x + x2

трапеций с точностью ε = 0.000001.

Решение. Приведем решение данной задачи в системе Scilab.

Листинг 2.4.

a = input('Введите нижний предел интегрирования'); b = input('Введите верхний предел интегрирования'); e = 0.000001;

function[value] = f(x) value = x/(1+x+x*x);

endfunction

function[n, summa] = trapezium(a, b) n = 10.0;

prev_sum = 1.0; summa = 0.0;

while abs(summa-prev_sum) > e prev_sum = summa; h=(b-a)/n;

summa=0; for i = 1:n+1

summa = summa + 0.5*h*( f(a+i*h) + f(a+(i-1)*h) ); end

n=n*2; end

endfunction

[n, integral] = trapezium(a, b); integral, n

Рис. 6. Результат работы Листинга_2.4

29

3) Метод Симпсона

В данном методе определенный интеграл вычисляется по следующей формуле:

b

h

 

n

1

 

 

2 (f (x2i ) + 4 f (x2i+1 ) + f (x2i+2 )),

f (x)dx =

 

a

3 i=0

где n – количество интервалов разбиения области интегрирования, h – шаг разбиения.

Задача 3.

Вычислить определенный интеграл

1

x

dx методом

1

1+ x + x2

Симпсона с точностью ε = 0.000001.

 

 

 

Решение.

Приведем решение данной задачи в системе Scilab.

Листинг 2.5.

a = input('Введите нижний предел интегрирования'); b = input('Введите верхний предел интегрирования'); e = 0.000001;

function[value] = f(x) value = x/(1+x+x*x);

endfunction

function[n, summa] = simpson(a, b) n = 10.0;

prev_sum = 1, summa = 0; while abs(summa-prev_sum) > e

prev_sum=summa; h = (b-a)/n;

summa=0;

for i=a:2.0*h:b-h

summa = summa + f(i)+4.0*f(i+h)+f(i+2.0*h); end

summa=summa*h/3.0; n = n*2;

end endfunction

[n, integral] = simpson(a, b); integral, n

30

Рис. 7. Результат работы Листинга_2.5

4) Квадратуры Гаусса

Допустим, мы хотим вычислить интеграл 1 f (t)dt следующим образом:

 

 

1

1

n

 

f (t)dt = Ai f (ti )

(1)

1

i=1

 

Теорема. Для обеспечения равенства (1) необходимо и достаточно, чтобы оно выполнялось для f (t) =1, t, t 2 ,K, t 2n1 .

Доказательство. Необходимость очевидна, так как в равенство (1) вместо f (t) можно подставить любую функцию, в том числе и функции

f (t) =1, t, t 2 ,K, t 2n1

Докажем

 

 

достаточность.

Мы

имеем

следующие

соотношения:

1

 

 

n

 

 

 

 

 

 

 

 

 

 

 

 

2n1

 

 

t k dt =

Aitik , (k = 0, 1, K, 2n 1) и

f (t) = Ck t k . По теореме Вейерштрасса

1

 

 

i=1

 

 

 

 

 

 

 

 

 

 

 

 

k =0

 

1, t, t 2 ,K, t 2n1 .

любую непрерывную функцию можно разложить по базису

Тогда имеем:

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

 

 

 

2n1

1

 

 

2n1

n

n

2n1

n

 

 

 

f (t)dt = Ck t k dt = Ck Aitik

= Ai Ck tik = Ai f (ti ) ,

(2)

 

 

1

 

 

 

 

 

k =0

 

1

 

 

k =0

i=1

i=1

k =0

i=1

 

Достаточность доказана. Теорема доказана.

 

 

Таким образом, учитывая соотношения

 

 

 

1

 

 

1

(

1)

k +1

2

 

 

при k

четном,

 

 

 

t

k

dt =

 

 

 

 

 

 

 

 

 

 

 

 

 

 

= k +1

 

 

 

 

 

 

 

 

 

k +1

 

 

 

 

 

 

 

1

 

 

 

 

 

 

 

при k нечетном,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

0

 

 

 

 

заключаем, что для решения поставленной задачи достаточно определить ti и Ai из системы 2n уравнений:

31

n

 

 

 

 

 

Ai = 2,

 

 

 

 

 

i=1

 

 

 

 

 

n

 

 

 

 

 

Aiti = 0,

 

 

 

 

 

i=1

 

 

 

 

 

KKKKK

 

 

 

 

(3)

 

 

 

 

n

 

2

 

 

 

Aiti2n2 =

 

,

 

 

2n 1

 

i=1

 

 

 

n

 

 

 

 

 

Aiti2n1 =

0.

 

 

 

i=1

 

 

 

 

 

 

 

 

 

 

Система (3) — нелинейная и исследование ее громоздко. Поэтому чтобы упростить решение в качестве узлов ti берут корни полинома Лежандра n -

ой степени:

Pn (x) =

1

 

 

d n

[(x2 1)n ]

(n = 0,1, 2, K) .

2n n! dxn

 

 

 

Формула (1), где ti – нули

полинома

Лежандра Pn (t) и Ai (i =1, 2, K,n)

определяются из системы (3) называется квадратурной формулой Гаусса (причем при найденном ti последние n уравнений можно отбросить).

Пример 2.1. Найти xi

и Ai для

n = 3.

 

 

 

 

 

 

 

Полином Лежандра третьей степени:

 

 

 

 

 

 

 

 

P3 (t) =

 

1

 

 

d 3

(x2

1)3

=

1

 

d 3

(x6

3x4 +3x

2 1) =

1

(120x3

72x) =

1

x (5x2

3) .

23 3!

 

48

 

 

2

 

 

 

dx3

 

 

 

 

dx3

 

 

48

 

 

 

 

Отсюда находим корни полинома:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

t

=

 

3 ,

 

или

t

= −0.774596669,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

 

5

 

 

1

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

t2

= 0,

 

или

t2

= 0,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

t4

= −

3 ,

или

t3 = 0.774596669.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5

 

 

 

 

 

 

 

 

 

 

Для определения коэффициентов A1 ,

A2 , A3 имеем систему:

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A

+ A

+ A

= 2,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

1

 

2

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A1t1 + A2t2 + A3t3 = 0,

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

2

 

2

 

2

2

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

A1t1 + A2t2 + A3t3 =

 

.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Решая эту систему относительно

A , получаем:

 

 

 

 

32

A1 = 0.555555556,

A2 = 0.888888889,

A3 = 0.555555556.

Пример 2.2. Найти xi и

Ai для n = 4 .

 

 

 

Полином Лежандра четвертой степени:

 

 

 

P

(t) =

1

 

 

d 4

(x2 1)4 = x4

+3(x2 1)x2 + 3 (x2 1)2 = 4x4 3x2 + 3 x4 6 x2 + 3 =

 

 

4

24 4!

 

dx4

 

8

8

8

8

 

 

 

= 18 (35x4 30x2 +3)

Приравнивая этот полином к нулю, находим корни:

t

= −

15 +

120

,

 

 

1

 

35

 

 

 

 

 

 

 

 

 

 

t2

= −

15

120

,

t1 = −0.861136312,

35

 

t2

= −0.339981044,

 

 

 

 

t3

=

15

120

,

 

t3

= 0.339981044,

 

t4

= 0.861136312.

 

 

35

 

 

t4

=

15 +

120

,

 

 

 

 

 

35

 

 

 

 

Для определения коэффициентов A1 , A2 , A3 , A4 имеем систему:

A1 + A2 + A3 + A4 = 2

t1 A1 +t2 A2 +t3 A3 +t4 A4 = 0

t12 A1 +t22 A2 +t32 A3 +t42 A4 = 23

t13 A1 +t23 A2 +t33 A3 +t43 A4 = 0

Решая эту систему, получаем:

A1 = 0.347854845

A2 = 0.652145155

A3 = 0.652145155

A4 = 0.347854845

Рассмотрим теперь использование квадратурной формулы Гаусса для

вычисления общего интеграла b

f (x)dx .

 

 

 

 

 

 

 

a

 

 

 

 

 

 

 

 

 

 

 

Делая замену переменной x =

b + a

+

b a

t

получим:

 

 

 

 

 

 

2

2

 

 

 

 

 

 

b

f (x)dx =

b a

1

f (

b + a

+

b a

t)dt

 

 

 

a

 

 

 

2 1

2

 

 

t