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

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

§ 4. О вычислительной погрешности

Ограничение на порядки чисел в ЭВМ \р\ ро иногда приводит к пре-кращеншо вычислений; в других случаях относительно небольшая разрядность чисел в ЭВМ приводит к недопустимому искажению результата вычислительной погрешностью. Такие алгоритмы, где вследствие ограниченности р или малости t возникают подобные эс1зс)екты, называют неустойчивыми .

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

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

Пусть отыскивается наименьший корень уравнения - 140у 4-1 = 0. Для определенности условимся о следующих правилах округления. Вычисления производятся в десятичной системе счисления, причем в мантиссе числа после округлений удерживается 4 разряда. Имеем

у = 70 - \/4899, л/4899 = 69,992 ...;

после округления получаем

\/4899 69,99, ?/ w 70 - 69,99 = 0,01.

То же самое значение у можно, избавившись от иррациональности в числителе , представить в виде у = 1/(70Ч- \/4899). Последовательно производя вычисления, получаем \/4899 69,99; 70 + 69,99 = 139,99 и после округления

70 + 69,99 140,0.

Наконец,

и после округления

1/140 = 0,00714285...,

у W 0.007143.

Производя вычисления с дополнительными разрядами, можно проверить, что в обоих случаях все подчеркнутые цифры результатов верные; однако во втором случае точность результата существенно выше. Дело в том, что в первом случае пришлось вычитать близкие большие числа;

в постановке задачи говорится, что требуется найти решение с погрешностью 10~, то чаще всего не имеется в виду обязательность этого требования. Предполагается лишь, что погрешность имеет такой порядок. Если, например, решение будет найдено с погрешностью 2 10~, то такой результат, скорее всего, также удовлетворит заказчика.



5*

Мож1ю вычислять 5*1000 000 либо по рекуррентной с15орму.г1е Sn = 5n i + Дт г = 1,..., 1000000, 5о = О, либо по рекуррентной формуле

I = Z+; = 1000000,...,!, =0, 5 = 51000000-

п~1 п 1 000 000 О

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

Дело заключается в следующем. В большинстве случаев сложение чисел в ЭВМ осуществляется по следующей схеме. Два числа а и Ь складываются абсолютно точно, а затем происходит отбрасывание последних знаков или округление результата с тем, чтобы осталось t или i - 1 значащих цис1)р. В результате получается приближенное значение суммы а + Ь с погрешностью, не превосходящей 2*(а-ЬЬ, но в неблагоприятном случае большей, чем 2~~\a + h\. В первом случае у нас при каждом сложении значение суммы больше 1 и в првдципе возможно получение погрешности около 10 2*. Во втором случае

поэтому погрешность накапливается существенно медленнее. Можно показать, что что погрешность окончательного результата не превосходит 100 2-*.

На конкретной ЭВМ было проведено вычисление 5*1000000 по обоим алгоритмам и оказалось, что для первого алгоритма погрешность ?5i 2 10~, а для второго - 6 10~.

Заметим, что в настоящее время проблемы, возникающие в такого рода простейших задачах, обходятся за счет вычислений с двойной точностью.

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

Рассмотрим другой типичный пример, где порядок выполнения опера-щш влияет па погрешрюсть результата. На машине с плавающей запятой вычисляется значение суммы

1 ООО ООО

5*1000 ООО



\У \

Задача 1. Доказать, что предельная абсолютная погрешгюсть А(у*) минимальна при у* = (Yi -Ь F2)/2, где Yi = iHfy(ai,..., (in). Y2 = snp(/(ai,

Рассмотрим наиболее распространенный случай, когда область G- прямоугольник:

и за приближенное значение принимается

У* = у{а*1,---, а*)-

Если у- непрерывно дис1)с1)еренцируемая функция своих аргументов, то, согласгю с1)ормуле Лагранжа для с])ункций многих переменных,

у(с1,..., с,г) - у* = Ybjie){aj - а*), (2)

:i=i

W = (al+e(ai-~al),...,al+e(an-a:)) , О в I.

Отсюда следует оценка погрешности

\у{аи ..., а ) - у*\ Ло(у*) = JBjAia]), (3)

5у( 1,..., an)

Bj = sup G

da-i

§ 5. Погрешность функции

Довольно часто возникает следующая задача. Искомая величина у является с1)ункцией от параметров ai,...,a : у = y{ai,..., Пп)- Известна область G в пространстве переменных oi,..., а-ц, которой принадлежат эти параметры. Требуется получить приближение к у и оценить его погрешность.

Если у* - приближенное значение величины у, то предельной абсолютной погрешностью А{у*) называют паилучпхую при имеющейся информации оценку погрешности величины *; согласно этому определению в данном случае

А{у*) = Slip ;(/(аь..., а )-у*; (1)

{ai....,a )eG

. . . Л{у*)

предельной отноательнои погрешноспшо называют величину




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
Яндекс.Метрика