Слаботочка Книги

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 [52] 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208

Если при каком-то q величина Pq{f) содержит одновременно значения / в узлах., где f ~ О п f = I, то pg{f) имеет порядок h, поэтому нет оснований надеяться, что неравенство \рд(/)\ eohg будет выполняться при малых hfj-, программа будет ос.уществлять дробление maia до машинного нуля. Если функция меняется на малом участке очень резко, то шаг будет дробиться неоправданно сильно. Это обстоятельство было отмечено пользователями, и после теоретического анализа, в результате которого и бы.ла решена задача об оптимальном распределении узлов, было принято полагать 7 ~ О, если нет особых причин против этого. В случае резко меняюш,ихся функций следует иметь в виду, ггo программа может не заметить участка резкого изменения фупкцгш. Пусть р(/) = О, когда /(.г) = Ps(ж)-многочлен степени .ч, и пусть реальная подынтегральная функция есть

/(ж)-П(ж)+.ф-), где д{х) практически отлична от иу.пя лишь на малом отрезке, например

Рис. 3.17.1

(рис. 3.17.1). Д.пя определенности обратимся к первой из описанных выше про-цедзр. Если отрезок разбиения [о, 1, удален от точки С, то p{f) w p{Ps) = О и программа будет .увеличивать шаг. При подходе к точке С шаг может оказаться настолько большим, что окрестность, где функция д{х) существенно больше О, окажется заключенной между узлами. Тогда р(/) будет близко к О и иа отрезке, содержащем точку С. В результате в качестве значения /(/) мы получим значение /(Р ); погрешность этого приближенного значения близка к 1. Для контроля над точностью можно было бы попытаться произвести иитегри-poBanire с другим значением ео, однако с большой вероятностью получился бы тот же результат.

Не следует думать, что этот недостаток свойствен только методам интегрирования с автоматическим выбором шага. Если производить вычисление этого рштеграла по формулам с постоянным шагом Н, то при Н у/ё все равх-о может оказаться, что д{х) и О во всех уз.лах гштегрирования, и мы получим приближенное значение /(/) ЦРз)- Производя численное рштегрирование при нескольких шагах и оценивая погрешность по прави.лу Рунге, можно прийти к неправильному выводу, что приближенное значение интеграла /(/) и I{Ps)- В целом можно сказать, что в случае использования алгоритмов интегрирования с автоматическ:им выбором шага возможность получения подобных неправильных выводов несколько больше.

При составлении стандартных программ всегда приходится балансировать между двумя крайностями: гарантией требуемой точности для любой подынте-



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

По-видимому, можно говорить о каком-то принципе неопределенности по отношению к методам высокой эффективности: дальнешпее повышение скорости работы должно сопровождаться уменьшением надежности. Чтобы избежать проскакивания областей резкого изменения функции, можно предусмотреть в программе наличие отрезков, где шаг гштегрирования д1Эобится пргшуди-тельно. Например, в описание стандартной программы можно включить концы некоторого отрезка [а, /3]. Если отрезок разбиения [a, l, а] пересекается с [а, /3], то следующий отрезок выбирается по более сложному правилу. В качестве [а, р] следует задавать некоторый отрезок, где подынтегральная функция резко меняется.

Обратим внимание на ряд допо.пните.пьных моментов. Пусть для гладкой функции fix)

(cig - 0-1)+ + е(аг;-ь а,),

Р(/) = Cs

e(a,/ i, a,j)\ max/(*+i(a;)(a, - a, i)*+

Для понимания механизма изменения шага предположим, что -

кусочно-постоянная функция. В области постоянства /*(.т) имеем

p(.f)=c,/WOr)IK-S~i)*+-

Зададимся некоторым числом б < 1. Рггссмотрим случай (3 < (7 +. Пусть для шага ho, с которым мы приступаем к 1Штегрировапию в данио!! области постоянства производной, выпо.лняется соотношение с /*(а;)(/1о)*+ ei. Тогда шаг будет увеличиваться гсаждьп ! раз в <7~ раз, пока не станет больше е,. Поскольку при шаге в сг~ раз меньшем, выпо.лнялось соотношение p{f) ei, то интегрирование будет осуществ.ляться с наименьшим шагом h = hocr, для которого cs/*)(a;)/i*+ > ej. Если же для начального в этой области шага выполняется соотношение Cs\f\x)\(ho) > Eq, то шаг станет наибо.пьши.м из шагов h = hod, для которых выпо.лняется условие с /*(а;)Л.*+ ео-Если, как мы предпо.ложи.ли, ei/eo = р < п-*+, то ьгажет оказаться, что в зависимости от 1юведения функции при меньших х в рассматриваемо!! области выбираются различные шаги. Мы видели, что шаг гштегрирования желательно распределять так, чтобы оценка погрешности на всех отрезках разбиения интервала интегрировашш была примерно одинаковой. Исходя из сказанного мы делаем вывод о желательности употреб.ления р > сг*+. Рассмотрим случай /3 > сг*+. Можно указать шаг h = /1* такой, что

£0+ <c,/f(a-)/i+ ео. (4)

Если оказалось, что

ei <c,/W(.-r)/i+i ео, (5)

то при интегрировании по рассматриваемому отрезку будет выбран именно такой шаг. Однако при

еост+ < с,./*)(ж)/1+1 £1 = еоР (6)



программа выработает следующий шаг, равный h/o. Для этого шага, вследствие (6), окажется, что ео < р(/), поэтому шаг к/а будет признан непригодным. Программа возьмет шаг, равный h; поскольку для него выполняется условие (6), то интегрирование по текущему отрезку будет закончено и за исходный шаг для дальнейшего счета будет принят шаг h/o. Таким образом, фактическое рштегрирование происходит с шагом h и на каждом шаге делается попытка произвести рштегрирование с шагом h/o. Если вычисления с шагами h и h/a независимы, то на каждом шаге объем работы будет удааиваться. Известен следующий экспериментальный факт: если мы зададимся произвольным Л > 1 и из различных независимых источников получим некоторые числа у, то величршы {log у} будут асимптотически равномерно распределены на отрезке [О, 1].

Задачах. Считая, что f\x) -числа, происходящие из независимых случайных источников, показать, что при (3 > гт*+ математическое ожидание затрат работ пропорционально 2 -logs+i/3. (Отсюда следует целесообразность выбора Р = сг**.)

Наши рассуждения проведены в предположенрп!, что /**(ж) = con.st, и поэтому требуют экспериментальной проверки. Исходя из результатов TaKoii проверки на практике р обычно берется равным и.ли несколько большим, чем сг*+, например, в одной из распространенных стандартных программ .s = 4, сг = 1/2, /3 = 1/10.

Как и в адучае интегрирования с постоянным шагом, возникает вопрос практической оценки погрешности. Обратимся ко второй процедуре, имеющей более простое описание. Как и ранее, проведем исследование на примере кусочно-постоянной производной /(*)(.г). Шаг интегрирования в области постоянства /*(.т) для этой процедуры определяется условием: это наибольший шаг h вида {В - А)2~, для которого выполнено ус/ювие

Cs\f4xW+ < ео. (7)

Очевидно, что для такого максимального шага справедливо соотношение

ео2-(+1)<с,/(*)(ж)Л,+\ Произведем интегрирование с некоторым ер < ео. В области, где

старый шаг интегрирования будет уже непригоден, поэтому произойдет дробление шага не менее чем вдвое. В области, где выполняется ус7ювие

ео2-(+1)<с,/)(ж)Л,+Ч4,

дробления шага не произойдет. Таким образом, при £02 * * < ео может случиться, что дробление шага интегрирования произойдет лишь на части отрезка интегрирования или его вообще не будет. Из сравнения




1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 [52] 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208
Яндекс.Метрика