Главная страница Случайная страница КАТЕГОРИИ: АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника |
Погрешность машинных вычислений и представлений чисел в памяти ЭВМ
Даже если исходная информация не содержит ошибок и вычислительный процесс некоторого алгоритма конечен, с помощью компьютера невозможно производить точные расчеты без округления промежуточных результатов вычислений в силу ограниченности разрядной сетки ЭВМ. Проблема округления чисел относится только к действительным числам, при выполнении арифметических операций (за исключением деления) с целыми числами потребность в их округлении не возникает. Для представления в памяти компьютера ненулевых чисел с одинаковым количеством значащих цифр применяют так называемое представление с плавающей точкой: , где – порядок, выбранный так, чтобы обеспечить неравенства для мантиссы . При этом все числа с одинаковым количеством значащих цифр имеют в своих мантиссах одинаковое количество десятичных знаков после десятичной точки. Под каждое число с плавающей точкой отводится место (ячейка) в памяти компьютера, достаточное для размещения цифр мантиссы. В той же ячейке памяти размещается знак числа и его порядок . Это позволяет хранить в памяти компьютера числа, порядки которых удовлетворяют условию , где и не зависят от знаков хранимых чисел. Следствием ограниченности разрядной сетки компьютера является то, что в ней не могут быть представлены числа, мантиссы которых содержат бесконечную последовательность ненулевых цифр или числа, абсолютные величины порядков которых слишком велики. Машинными числами в двоичной системе счисления (числами, представимыми в компьютере) называются вещественные числа вида
, где . Таким образом, машинное число – это такое число с плавающей точкой, мантисса которого содержит не более цифр, а порядок лежит в заданном интервале . Нетрудно понять принципиальную невозможность определения обычных арифметических операций над множеством машинных чисел. Это связано с тем, что результат выполнения арифметической операции над парой машинных чисел может уже не быть машинным числом. Может оказаться, что для точного представления результата выполнения арифметической операции требуется больше, чем цифр и его мантисса «не умещается» в стандартную ячейку памяти компьютера. Перемножая два машинных числа, содержащих по значащих цифр, мы получим, вообще говоря, число, имеющее значащих цифр. Для точного представления результата их деления может потребоваться бесконечное множество значащих цифр. Подобные примеры показывают, что множество машинных чисел незамкнуто относительно обычных арифметических операций и результат их выполнения может не являться машинным числом. Итак, в вычислительной машине в силу ряда причин невозможно как точно представить исходные числа, так и реализовать арифметические операций с их использованием. Возникает естественный вопрос о том, как ошибка в исходных числах или в результатах арифметических операций распространяется далее в ходе вычислений. Становится ее влияние больше или меньше по мере того, как производятся последующие операции?
|