Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Скачиваний:
139
Добавлен:
16.05.2015
Размер:
3.82 Mб
Скачать

Особые случаи при вычислениях с приближенными числами

Резкий рост абсолютной и относительной погрешности окончательного результата обычно наблюдается, если в процессе вычисления появляются величины с очень большими абсолютными или относительными погрешностями. Такие величины могут появиться, даже если абсолютная и относительная погрешности исходных данных малы. Определенные неприятности может доставить и машинный ноль и машинная бесконечность. Рассмотрим такие случаи.

Случай 1. При вычитании двух близких чисел может оказаться, что относительная погрешность разности много больше, чем относительные погрешности уменьшаемого и вычитаемого. Это всегда приводит к потере верных значащих цифр у разности, вплоть до их полного исчезновения.

Объяснить это не сложно. Пусть имеются две числовые величины x и y и величина . Приближенные значения величиныихранятся в памяти компьютера в форме с плавающей запятой, например в виде значений типаsingle, причем погрешности исвязаны только с машинным округлением при записи их в память компьютера. Вычисляется приближенное значение разностии записывается в память компьютера.

Найдём оценки абсолютной и относительной погрешности этого результата машинной операции.

Согласно формулам (1.5.11) и (1.5.12),

отсюда

Согласно формуле (1.5.2),

, (1.15.13)

. (1.15.14)

Из последней формулы видно, что может иметь очень большие значения, если величинастановится очень маленькой, причём чем ближе значенияи, тем больше оценка относительной погрешности разности. Если, например,;, то. Если наши данные представлены в памяти компьютера как данные типаsingle, то значение и. В этом случае в записине более одной верной значащей цифры (см параграф 1.3). В то же время относительные погрешности аргументов. Поэтому в записиибудет, по крайней мере, семь верных значащих цифр. Налицо резкий рост относительной погрешности сдо 1 и потеря шести верных значащих цифр у приближённого результата.

Механизм потери верных значащих цифр проиллюстрируем на следующем примере.

Пример 3

Пусть ищется разность , известны12,34678,12,34567 – близкие приближенные значения величини. Все цифры в их записи верны в широком смысле слова. В качестве приближенного значения результатавыбрано число. Требуется найти оценку абсолютной и относительной погрешности, а также верные значащие цифры в записи результата.

Так как последние цифры в записи иверныеОтсюда,, .

Следовательно, верными будут первые две единицы в записи . Абсолютная погрешность результата выросла незначительно, зато относительная – на пять порядков. В то время как у аргументовибыло по семь верных значащих цифр, у результата их осталось два. Рассмотрим подробнее как это произошло. Дело в том, что при вычитании (в столбик) верные цифры, стоящие в первых четырёх разрядах превратились в нули:

_ 12,34678

12,34567

0,00111 .

Эти нули остались верными цифрами, но перестали быть цифрами значащими (верные цифры в записи приближенного значения разности подчёркнуты).

В рассматриваемом примере сильно выросла оценка относительной погрешности, а оценка абсолютной погрешности выросла незначительно. Но если числа иоказываются велики, например, то вычислив по формуле (1.15.13) оценку абсолютной погрешности разности, получим

.

Если для хранения данных используется тип single, то Таким образом, еслииоказываются не только близкими, но и большими по абсолютной величине, то разностьбудет иметь не только большую относительную, но и большую абсолютную погрешность.

Случай 2. При выполнении операций, приводящих к большим по абсолютной величине числам, располагающимся на краю диапазона чисел с плавающей запятой (возле машинной бесконечности), результат имеет очень большую абсолютную погрешность.

Пусть для записи данных в память компьютера используется тип single языка Pascal, тогда , а максимальное положительное число этого типа равно 3,4. Пусть– результат некоторой арифметической операции с числами, записанными в памяти компьютера (как данные типаsingle). Тогда оценка относительной погрешности результата операции равна:. Если, например, модуль результата, то оценка абсолютной погрешности этого результата.

К таким результатам можно прийти, например, при вычислении произведения величин, по модулю больших 1, с достаточно большим числом членов, при вычислении достаточно высокой степени величины, большей 1.

Случай 3. Если в результате каких-либо операций получается число, отличное от нуля, но настолько маленькое по абсолютной величине, что оно попадает в зону машинного нуля, то этот результат записывается в память компьютера как ноль со всеми вытекающими отсюда последствиями.

Пусть, например, для представления чисел x и y в памяти компьютера используется тип single из языка . Наименьшее положительное число этого типа равно примерно, а наибольшее. Если, то при записив память компьютера это число представляется нулем ().

Поэтому при умножении нана компьютере мы получим ноль, а не(как оно есть на самом деле).

К машинному нулю мы можем прийти, например, при вычислении произведения величин, отличных от нуля и по модулю меньших 1, при вычислении степени числа отличного от нуля и меньшего 1.

Если в алгоритме при вычислении промежуточных результатов возникают особые случаи, то погрешность окончательного результата может намного превышать ожидаемую (в соответствии с описанной общей статистической тенденцией). Поэтому таких особых случаев следует, по возможности, избегать. Даже простейший анализ алгоритма на наличие и устранение особых случаев может существенно расширить сферу его безопасного применения. К сожалению, общего способа избавления от особых случаев не существует. Иногда можно избавиться от них небольшой модификацией алгоритма, преобразованием формулы. А иногда приходится полностью менять весь численный метод.

Пример 4

Рассматривая пример , мы установили, что задача вычисления наименьшего корня этого уравнения является корректно поставленной и хорошо обусловленной, если в качестве множества допустимых значений исходного данногоu мы выбрали . Значение корня вычислим по формуле

.

Требуется проанализировать алгоритм вычисления z на предмет наличия особых случаев.

Значение величины z представляет собой разность. Поэтому может возникнуть особый случай 1, если эта разность станет очень маленькой.

Посмотрим как ведет себя эта разность при .

Таким образом, при больших значениях u у нас возникнет особый случай 1 и результат z будет иметь большую относительную и абсолютную вычислительную погрешность. От этой неприятности можно избавиться путем замены формулы для вычисления результата. В процессе вычисления предела и раскрытия неопределенности мы преобразовали нашу формулу

.

Если мы будем вычислять по новой формуле, то особого случая 1 не возникнет.

При вычислении предела в примере 1 возникла неопределенность вида , которую мы раскрыли с помощью известного преобразования (умножение и деление на сопряженное выражение), и получили новую формулу для вычисленияz, при вычислении по которой уже не возникает особого случая 1. Это не случайное совпадение. Особые случаи часто связаны с наличием неопределенностей при тех или иных предельных переходах. Особый случай 1 обычно возникает, если в формуле имеется разность выражений и значение этой разности стремится к нулю при каком-либо стремлении аргументаu (). Если при этом модули уменьшаемого и вычитаемого стремятся к бесконечности, то возникает неопределенность вида. Особые случаи 2 и 3 возникают, когда в формулеимеются выражения, стремящиеся кили 0 при каком-либо стремлении аргументаu. В таких случаях нередко возникают неопределенности различных видов (,,,,,и т. п.). Раскрывая эти неопределенности, удается, как правило, получить новую формулу, при вычислении по которой особых случаев не возникает. В примере 1 для раскрытия неопределенности мы использовали преобразование, применимое только для иррациональностей специального вида. Но существует более мощный инструмент раскрытия неопределенностей – формула Тейлора.

Пример 5

Исходное u данное и результат z связаны отношением

, . (1.15.15)

При выражениестремится к, причем очень быстро, например при0 значение этого выражения равно. Поэтому в тех случаях, когда подобные значения аргумента являются рабочими, может возникнуть особый случай 2. Требуется получить новую формулу для вычисленияz, при вычислении по которой не возникнет этот особый случай 2.

Нетрудно заметить, что при. Поэтому при вычислении предела

возникла неопределенность вида . Для ее раскрытия мы используем формулу Тейлора, но вначале сделаем замену переменных, чтобы стремлениепревратилось в более удобное для нас стремление. В результате получим

. (1.15.16)

После замены переменных наш предел превратился и замечательный предел

.

И возникла новая неопределенность вида . Для ее раскрытия можно использовать формулу Тейлора

где .

Подставим это представление в формулу (1.15.16):

. (1.15.17)

После этого преобразования неопределенность в определении предела исчезла. Правда, мы получили не точную, а приближенную формулу, погрешность которой зависит от x и n. Но эту погрешность можно сделать меньше любого наперед заданного положительного числа. В самом деле, допустим мы хотим получить новую приближенную формулу для вычисления z, абсолютная погрешность которой не превышала бы при. Это значит, что погрешность формулы не должна превышатьпри. Таким образом, должно выполняться неравенство

.

А оно выполняется при . Следовательно, приможно заменить формулу (1.15.15) приближенной формулой

. (1.15.18)

При вычислении по ней не возникает никаких особых случаев.

Приведенный анализ погрешности округлений показывает, что наилучшие условия для счета на ЭВМ возникают тогда, когда модули всех величин вычислительного алгоритма (исходных данных, результатов окончательных и промежуточных) имеют числовые значения порядка 1. Тогда практически исключены все особые случаи. Этого стараются добиться путем масштабирования величин входящих в вычислительный алгоритм. Не следует забывать, что прикладная математическая задача является результатом моделирования природных или социальных явлений или процессов. Поэтому все числовые величины, присутствующие в прикладной математической задаче, первоначально имели какие-то размерности. Эти размерности просто отбрасываются при построении математической модели. Если какая-то из числовых величин прикладной задачи x выражает значение длины, то числовое значение величины x будет зависеть от того, какая размерность длины использовалась (до того, как ее отбросили). Если длина измерялась в миллиметрах и при этом числовое значение х равнялось 1000000, то при переходе к километрам числовое значение х становится равным 1. Таким образом, подобрав подходящие изначальные размерности для величин, входящих в нашу математическую модель, нередко удается добиться желаемого результата. С помощью масштабирования часто удается существенно снизить вычислительную погрешность и тем самым сделать работу компьютерной программы более стабильной.

Соседние файлы в папке ВМ_УЧЕБНИК