Московский физико-технический институт
Опубликован: 25.10.2007 | Доступ: свободный | Студентов: 3791 / 1086 | Оценка: 4.50 / 4.33 | Длительность: 24:00:00
ISBN: 978-5-9556-0065-9
Специальности: Программист, Математик
Лекция 2:

Предмет вычислительной математики. Обусловленность задачи, устойчивость алгоритма, погрешности вычислений. Задача численного дифференцирования

1.1. Обусловленность задачи

Пример 1.1. Вычислить все корни уравнения

x^4 - 4x^3 + 8x^2 - 16x + 15.\underbrace{99999999}_8 = {(x - 2)}^4 - 10^{- 8}  = 0.

Точное решение задачи легко найти:

(x - 2)^{2}  =  \pm  10^{- 4},
\\
x_{1}= 2,01;  x_{2}= 1,99;  x_{3,4}= 2 \pm  0,01i.

Если компьютер работает при \delta _M  > 10^{ - 8}, то свободный член в исходном уравнении будет округлен до 16,0 и, с точки зрения представления чисел с плавающей точкой, будет решаться уравнение (x-2)4= 0, т.е. x1,2,3,4 = 2, что, очевидно, неверно. В данном случае малые погрешности в задании свободного члена \approx 10^{-8} привели, независимо от метода решения, к погрешности в решении \approx  10^{-2}.

Пример 1.2. Решается задача Коши для обыкновенного дифференциального уравнения 2-го порядка:

u''(t) = u(t), u(0) = 1, u'(0) = - 1.

Общее решение имеет вид

u(t) = 0,5[u(0) + u'(0)]et  + 0,5[u(0) - u'(0)]e- t.

При заданных начальных данных точное решение задачи: u(x) = e-t, однако малая погрешность \delta в их задании приведет к появлению члена \delta e^t, который при больших значениях аргумента может существенно исказить решение.

Пример 1.3. Пусть необходимо найти решение обыкновенного дифференциального уравнения

u^{\prime} = 10u,\quad u = u(t),\\
u(t_0) = u_0,\quad t \in [0,1].

Его решение: u(t) = u_0e^{10(t - t_0 )}, однако значение u(t0) известно лишь приближенно: u(t_0)  \approx  u_0^*, и на самом деле u^*(t) = u_0^*e^{10(t - t_0)}.

Соответственно, разность u* - u будет

u^* - u = (u_0^*  - u_0)e^{10(t - t_0)}.

Предположим, что необходимо гарантировать некоторую заданную точность вычислений \varepsilon  > 0 всюду на отрезке t \in [0,1]. Тогда должно выполняться условие

|{u^*(t) - u(t)}| \le \varepsilon.

Очевидно, что

\max\limits_{t \in [0,1]} |{u^*(t) - u(t)}| = |{u*(1) - u(1)}| = 
|{u_0^* - u_0}|e^{10(1 - t_0)}.

Отсюда можно получить требования к точности задания начальных данных \delta\colon |{u_0^* - u_0}| < \delta , \delta \le \varepsilon e^{ - 10} при t0= 0.

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

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

Пример 1.4. Решением системы линейных алгебраических уравнений (СЛАУ)

\left\{ \begin{array}{l} 
u + 10v = 11 \\ 
100u + 1001v = 1101 \\ 
\end{array} \right.

является пара чисел {1, 1}.

Изменив правую часть системы на 0,01, получим возмущенную систему

\left\{ \begin{array}{l} 
u + 10v = 11.01 \\ 
100u + 1001v = 1101 \\ 
\end{array} \right.

с решением {11.01; 0.00}, сильно отличающимся от решения невозмущенной системы. Эта система также плохо обусловлена.

Пример 1.5. Рассмотрим полином

(x - 1)(x - 2)...(x - 20)=x20 - 210x19 + ...,

корни которого x1 = 1, x2 = 2, …, x20 = 20.

Положим, что коэффициент (-210) при x19 увеличен на \approx  10^{-7}. В результате вычислений с 11-ю значащими цифрами получим совершенно иные корни: x_{1} = 1,00; x_{2} = 2,00; x_{3} = 3,00; x_{4} = 4,00; x_{5} = 5,00; x_{6} = 6,00; x_{7} = 7,00; x_{8} = 8,01; x_{9} = 8,92; x_{10,11} = 10,1 \pm  0,644i; x_{12,13} = 11,8 \pm  1,65i; x_{14,15} = 14,0 \pm  2,52i; x_{16,17} = 16,7 \pm  2,81i; x_{18,19} = 19,5 \pm  19,4i; x_{20} = 20,8.

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