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

23

Глава_2.

Приближенные вычисления определенных интегралов

1) Методы прямоугольников

Простейшим методом численного интегрирования является метод прямоугольников. Он непосредственно использует замену определенного интеграла интегральной суммой:

n

Sn = s1 + s2 +K+ sn = f (ξi ) xi .

i=1

Рис. 1

В качестве точек ξi могут выбираться левые (ξi = xi1 ) или правые (ξi = xi ) границы элементарных отрезков. Обозначим f (xi ) = yi , xi = hi . Тогда получим следующие формулы для этих случаев:

b

f (x)dx = h1 y0 + h2 y1 +K+ hn yn1 ,

//(метод левых прямоугольников)

a

 

 

b

f (x)dx = h1 y1 +h2 y2 +K+hn yn .

//(метод правых прямоугольников)

a

 

 

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

24

 

 

 

 

 

 

b

n

 

 

 

 

 

 

f (x)dx = hi f (xi1/ 2 ) ,

 

 

xi1 + xi

 

 

hi

a

i=1

где xi1/ 2

=

= xi1

+

,

i =1, 2, Kп.

 

 

 

2

 

2

 

 

Важным частным случаем формул прямоугольников является их применение при численном интегрировании с постоянным шагом. В

этом случае hi = h = const .

Формулы для вычисления определенных

интегралов принимают вид:

 

 

 

b

n1

 

 

 

 

f (x)dx = hf (xi ) ,

//(метод левых прямоугольников)

a

i=0

 

 

 

 

b

n

 

 

 

 

f (x)dx = hf (xi ) ,

//(метод правых прямоугольников)

a

i=1

 

 

 

 

b

n

 

 

 

 

f (x)dx = hf (xi1/ 2 ) .

//(метод центральных прямоугольников)

a

i=1

 

 

 

 

Задача 1.

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

1

x

dx методом левых,

1

1+ x + x2

правых и центральных прямоугольников с точностью ε = 0.000001.

Решение. Приведем решение данной задачи в системе Scilab. Вычисляем данный интеграл методом левых прямоугольников.

Листинг 2.1.

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

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

endfunction

function[n, summa] = left(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 = 0:n

summa = summa + f(a + i*h)*h end

n=n*2; end

endfunction

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

25

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

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

Листинг 2.2.

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

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

endfunction

function[n, summa] = right(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 + f(a + i*h)*h end

n=n*2; end

endfunction

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

26

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

Наконец, вычисляем данный интеграл

методом центральных

прямоугольников.

 

Листинг 2.3.

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

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

endfunction

function[n, summa] = center_(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 + f(a + 0.5*h*(2*i-1))*h; end

n=n*2; end

endfunction

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