Заглавная страница Избранные статьи Случайная статья Познавательные статьи Новые добавления Обратная связь FAQ Написать работу КАТЕГОРИИ: ТОП 10 на сайте Приготовление дезинфицирующих растворов различной концентрацииТехника нижней прямой подачи мяча. Франко-прусская война (причины и последствия) Организация работы процедурного кабинета Смысловое и механическое запоминание, их место и роль в усвоении знаний Коммуникативные барьеры и пути их преодоления Обработка изделий медицинского назначения многократного применения Образцы текста публицистического стиля Четыре типа изменения баланса Задачи с ответами для Всероссийской олимпиады по праву
Мы поможем в написании ваших работ! ЗНАЕТЕ ЛИ ВЫ?
Влияние общества на человека
Приготовление дезинфицирующих растворов различной концентрации Практические работы по географии для 6 класса Организация работы процедурного кабинета Изменения в неживой природе осенью Уборка процедурного кабинета Сольфеджио. Все правила по сольфеджио Балочные системы. Определение реакций опор и моментов защемления |
Погрешности чисел с плавающей запятойСодержание книги Поиск на нашем сайте Целое число N не имеет погрешности в формате с плавающей запятой, если Теория погрешностей вычислений в формате с плавающей запятой очень сложна. Ниже приводятся лишь некоторые примеры возникновения таких погрешностей. Погрешность возникает при записи в память чисел, значащая часть которых имеет количество цифр, превышающее размер мантиссы, а также при сохранении вещественных чисел, дробная часть которых в двоичном представлении имеет вид бесконечной дроби. Может показаться неожиданным, что 0,1 (одна десятая) не может быть представлена точно в формате с плавающей запятой, а 0,25 – представима. Погрешность возникает при представлении дробей, знаменатель которых содержит простые множители, отличные от двух, например: 0.110 =1/(2*5) = 0.00011001100 . . . = 0.000(1100) в периодеТочно в формате с плавающей запятой представляется число, модуль которого можно записать в виде следующей несократимой дроби: M/2n , где M и n – натуральные числа.Посмотрим, как можно оценить погрешность представления числа N в формате с плавающей запятой. Для простоты рассмотрим пример, в котором мантисса в формате с плавающей запятой имеет 6 двоичных разрядов (формат 12 битов: 1 бит – знак числа, 5 битов – порядок, 6 битов – мантисса), а N=1045. Получим результат прямым переводом N в двоичную систему счисления: 1045 = 1024 + 16 + 4 + 1 = 100000101012 = 1.00000101012*210 Мантисса m = 1.00000101012-1 = 0.00000101012 Порядок p = 1010 = 10102,смещенный порядок рсм = 15+10 = 25 = 1100121|1|0|0 0|0|0|0|0|1
0 1 0 1 + 5 6
остаток В ячейку памяти поместилось число 1.0000012*210.. Переведём сохраненное число в десятичную систему счисления: это будет 1040. Погрешность составляет 1045 – 1040 = 5. В данном формате с плавающей запятой точно представлены только 6 старших разрядов мантиссы, и ещё один бит не сохраняется, он имеется в каждом числе по умолчанию, итого чтобы число сохранялось точно, оно должно иметь не более 7 цифр в значащей части. Погрешности возникают и при арифметических операциях над числами с плавающей запятой. Сложив на ЭВМ 8-значное целое десятичное число N с единицей, используя 32-разрядный двоичный формат с плавающей запятой, получим N + 1 = N !!!,так как восьмая, младшая цифра числа N не попадает в мантиссу. Чтобы проще представить исчезновение единицы при сложении, рассмотрим вместо записи в двоичной системе счисления пример с десятичными числами, представленными в полулогорифмической форме с 7-разрядной мантиссой: N = 12 345 678 ≅ 0.1234567*108, 7 цифр N + 1 = 12 345 679 ≅ 0.1234567*108.N и N+1 в полулогарифмической форме с семью знаками выглядят одинаково, так как погрешность превышает величину изменения числа. При сложении чисел в форме с плавающей запятой может нарушаться сочетательный (ассоциативный) закон: N + 1 + 1 + ... + 1 ≠ N + ( 1 + 1 + ... + 1) , 20 единиц 20 единиц N + 1 + 1 + ... + 1 = N = 0.1234567*108, 20 единиц a N + ( 1 + 1 + ... + 1) = N + 20 = 0.1234569*108 + 20 единицПримеры сложения чисел в 32-разрядном двоичном формате с плавающей запятой из-за большого количества разрядов теряют свою наглядность, поэтому рассмотрим сложение чисел 1040 и 1 в приведенном выше 12-битном формате с 6-битной мантиссой. Число 1040 точно представимо в данном формате. Его представление было рассмотрено выше: 1040 = 100000100002 = 1.0000012*210, число 1 будет представлено следующим образом: 1 = 1.000000*100 (хранимая мантисса = 0, порядок = 0, смещенный порядок = 15). Для выполнения сложения нужно привести слагаемые к одному порядку, для этого надо сдвинуть вправо мантиссу меньшего по модулю слагаемого на число разрядов, равное разности порядков складываемых чисел. В нашем примере нужно сдвинуть мантиссу единицы на 10-0=10 разрядов 1045 1|1|0|0 0|0|0|0|0|1
1 1|1|0|0 0|0|0|0|0|0
0 0 0 1 Происходит потеря значащей части меньшего слагаемого. В результате сложения получим 1,000001*210 = 1040 В первом приближении можно считать, что если a > 107 , b то в 32-разрядном двоичном формате с плавающей запятой a + b = a.
|
||
|
Последнее изменение этой страницы: 2024-06-17; просмотров: 57; Нарушение авторского права страницы; Мы поможем в написании вашей работы! infopedia.su Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Обратная связь - 216.73.216.198 (0.009 с.) |