Амосов А.А., Дубинский В.А., Копченова Н.В. Вычислительные методы для инженеров (1994) (1095853), страница 16
Текст из файла (страница 16)
Действительно, с* = 0.999998, с~~ = 0.999992 и у' = с* — с* = 0.000006. При вычитании старшие разряды оказались потерянными и в результате осталась только одна значащая цифра. Зх Вычисление по эквивалентной формуле у = 2зш — з1п —, позволяет избе- 2 2' жать вычитания близких чисел и дает значение у* = 0.624741.10 з с шестью верными цифрами. Интересно отметить, что у и 1.5хз, причем использование этой приближенной формулы в данном случае дает 6 верных значащих цифр, в то время как вычисления по формуле (3.21) — только одну верную цифру. 3 а м е ч а н и е. Не всегда катастрофическая потеря точности в промежуточных вычислениях действительно является катастрофой. Все зависит от того, как в дальнейшем используется результат.
70 3. Обусловленность вычислительного алгоритма. По аналогии с понятием обусловленности математической задачи можно ввести понятие обусловленности вычислительного алгоритма, отражающее чувствительность результата работы алгоритма к малым, но неизбежным ошибкам округления. Вычислительно устойчивый алгоритм называют хорошо обусмооленнъьм, если малые относительные погрешности округления (характеризуемые числом е ) приводят к малой относительной вычислительной погрешности 6(у*) результата у*, и плохо обусловлеи- им.и, если вычислительная погрешность может быть недопустимо боль- шой.
Если Б(у*) и км связаны неравенством д((у') ~ иле„, то число ил следует называть число а обусловленности вычислительиоьо ал~оритала. Для плохо обусловленного алгоритма ол > 1. При очень большом значении числа обусловленности алгоритм можно считать практически неустойчивым1, Применим, например, алгоритм, первоначально предложенный в примере 3.26, для вычисления конечной серии из У интегралов 1п А, 1у Тогда коэффициент роста ошибки и,~ окажется конечным. Иными словами,при вычислении конечной серии интегралов алгоритм формально оказывается устойчивым. Тем не менее уже при не очень больших значениях У он настолько плохо обусловлен, что в практиче- ском плане может считагься неустойчивым.
Для решения хорошо обусловленной задачи нет смысла применять плохо обусловленный алгоритм. Именно такими являются алгоритмы, первоначально предложенные в примерах 3.26 и 3.30. Вернемся к примеру 3.30. Задача вычисления функции ех хорошо обусловлена (см. пример 3.10). Можно ли было предвидеть катастро- фическую потерю точности при вычислении значения е 8 ' прямым суммированием ряда (3.20)7 Рассмотрим задачу суммирования ряда Е а~ со слагаемыми а~ = й=о 1с И ' = — . Каждое из этих слагаемых вычисляется с относительной ошиб- кой б(а~) > ям. При х с 0 формула (3.10) с учетом разложения (3.20) ~ .~й дает значение и = Š—, / ~ Š—,~ = ет!4.
Рост модуля х (для х т=о И ~~=о Ы ( О) приводит к резкому ухудшению обусловленности вычислений. Для х = -8.1, как в примере 3.30, имеем и = е'е т ю 107. Поэтому неудивительна полная потеря точности при вычислениях на 6-разрядной десятичной ЭВМ. Рассмотрим теперь обусловленность алгоритма прямого вычисления по формуле (3.21). Если величина х не слишком мала (2х2 > зм), то значения с м 1 — — и с, в 1 — 2х2 будут содержать ошибки порядка т 1 2 ' Иногда такие плохо обусловленные алгоритмы называют численно неустойчивыми.
71 е„,. Поэтому Ь(у') - 2е„,. Учитывая, что у м 1.5х~, найдем оценку границы относительной погрешности 0(у*) — х 2а„. Число обусловленности и - х 2 растет с уменьшением ~ х~. В случае, когда 2хх < ем, в результа- те вычислений будут получены значения с* = 1 с' = 1 и у* = с*— х 1 — с* = О. Здесь Б(у') = ~ у — у*~/~ у! = 1 и происходит полная потеря точности.
Если алгоритм, предназначенный для решения хорошо обусловленной задачи, оказался плохо обусловленным, то его следует признать неудовлетворительным и попытаться построить более качественный алгоритм. В примерах 3.30 и 3.31 это удалось сделать сравнительно легко. Однако для плохо обусловленных задач дело обстоит иначе. Ключ к пониманию дает следующее высказывание [67~: "Если задача плохо обусловлена, то никакие усилия, потраченные на организацию изощренных вычислений, не могут дать правильных ответов, исключая случайности". Здесь требуется серьезное переосмысление постановки вычислительной задачи.
З 3.6. Различные подходы к анализу ошибок 1. Прямой анализ ошибок. Общий эффект влияния ошибок обычно учитывают следующим образом. Изучают воздействие ошибок входных данных, метода и округлений на получаемый результат у" и пытаются оценить некоторую меру близости у* к истинному решению у. Такой метод исследования называяют иряльыль анализом ошибок. В большинстве случаев в данной книге мы будем следовать этому традиционному пути.
Во многих (но далеко не во всех) случаях оценки погрешности удается получить; однако довольно часто они оказываются сильно завышенными и приводят к неоправданному пессимизму в оценке качества приближенного решения. Реальная величина погрешности у — у* часто значительно меньше, чем ее оценка, рассчитанная на самый неблагоприятный случай и выведенная с помощью прямого анализа. Особенно трудным является прямой анализ вычислительной погрешности. 2. Обратный анализ ошибок.
В последнее время получил широкое распространение другой подход к оценке влияния ошибок. Оказывается, что довольно часто приближенное решение у" можно трактовать как точное решение той же задачи, но отвечающее возмущенным ис- 00насснь неелререненнести решения 00насть неенререненнаппа 0хорнаеа данноео Каждый из указанных двух подходов к оценке погрешности имеет свои достоинства и полезным является разумное их сочетание. Пример 3.32.
Пусть на 6 — разрядной десятичной ЭВМ вычисляется корень уравнения х~ — 12.5хь + 62.5хз — 156.25ха + 195.3125х — 97.65625 = О. При вводе в ЭВМ последние два коэффициента будут округлены до шести значащих цифр и уравнение примет вид Р*(х) = х~ — 12.5хь + 62.5х~ — 156.25га + 195.313х — 97.6563 = О. (3.22) Допустим, что некоторый алгоритм, примененный к этому уравнению, дал значение приближенного решения х' = 2.6. Следуя логике прямого анапиза 73 ходным данным х*. Оценка величины такого эквивалентного возмущения и является целью обратносо анализа оиьибок.
В прикладных задачах входные данные, как правило, содержат погрешности. Обратный анализ показывает, что ошибки, внесенные в решение в процессе его вычисления, оказываются равносильными некоторым дополнительным ошибкам, внесенным во входные данные. Сопоставление величины эквивалентного возмущения и уровня ошибок входных данных позволяет судить о качестве найденного решения. На рис. 3.5 представлена графическая иллюстрация обратного анализа ошибок. Здесь данное х* таково, что решением задачи, соответствующим х', является у* — результат приближенного решения задачи с входным данным х.
На рисунке заштрихована область неопределенности входного данного; в пределах этой области входные данные для решающего задачу неразличимы. В представленном случае х* оказалось внутри этой области, поэтому результат у" следует признать вполне приемлемым. ошибок, чтобы оценить качество полученного приближения нужно было бы задаться вопросом: насколько отличается х от истинного решения х уравнения (3,22)? Мы поступим иначе.
Подставляя х* в левую часть уравнения (3.22), получим значение Р*(х) = 0.00126. Заметим теперь, что х" = 2.6 является точным решением уравнений х5 — 12.5л" + 62.5хз — 156.25гз + 195.3125х — 97.65626 = О, х~ — 12.5х4 + 62.5хз — 156.25хт + 195.31252х — 97.656312 = О, Представляется, что значение обратного анализа ошибок недостаточно осознанно, в особенности среди непрофессиональных вычислителей.
Этот подход показывает на возможность иного взгляда на оценку качества приближенного решения, а, значит, и на качество многих вычислительных алгоритмов. Сложившийся стереотип заставляет искать приближенное решение у' математической задачи, мало отличающееся от ее истинного решения у. Однако для большинства практических задач в силу неопределенности в постановке н входных данных в действительности существует и область неопределенности решения (см.
рис. 3.5). Поскольку эта область неизвестна, оценить степень близости вычисленного решения у* к ней очень трудно. Гораздо проще, быть может, получить ответ на аналогичный вопрос для входного данного х', соответствующего решению у*. Поэтому можно сформулировать цель вычислений и так: "найти точное решение задачи, которая мало отличается от поставленной задачи" или же так: "найти решение задачи с входным данным х*, находящимся в пределах области неопределенности заданного входного данного х". Пример 3 33.