Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
лабораторная работа №5.doc
Скачиваний:
38
Добавлен:
20.03.2015
Размер:
210.94 Кб
Скачать

5. Вычисление интегралов с заданной точностью

Уменьшая шаг, мы добиваемся большей точности результата. Это подсказывает алгоритм двойного пересчета, когда вычисления проводятся с шагом h, а затем с шагомh/2. Результаты сравниваются и если разность по модулю полученных квадратур удовлетворяет условию

,

где наперед заданная точность, то расчет заканчивается.

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

1. Пусть n=1, т.е. на интервале [a,b] всего одна трапеция. Обозначим квадратурную формулу как

, где

Если n=2, то

где

Далее при n=4:

,

где .

Эти выкладки позволяют составить следующую рекуррентную формулу

, (7.14)

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

Вычисляя квадратурные формулы с шагом hиh/2, можно существенно улучшить результат, составляя комбинацию этих результатов, как это делалось в методах численного дифференцирования. Запишем

;

,

откуда нетрудно получить постоянную , подставляя которую во второе из этих равенств, получим соотношение

(7.15)

Запишем его для метода трапеций в узлах :

подставляя в (7.15 ), получим

формулу Симпсона для частичного интервала. Следовательно, комбинируя в методе двойного пересчета формулы трапеций, получаем метод парабол, имеющий точность на два порядка выше.

Обобщение этих выводов связано с формулой Ромберга:

, (7.16)

где , а результаты удобно представить в виде треугольной таблицы

где индекс iописывает изменение по строкам, аj- по столбцам.

Процедура заканчивается, когда диагональные элементы удовлетворяют условию:

(7.17)

Составим подпрограмму-функцию, реализующую метод Ромберга

Function TrRomb( a,b,eps: real; f1:fun): real;

const m=10;

var q:array{1..m,1..m] of real;

h,s:real; i,j,k,m1,m2: integer;

begin

h:=b-a; i:=1; m1:=1;

q[1,1]:=0.5*h*(f1(a)+f1(b));

repeat

s:=0; Inc(i);

if (i>=m) then

begin writeln(‘Error!’); Exit end;

for k:=1 to m1 do

s:=s+ f1(a+h*(k-0.5));

m1:=m1*2; m2:=1;

q[i,1] := 0.5*(q[i-1,1]+ h*s); h:=0.5*h;

for j:=2 to i do

begin m2:=m2*4;

q[i,j]:=(m2*q[i.j-1] - q[i-1.j-1])/(m2-1)

end;

until (abs(q[i.j] - q[i-1.j-1]) < eps);

TrRomb:= q[i.i]

end;

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

0.0000000000

1.5707963268 2.0943951024

1.8961188979 2.0045597550 1.9985707318

1.9742316019 2.0002691699 1.9999831309 2.0000055500

1.9935703438 2.0000165910 1.9999997525 2.0000000163 1.9999999962

1.9983933610 2.0000010334 1.9999999962 2.0000000001 2.0000000000 2.0000000000

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

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

Вычислим интеграл :

Представим вычисления в пакете Excel. Значения функции представим в сеточном виде для более удобного их применения (табл.7.1.).

Таблица 7.1.Значение функции

i

xi

f(xi)

0

0

0

1

0,314159265

0,309016994

2

0,628318531

0,587785252

3

0,942477796

0,809016994

4

1,256637061

0,951056516

5

1,570796327

1

6

1,884955592

0,951056516

7

2,199114858

0,809016994

8

2,513274123

0,587785252

9

2,827433388

0,309016994

10

3,141592654

0

По методу прямоугольников значение интеграла функции равно 1.983523538.

По методу трапеций значение интеграла функции равно 1.983523538.

По методу парабол (Симпсона)значение интеграла функции равно 2.00010952.

Таким образом , метод парабол дает самые точные значения.

Представим данные вычисления в пакете MathCAD.