"Информатика. Углубленный уровень (в 2-ух частях) ", Поляков К.Ю., Еремин Е.А.
При работе с числами в компьютере неизбежно возникают погрешности из-за ограниченного способа их представления. Эта тема посвящена понятию точности вычислений, видам погрешностей (абсолютной и относительной), причинам их возникновения (округление, потеря значимых цифр) и способам повышения точности, в том числе выбору устойчивых алгоритмов. Понимание этих аспектов критически важно для получения корректных результатов в любых вычислительных задачах.
Текст подготовлен нейронной сетью по теме параграфа и не заменяет учебник — важные факты и формулировки сверяйте с ним.
Абсолютная погрешность — это разница между приближенным значением величины и её точным значением. Другими словами, это величина ошибки в абсолютных единицах измерения. Она показывает, насколько наше приближенное значение отличается от реального. Абсолютная погрешность важна, когда нужно знать величину ошибки в привычных единицах.
Относительная погрешность — это отношение абсолютной погрешности к точному значению величины. Она характеризует точность вычислений в процентах и показывает, какую часть от истинного значения составляет ошибка. Относительная погрешность позволяет сравнивать точность вычислений для разных величин, даже если они измеряются в разных единицах.
Машинная погрешность – это погрешность, возникающая из-за представления чисел в компьютере с ограниченной точностью. В связи с тем, что компьютер не может представить все действительные числа точно, неизбежно происходит округление или отсечение, что приводит к накоплению ошибок при вычислениях. Важно помнить о машинном эпсилоне, определяющем минимально представимое положительное число на компьютере.
Устойчивость алгоритма — это свойство алгоритма не увеличивать погрешность вычислений на каждой итерации. Если алгоритм устойчив, то даже при наличии небольших ошибок округления, они не будут накапливаться и приводить к значительному отклонению результата от истинного значения. Выбор устойчивого алгоритма – залог получения точных результатов.
Реальные числа, особенно иррациональные, невозможно представить в памяти компьютера точно. Компьютер использует систему с плавающей точкой для представления чисел, которая имеет ограниченную точность. Поэтому даже простые числа, такие как 1/3, не могут быть представлены абсолютно точно, что приводит к округлению или отсечению. Именно эта неточность является источником погрешностей в вычислениях.
Округление и отсечение — это два основных способа представления чисел с плавающей точкой. Округление заменяет число ближайшим представимым числом, что, как правило, снижает погрешность, но может вносить систематическую ошибку. Отсечение просто усекает число после определенного знака, что быстрее, но всегда вносит погрешность, величина которой зависит от усечённой части. И округление, и отсечение вносят погрешность, но делают вычисления в компьютере осуществимыми.
При сложении или вычитании величин, существенно различающихся по порядку (например, 1000 + 0.001), возникает потеря значимых цифр. Меньшее число может быть просто проигнорировано из-за ограниченной точности представления чисел. Это приводит к увеличению относительной погрешности, так как ошибка становится более значительной по сравнению с результатом. Потеря значимых цифр подчеркивает важность порядка чисел при выполнении арифметических операций.
Повторяющиеся вычисления с накоплением погрешностей могут привести к значительному отклонению результата от истинного значения. Каждая операция округления вносит небольшую ошибку, которая может накапливаться в цикле или итерационном процессе. Поэтому для сложных задач необходимо выбирать алгоритмы, которые минимизируют накопление ошибок округления. Особенно это важно при решении задач, требующих высокой точности.
Алгоритмы, устойчивые к ошибкам округления, обеспечивают более точные результаты, особенно при решении сложных задач. Эти алгоритмы разработаны таким образом, чтобы минимизировать распространение ошибок и не увеличивать погрешность на каждой итерации. Выбор устойчивого алгоритма – это важный шаг для получения надёжных и точных результатов вычислений.
| Характеристика | Округление | Отсечение |
|---|---|---|
| Принцип | Значение округляется до ближайшего представимого числа | Младшие разряды отбрасываются |
| Погрешность | Обычно меньше, но может быть систематической | Всегда меньше или равна половине единицы младшего разряда |
| Применение | Более предпочтительно при небольшом количестве разрядов | Применяется когда требуется просто усечь число |
Эта таблица наглядно демонстрирует различия между округлением и отсечением. Выбор метода зависит от конкретной задачи и требований к точности. Обычно округление предпочтительнее, так как оно даёт меньшую погрешность в среднем.
Задача 1: Вычислите значение выражения (1 + 1e-10) - 1 на компьютере с машинной точностью 1e-16.
Ответ: Результат будет равен 0 вместо ожидаемого 1e-10. Это демонстрирует потерю значимых цифр при вычитании близких по значению чисел.
Задача 2: Представьте число π (3.1415926535…) с точностью до 4 знаков после запятой. Какова абсолютная и относительная погрешность?
Ответ: Абсолютная погрешность составляет примерно 0.0000073465, а относительная погрешность – около 0.000234%.
Задача 3: Сравните результаты вычисления интеграла методом трапеций для функций f(x) = x^2 и g(x) = sin(x) на одинаковом шаге.
Ответ: Точность вычисления интеграла для функции x^2 будет выше, чем для sin(x), при одинаковом шаге интегрирования. Это иллюстрирует влияние характера функции на точность численного интегрирования.
Игнорирование машинной точности при работе с числами с плавающей точкой может привести к неожиданным результатам. Необходимо понимать, что компьютер не может представить все числа точно, и ошибки округления неизбежны. Важно учитывать машинную точность при сравнении чисел и выполнении арифметических операций.
Сравнение чисел с плавающей точкой на равенство напрямую из-за погрешностей округления. Вместо этого следует использовать небольшую погрешность (epsilon) для проверки, находятся ли числа достаточно близко друг к другу. Прямое сравнение на равенство может привести к ложным результатам.
Неправильный выбор шага при численных методах (например, интегрировании или дифференцировании) может привести к снижению точности. Слишком большой шаг может привести к значительной погрешности, а слишком маленький шаг может потребовать больших вычислительных затрат. Необходим компромисс между точностью и эффективностью.
Использование неустойчивых алгоритмов, которые усиливают погрешность на каждой итерации. Неустойчивые алгоритмы могут приводить к катастрофическим результатам, особенно при решении сложных задач. Важно выбирать устойчивые алгоритмы, которые минимизируют накопление ошибок.
Необходимо понимать основы представления чисел в компьютере (двоичная система счисления, числа с плавающей точкой), так как именно это определяет погрешности вычислений. Также, понимание точности вычислений критически важно при изучении численных методов для решения математических задач, таких как нахождение корней уравнений или вычисление определенных интегралов.
Тема пригодится при изучении машинного обучения и анализа данных, где небольшие ошибки в вычислениях могут привести к неверным моделям и выводам. Понимание погрешностей также необходимо для оценки достоверности результатов и принятия обоснованных решений.
Почему компьютер не может точно представить число π?
Число π – иррациональное число, то есть его десятичное представление бесконечно и непериодично. Компьютер, в свою очередь, может представить число лишь в виде конечной последовательности цифр. Поэтому при представлении π в компьютере происходит округление, что вносит погрешность.
Как уменьшить погрешность при вычислениях?
Уменьшить погрешность можно несколькими способами: использовать тип данных с большей точностью (например, double вместо float), выбирать устойчивые алгоритмы, минимизировать накопление ошибок округления и учитывать машинную точность при сравнении чисел.
Что такое машинная точность?
Машинная точность – это минимальное значение, которое может быть отлично от нуля, представимое в компьютерной арифметике с плавающей точкой. Она определяет предел, с которым можно получать точные результаты вычислений.
Чем отличаются округление и отсечение?
Округление заменяет число ближайшим представимым числом, что обеспечивает меньшую погрешность в среднем, но может быть систематической. Отсечение просто обрывает число после определенного знака, что проще, но всегда вносит погрешность не более половины единицы младшего разряда.
Влияет ли тип данных на точность вычислений?
Да, тип данных оказывает прямое влияние на точность вычислений. Типы данных с большей точностью (например, double) могут представить числа с большим количеством значащих цифр, что уменьшает погрешность округления. Однако, они требуют больше памяти и могут быть медленнее в вычислениях.
§ 69. Точность вычислений