Но точность определяется не только качеством алгоритма и применяемыми вычислительными системами, но и обусловленностью решаемой вычислительной задачи.
Рассмотрим эту характеристику более подробно. Под обусловленностью вычислительной задачи понимают чувствительность ее решения к малым изменениям входных данных. Задачу называют хорошо обусловленной, если при малых изменениях входных данных результат также изменяется незначительно. Задача называется плохо обусловленной, если малые изменения входных данных могут привести к большим изменениям решения. Подробно вопросы обусловленности вычислительных задач и интересные примеры плохо обусловленных задач приведены в [Амосов А. А., Дубинский Ю. А., Копченова Н. В. Вычислительные методы для инженеров].
Часто входные данные и параметры модели являются результатом экспериментов и, следовательно, они лишь приблизительно отражают реальные физические значения. Ошибки могут быть вызваны как неточностью измерений, так погрешностью эксперимента. Поэтому в плохо обусловленной задаче вероятность получения точного решения незначительна. Причем эта возможная неточность
ПРИМЕР плохо обусловленной задачи [Бартеньев О. В. Фортран для профессионалов]. Пусть требуется
решить уравнение . (2.2.1)
Левая часть уравнения равна (x–2)4,
поэтому все корни уравнения совпадают и равны 2 (см.
график функции ). Предположим, что свободный член определяется
с ошибкой, равной 10-8. Тогда, решаемое уравнение имеет вид
(2.2.2)
Уравнение (2.2.2) эквивалентно уравнению (x–2)4=(0,01)4. Корни этого уравнения можно найти аналитически, и они равны x1=2.01, x2=1.99, x3=2+0.01i, x4=2–0.01i. Таким образом, относительная погрешность результатов равна 0.5%, это значительно больше относительного изменения свободного члена равного 10-6 % и говорит о плохой обусловленности задачи. Для вычисления корней уравнения (2.2.1) составим программу, используя подпрограмму ZPORC из IMSL.
PROGRAM ROOTS
USE MSIMSL
INTEGER, PARAMETER:: N=4
REAL::COEFF(0:N)=(/16.0,-16.0,8.0,-4.0,1.0/)
COMPLEX::ROOT(N)
CALL ZPORC(N,COEFF,ROOT)
PRINT *,ROOT
END PROGRAM ROOTS
Результаты работы программы:
(2.000097, 0.000000E+00) (–1.396984E–9, 2.000000)
(–1.396984E–9, –2.000000) (1.999903, 0.000000E+00)
Изменим программу,
так чтобы изучить влияние величины ошибки задания свободного члена на точность
вычисления корней. Применить программу для выполнения
индивидуальных заданий.