Читайте также: |
|
Арифметическое переполнение – специфичная для компьютерной арифметики ситуация, когда при арифметическом действии результат становится больше максимально возможного значения для переменной, использующейся для хранения результата.
Пример. Сложение двух переменных размером 8 бит с записью результата в перемен-ную того же размера:
возникает переполнение. При этом в результат записывается вместо ожидаемого
совсем другое число
Если не проверять, было ли переполнение, то может возникнуть логическая ошибка в программе, о чём в некоторых случаях во время исполнения не узнает ни платформа, ни операционная система (как, например, в Java).
Округление. Округление используется для того, чтобы работать с числами в пределах того количества знаков, которое соответствует реальной точности параметров вычислений (если эти значения представляют собой измеренные тем или иным образом реальные величины). Кроме того, использование округлений, в том числе промежуточных, может требоваться для защиты от вычислительных ошибок, связанных с конечной разрядностью вычислительных устройств.
Исчезновение порядка. Ограничения на порядки чисел, представляемых в ЭВМ, порой приводят к прекращению вычислений (так называемое исчезновение порядка); в других случаях относительно небольшая разрядность представления чисел в ЭВМ приводит к недопустимому искажению результата вычислительной погрешностью. Приведем несколько примеров иллюстрирующих это и способы (приемы) уменьшения вычислительной погрешности за счет несложных алгебраических преобразований.
Пример 1. Необходимо отыскать минимальный корень уравнения. Вычисления произво-дим в десятичной системе счисления, причем в числе после округления оставляем четыре действующие цифры (разряда):
Рассмотрим другой алгоритм вычисления корня, для чего избавимся от иррациональности в числителе:
Как видно из сравнения полученных результатов, применение "неудачного" алгоритма завышает результат на 30 %. Это явление в прикладной математике (в практике вычислений) называется потерей значащих цифр, и часто наблюдается при вычитании близких величин. Потеря значащих цифр, например, довольно часто приводит к существенному искажению результатов при решении даже сравнительно небольших систем линейных алгебраических уравнений.
Пример 2. На машине с плавающей запятой необходимо вычислить значение суммы
.
Эту сумму можно вычислить двумя способами:
Оказывается, для второго алгоритма вычислительная погрешность будет существенно меньше.
Тестовые расчеты на конкретной ЭВМ по первому и второму алгоритмам показали, что величина погрешности для обоих алгоритмов составляет 2•10-4 и 6•10-8соответственно. Причина этого ясна, если вспомним, как числа представлены в ЭВМ (см. рис. 1.1).
Рис. 1.1. Представление чисел с плавающей точкой в типичном
32-бит (4 - байт) формате:
а) Число ½; b) число 3; c) число ¼; d) число 10-7, представленное в машине с максимальной точностью (нормализованное); e) то же самое число 10-7, но представленное с тем же порядком, что и число 3*; f) сумма чисел 3 + 10-7, которая эквивалентна 3.
Этот пример ярко иллюстрирует тот факт, что даже если оба слагаемых представлены в компьютере точно, то их сумма может быть представлена с погрешностью, особенно если слагаемые различаются на порядки.
Lecture № 5
Дата добавления: 2014-12-15; просмотров: 33 | Поможем написать вашу работу | Нарушение авторских прав |