Анимация
JavaScript


Главная  Библионтека 

0 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 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261

Таким образом, для вычислений с ненормализованными числами имеем

еифь, Cuet) = max(e«,e„) + (О или 1), (48)

eu«it) = e+Cv -q- min(/u,/„) - (О или 1), (49)

u0v = Си ~ fit) + q-lu + lv + max(/u,/„) + (О или 1). (50)

Если результатом должен быть нуль, то в качестве результата вычислений выдается ненормализованный нуль (часто его называют величиной порядка нуль). Это означает, что в действительности результат может быть и не равен нулю, но нам просто не известен ни один его значащий разряд! Для арифметических операций над ненормализованными числами применявшаяся ранее методика анализа ошибок принимает несколько другой вид. Введем теперь новую величину

<j„ = i6"-«-p дляи = (е„,Л). (51)

Она зависит от представления числа и, а не от его значения 6*"~/и. Правило округления гласит:

u®v - {u + v)\ < Su@v, \uev - {u-v)\ < Suev,

U<S>V - (U Xv)\ < du0v, \u0V - {u / v)\ < Su(Z)v

Эти неравенства применимы как к нормализованным, так и к ненормализованным величинам; основное различие между двумя типами анализа ошибок состоит в том, что порядок результата каждой из операций (соотношения (48)-(50)) определяется по-другому.

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

[и® v) ®w к и® (v фю) (е) (52)

для подходящим образом выбранного е. Имеем

\{u®v)®w-{u + v + w)\< \{u®v)®w- {{u®v) + w)\ + \u®v-{u + v)\

Аналогичная формула справедлива и для \и ® {v ® w) - {и + v + w)\. Но поскольку e(uet))ew = max(e«,e„,eu,) + (О, 1 или 2), то (5(uei;)ew < bKe{v®w)- Следовательно, (52) верно при е > Ьр + С точки зрения закона ассоциативности сложение ненормализованных величин не вызывает столько ошибок, как сложение нормализованных.

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



анализа ошибок "по одной операции" не может считаться удовлетворительным, а именно: операнды обычно не являются независимыми. Это означает, что ошибки имеют тенденцию к компенсации или усилению одна другой необычным образом. Предположим, например, что х приблизительно равно 1/2 и что у этого значения есть приближение у = х+6 с абсолютной ошибкой д. Чтобы вычислить произведение х{1 - х), можно найти у{1 - у); если х = + е, то получим у{1 - у) = х{1 - х) -2ед - д. Таким образом, абсолютная ошибка существенно уменьшилась - перед ней появился коэффициент 2е + 6\ Это всего лишь один из случаев, когда умножение приближенных значений операндов, не являющихся независимыми, может привести к довольно точному результату. Более очевидный пример - вычисление xQx, которое может быть выполнено с абсолютной точностью независимо от того, насколько ошибочным было приближение х, которое используется в качестве операнда.

Дополнительная информация, которую предоставляет арифметика ненормализованных величин, часто может быть более важна, чем информация, потерянная при выполнении обширных вычислений в таком формате, но, как обычно, необходимо соблюдать осторожность при ее использовании. Примеры правильного использования арифметики ненормализованных величин проанализированы Р. Л. Эшенхерстом (R. L. Ashenhurst) и Н. Метрополисом (N. Metropolis) в сборнике Computers и Computing, АММ, Slaught Memorial Papers 10 (February, 1965), 47-59, Н. Метрополисом в журнале Numer. Math. 7 (1965), 104-112, и Р. Л. Эшенхерстом в сборнике Error in Digital Computation 2, edited by L. B. Rail (New York: Wiley, 1965), 3-37. Надлежащие методы вычисления стандартных математических функций с представлением как входных, так и выходных данных в ненормализованной форме были описаны Р. Л. Эшенхерстом в JACM 11 (1964), 168-187. Расширение ненормализованной арифметики, которое предусматривает сохранение информации о том, что определенные операнды известны точно, проанализировано Н. Метрополисом в IEEE Trans. С-22 (1973), 573-576.

С. Арифметика интервалов. Другой подход к проблеме оценки погрешности связан с так называемой арифметикой интервалов или диапазонов, которая предусматривает учет в процессе выполнения вычислений строгих границ - верхней и нижней-для каждого числа. Так, например, если известно, что uq < и < ui Уо < V < Vl, в записи в форме интервалов это будет иметь вид и = [mq.-Wi], v = [vq .. Vl]. Сумма и® v есть [uq f vq. .щ A 7;i], где у означает нижнюю сумму в формате с плавающей точкой, т. е. наибольшее представимое в данном формате число, меньшее или равное действительному значению суммы, а А определяется аналогично (см. упр. 4.2.1-13). Далее, и Q v = [uq vi. .ui А vo]; если uq и г;о положительны, то и ® v = [uq vo,ui А vi], и (2 v = [uq vi. .Ui А vo]. Например, число Авогадро и постоянная Планка в обозначениях арифметики интервалов будут иметь такой вид:

N= [(24,+.60221331).. (24,+.60221403)], h = [(-26, +.66260715).. (-26, +.66260795);. Сумма и произведение этих величин будут выражены следующим образом: N@h = [(24, +.60221331)..(24, +.60221404)], Nh [(-2, +.39903084).. (-2, +.39903181);.



Если попытаться выполнить деление на [7;о • • i], причем 7;о < О < ti , весьма вероятно возникновение деления на нуль. Поскольку самой философией арифметики интервалов предусматривается строгая оценка ошибки вычислений, в этом случае обязательно должно формироваться сообщение об ошибке деления на нуль. Однако переполнение и потеря значимости не рассматриваются как фатальные ошибки, если поддерживаются специальные соглашения, которые более подробно рассматриваются в упр. 24.

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

D. История и библиография. В классическом трактате о методах вычислений в десятичной системе счисления Legons dArithmetique (Paris: Colin, 1894), принадлежащем перу Жюля Таннери (Jules Tannery), утверждается, что положительные числа должны округляться в сторону большего, если первый отбрасываемый разряд равен или больше 5. Поскольку ровно половина десятичных цифр равна или больше 5, это, как ему казалось, будет приводить к округлению в большую сторону в среднем ровно в половине случаев, так что в результате ошибки (округления. - Прим. ред.) компенсируются. Идея округлять до четного в неоднозначных случаях впервые, кажется, была упомянута Джеймсом Б. Скарборо (James В. Scarborough) в первом издании его пионерской книги Numerical Mathematical Analysis (Baltimore: Johns Hopkins Press, 1930), 2; во втором издании (1950 г.) он развил ранние примечания по этому поводу, утверждая, что "для любого думающего человека должно быть очевидным, что, когда отбрасывается 5, предыдущий разряд до.тжен быть, увеличен на 1 только в половине случаев"; как средство достижения этого он рекомендовал округлять до четного.

Впервые анализ арифметических операций в формате с плавающей точкой был выполнен Ф. Л. Бауэром (F..L. Bauer) и К. Замельсоном (К. Samelson), Zeitschrift fur angewandte Math, und Physik 4 (1953), 312-316. Следующая публикация появилась лишь пятью годами позже: J. W. Сагг III, САСМ 2,5 (May, 1959), 10-15. (См. также Р. С. Fischer, Proc. ACM Nat. Meeting 13 (1958), Paper 39.) В книге J. H. Wilkinson, Rounding Errors in Algebraic Processes (Englewood Cliffs: Prentice-Hall, 1963) показано, как применять методы анализа ошибок отдельных арифметических операций к анализу ошибок в задачах с большим числом вычислений (см. также его монографию The Algebraic Eigenvalue Problem (Oxford: Clarendon Press, 1965)).

Обзор других ранних работ, касающихся точности вычислений в формате с плавающей точкой, приведен в двух важных статьях, которые можно настоятельно рекомендовать для дальнейшей проработки: W. М. Kahan, Proc. IFIP Congress (1971), 2, 1214-1239, и R. P. Brent, IEEE Trans. C-22 (1973), 601-607. В обеих статьях



0 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 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261