Пред.
След.
Макеты страниц
Распознанный текст, спецсимволы и формулы могут содержать ошибки, поэтому с корректным вариантом рекомендуем ознакомиться на отсканированных изображениях учебника выше Также, советуем воспользоваться поиском по сайту, мы уверены, что вы сможете найти больше информации по нужной Вам тематике ДЛЯ СТУДЕНТОВ И ШКОЛЬНИКОВ ЕСТЬ
ZADANIA.TO
§ 3.4. Корректность вычислительных алгоритмов1. Вычислительный алгоритм.Вычислительный метод, доведенный до степени детализации, позволяющий реализовать его на ЭВМ, принимает форму вычислительного алгоритма. Определим вычислительный алгоритм как точное предписание действий над входными данными, задающее вычислительный процесс, направленный на преобразование произвольных входных данных х (из множества допустимых для данного алгоритма входных данных X) в полностью определяемый этими входными данными результат. Реальный вычислительный алгоритм складывается из двух частей: абстрактного вычислительного алгоритма, формулируемого в общепринятых математических терминах, и программы, записанной на одном из алгоритмических языков и предназначенной для реализации алгоритма на ЭВМ. Как правило, в руководствах по методам вычислений излагаются именно абстрактные алгоритмы, но их обсуждение проводится так, чтобы выявить особенности алгоритмов, которые оказывают существенное влияние на качество программной реализации. 2. Определение корректности алгоритма.К вычислительным алгоритмам, предназначенным для широкого использования, предъявляется ряд весьма жестких требований. Первое из них — корректность алгоритма. Будем называть вычислительный алгоритм корректным, если выполнены три условия: 1) он позволяет после выполнения конечного числа элементарных для вычислительной машины операций преобразовать любое входное данное Необходимость выполнения первого условия понятна. Если для получения результата нужно выполнить бесконечное число операций либо требуются операции, не реализованные на ЭВМ, то алгоритм следует признать некорректным. Пример 3.22. Известный алгоритм деления чисел "углом" некорректен, так как он может продолжаться бесконечно, если не определен критерий окончания вычислений. Пример 3.23. Отсутствие критерия окончания делает некорректным и алгоритм Ньютона вычисления Пример 3.24. Алгоритм вычисления корней квадратного уравнения (3.1) по формулам (3.2) некорректен, если он предназначен для использования на вычислительной машине, на которой не реализована операция извлечения квадратного корня. 3. Устойчивость по входным данным.Устойчивость результата у к малым возмущениям входных данных (устойчивость по входным данным) означает, что результат непрерывным образом зависит от входных данных при условии, что отсутствует вычислительная погрешность. Это требование устойчивости аналогично требованию устойчивости вычислительной задачи. Отсутствие такой устойчивости делает алгоритм непригодным для использования на практике. Отметим, что в формулировку устойчивости алгоритма по входным данным неявно входит одно весьма важное предположение, а именно, что вместе с входным данным х в множество допустимых входных данных X входят и все близкие к х приближенные входные данные х. Пример 3.25. Пусть алгоритм предназначен для вычисления корней квадратного уравнения (3.1) с коэффициентом, удовлетворяющими условию 4. Вычислительная устойчивость.Из-за наличия ошибок округления при вводе входных данных в ЭВМ и при выполнении арифметических операций неизбежно появление вычислительной погрешности. Ее величина на разных ЭВМ различна из-за различий в разрядности и способах округления, но для фиксированного алгоритма в основном величина погрешности определяется машинной точностью ем. Назовем алгоритм вычислительно устойчивым, если вычислительная погрешность результата стремится к нулю при Пример 3.261. Пусть требуется составить таблицу значений интегралов Интегрируя по частям, имеем
Следовательно, справедлива формула
Кроме того, Воспользуемся формулой (3.17) для последовательного вычисления приближенных значений интегралов
Здесь вычисления следует прекратить. Искомые значения интегралов очевидно, положительны, а найденные значения при В данном примере все вычисления проводились точно, а единственная и, на первый взгляд, незначительная ошибка была сделана при округлении значения Однако при вычислении Таким образом, Если вычисления производятся без ограничений на число Как изменить алгоритм, чтобы сделать его устойчивым? Перепишем формулу (3.17) в виде
и будем вести вычисления значений Однако при вычислении В результате значения Вычислительная неустойчивость алгоритма часто может быть выявлена благодаря анализу устойчивости по входным данным, так как неустойчивость к малым ошибкам округления входных данных автоматически свидетельствует о вычислительной неустойчивости алгоритма. Пример 3.27. Предположим, что величины
а величина Справедливости ради следует заметить, что алгоритм (3.19) был признан нами неустойчивым в случае Пример 3.28. Пусть в формуле (3.19) все
|
1 |
Оглавление
|