Тема исследования: Почему нужно добиваться высокой точности в вычислительной работе?
Объект исследования: компьютерная арифметика.
Цель исследования: Выявить влияние "плохой" погрешности на события, процессы окружающей действительности.
Задачи исследования:
- Сформировать понимание важности проблемы точности компьютерных вычислений.
- Научиться составлять план проведения экспериментальной работы.
- Научиться анализировать результаты экспериментальной работы.
- Научиться организовать поиск информации..
- Научиться анализировать информацию, выделять главное и представлять результаты анализа в адекватной форме.
Ход исследования:
Одним из примеров с точность компьютерных вычислений является расчет вычисления суммы начисления в банке по вкладу.
Задача: "Банк "ИНВЕСТИЦИИ" начисляет выгодные проценты по вкладам. Какова будет сумма вклада, положенная гражданином И. на 5 лет под 7,5%, если он внес 1233 тыс. рублей".
Получается, что сумма вклада становится равной 1770,1309591699217 тыс. руб и погрешность будет увеличиваться с каждым годом.
Если вычислить сумму вклада с помощью онлайн-калькулятора, то сумма вклада через пять лет будет равна 1695,459 тыс. руб.
Вычислив разницу между данными суммами, получаем: 74,671959169921 тыс.руб.
Получается, что компьютер наращивает сумму вклада из-за погрешности суммирования вещественных чисел.
Конечный продукт
Конечный продукт
Исторический пример "плохой" погрешности
Ошибка Pentium FDIV
Ошибка Pentium FDIV — это ошибка в модуле операций с плавающей запятой в оригинальных процессорах Pentium, выпускавшихся фирмой Intel в 1994 году. Ошибка выражалась в том, что при проведении деления над числами с плавающей запятой при помощи команды процессора FDIV в некоторых случаях результат мог быть некорректным
Воспроизведение ошибки
Воспроизвести ошибку можно самостоятельно в приложениях, которые используют математический сопроцессор при работе с числами с плавающей запятой.
4195835.0/3145727.0 = 1.333 820 449 136 241 002 (правильное значение)
4195835.0/3145727.0 = 1.333 739 068 902 037 589 (ошибочное значение, возвращаемое процессором, содержащим дефект)
4195835.0/3145727.0 = 1.333 820 449 136 241 002 (правильное значение)
4195835.0/3145727.0 = 1.333 739 068 902 037 589 (ошибочное значение, возвращаемое процессором, содержащим дефект)
Более наглядный способ воспроизведения:
4195835*3145727/3145727 = 4195835 (при умножении и делении на одно и то же число получаем исходное число)
4195835*3145727/3145727 = 4195579 (ошибочное значение, возвращаемое процессором, содержащим дефект)
4195835*3145727/3145727 = 4195835 (при умножении и делении на одно и то же число получаем исходное число)
4195835*3145727/3145727 = 4195579 (ошибочное значение, возвращаемое процессором, содержащим дефект)
Методы защиты
- В компиляторе Delphi предусмотрена опция Pentium Safe FDIV, заставляющая компилятор вместо использования ассемблерной команды FDIV в коде программы применять вызов специальной процедуры, которая при первом вызове производит проверку наличия ошибки, и, в зависимости от результата, при этом и последующих вызовах либо выполняет простой FDIV, либо производит коррекцию результата.
- В компиляторе Visual Basic предусмотрена проверка наличия данной ошибки, которая включена по умолчанию. Однако она отключается специальной опцией компилятора — Remove Safe Pentium™ FDIV Checks. В случае её включения компилятор не генерирует дополнительного кода и в некоторых случаях скорость вычислений возрастает.
Ответ на вопрос:
Почему нужно добиваться высокой точности в вычислительной работе?
Даже незначительные ошибки в вычислительной работе могут привести к большим проблемам в научных экспериментах, экономике, медицине, бизнесе и других сферах.
Перефразируя известное выражение можно сказать: "Сто раз проверь, один раз запусти программу в свет!"
Бонусное задание
Бонусное задание
Молодцы: отличный пример демонстрации негативного влияния погрешности компьютерных вычислений на результаты решения банковской задачи!
ОтветитьУдалитьСУПЕРРР РОЛИК! НАША КОМАНДА В ВОСТОРГЕ!
ОтветитьУдалитьУважаемые экспериментаторы, проведенные вами исследования подтверждают практическую значимость проблемы точности компьютерных вычислений в реальной действительности. Ваши выводы и предложения по организации вычислительной работы на компьютере, имеют практическое значение. Прекрасное представление результатов вашей работы: двух примеров в двух видеороликах с использованием различных сервисов! Наличие ссылок на источники! Всё это вызывает уважение к вашему трудолюбию, компетентности, профессионализму. До встречи на заключительном этапе!
ОтветитьУдалить