8(495)909-90-01
8(964)644-46-00
pro@sio.su
Главная
Системы видеонаблюдения
Охранная сигнализация
Пожарная сигнализация
Система пожаротушения
Система контроля удаленного доступа
Оповещение и эвакуация
Контроль периметра
Система домофонии
Парковочные системы
Проектирование слаботочных сетей
Аварийный
контроль
            
Раздел: Документация

0 ... 115 116 117 118 119 120 121 ... 177

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

На практике при определении необходимой величины шага среднее значение производной обычно не вычисляется ввиду того, что для этого необходимо провести интегрирование. Вместо него в формулу для ошибки подставляется наибольшее значение (по модулю) производной на промежутке. Неравенство для h от этого не нарушается, только величина шага получается слегка заниженной. Так, с учетом, что на промежутке от 0 до л максимальное значение синуса - 1, мы получим следующий результат:

Как видите, величина шага при точном нахождении среднего значения производной и замене его наибольшим ее значением различается мало — всего на 10%.

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

Решение поставленной проблемы можно легко найти, если вспомнить, что с ростом количества разбиений результаты вычислений любым численным методом образуют равномерно сходящуюся (в случае отсутствия погрешности округления) последовательность. Данная последовательность более или менее быстро, в зависимости от используемого алгоритма, сходится к истинному значению интеграла. В принципе, абсолютная точность приближения наступает лишь при достижении ширины интервала разбиения бесконечно малого значения. Однако на практике нас всегда интересует определенная, обычно не очень высокая точность результата. Очевидно, что чем ближе находятся два соседних значения интеграла (вычисленные соответственно при п и 2-п разбиениях) к истинному значению, тем на меньшую величину они отличаются. Л что если использовать их разность в качестве критерия достижения Требуемой точности?

Описанная идея реализуется в программе Autolnt, которая вычисляет интеграл по методу трапеций. Данная программа генерирует последовательность приближений к интегралу, удваивая на каждом обороте количество разбиений промежутка. Технически это реализуется с. помощью бесконечного цикла while, который прекращает работу в том случае, если два последних приближения к интегралу отличаются на величину, меньшую TDL Сделать же цикл бесконечным очень просто: для этого выражение в его правом маркере должно всегда давать истину (то есть 1). В принципе, можно просто ввести в правый маркер 1.

f{x) ;= sin(x)

SimpCr.O.n, 10l) = 2.00000000065

0.028


Aut.oIni(f,a,b,TOL) ;=

INT PREV- (а while 1

Ь-а h *--в

INT «- Q Гот i • l..n

INT FNT+ h

4*5

Пат h(i- 1)] + n> + hi)

break if (rr4T-lr4T PREV< TOL) rNT PREV<- INT otherwise INT

Проверим, насколько эффективно работает написанная 1Грограмма;

i( х) := sini х)

AutofotO.O.ii, 10" 5)-2»-1-5687316193x10" 6 Autolnt0.0,п, 10" 8)- 2 = -1 J319761015x1 о" 9

Autolnt(f,0,7t, 10" 12)- 2 « -1.2079226508x10" 13

Программа работает неплохо Конечно, она не так эффективна, как встроенные в Mathcad алгоритмы, однако ее можно улучшить. Главный ее недостаток заключается в том, что при 1саждом удвоении количества разбиений значения функции в узловых точках пе-ресчитываются -«с нуля», хотя из 2-п значений половина уже была вычислена на предыдущей итерации цикла while. Также, если п>1, то лучше использовать не формулу трапеций, а формулу Симнсона или Буля. Исправить описанные недостатки, сохранив главную идею программы Autolnt можно, применил алгоритм Ромберга. Метод Ромберга довольно сложен для понимания, однако мы попробуем максимально просто описать его идею. Для этого лучше всего булег изложить последовательность действий при решении задач этим методом.

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

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


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

while 1 IJ *- J + 1 (b-a)

h

г1

p = i

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

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

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

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

3

Не стоит пугаться этой общей формулы, на самом деле они предельно проста. Она лишь показывает, что для того чтобы получить приближение по Симпшну с шагом h, следует умножить приближение, полученное при этом шаге по методу трапеций, на 4, отнять от него элемент того же столбца, соответствующий вычислению интеграла методом трапеций при шаге 2h, и поделить затем результат на 3. То есть вычисление приближении более высокой степени, в том случае, если есть два значения интеграла, рассчитанные по более простому методу, сводится к элементарной арифметической операции из трех действий.



0 ... 115 116 117 118 119 120 121 ... 177