Какие объекты исследует вычислительная математика |
Численное решение систем линейных алгебраических уравнений
К численному решению систем линейных алгебраических уравнений (СЛАУ) сводятся многие задачи математической физики. Математические модели, представляющие собой СЛАУ большой размерности, встречаются в математической экономике, биологии и т.п. Теория получения приближенных решений СЛАУ — часть вычислительной линейной алгебры. Сама вычислительная линейная алгебра, по-видимому, является наиболее обширной темой во всем курсе вычислительной математики. По прикладной линейной алгебре существует обширная литература (например, [2.1, 2.2, 2.3, 2.4, 2.5], а программы, реализующие наиболее популярные алгоритмы вычислительной линейной алгебры, являются неотъемлемой частью прикладного программного обеспечения, в частности, современных математических пакетов.
2.1. Постановка задачи
Рассмотрим СЛАУ вида
![]() |
( 2.1) |
где — невырожденная (
) квадратная матрица размером n x n
![\mathbf{A}= \left( \begin{array}{cccc}
a_{11} & a_{12} & \ldots & a_{1n}\\
a_{21} & a_{22} & \ldots & a_{2n}\\
\ldots & \ldots & \ldots & \ldots \\
a_{n1} & a_{n2} & \ldots & a_{nn}\\
\end{array}\right),](/sites/default/files/tex_cache/51653aecfcdcf4b172e0fa4ae3849645.png)
— вектор-столбец решения,
— вектор-столбец правой части.
Так как матрица системы — невырожденная, , то решение системы (2.1) существует и единственно.
Из курса линейной алгебры [2.6] известно правило Крамера нахождения решения. Так, каждый компонент вектора неизвестных может быть вычислен как
![$ u_i = \frac{\Delta_i}{\Delta }, $](/sites/default/files/tex_cache/5f810fdeeb22b035bb9561699d1863f3.png)
где — определитель матрицы, получаемой из
заменой i столбца столбцом правых частей. Однако несложные арифметические оценки позволяют понять, что использование этой формулы приводит к неоправданно большим затратам машинного времени [2.3]. Так, например, если одно слагаемое в
вычисляется за 10 -6 с, то время расчета для n = 100 на существующих в момент написания книги компьютерах будет измеряться годами.
На самом деле в настоящее время с помощью компьютеров численно решаются СЛАУ намного более высокого порядка (примерно до ). Такие решения осуществляются при помощи прямых или итерационных численных методов. Прямые методы позволяют в предположении отсутствия ошибок округления (при проведении расчетов на идеальном, т.е. бесконечноразрядном компьютере) получить точное решение задачи за конечное число арифметических действий Итерационные методы, или методы последовательных приближений, позволяют вычислить последовательность
, сходящуюся к решению задач при
(на практике, разумеется, ограничиваются конечным k, в зависимости от требуемой точности).
Однако неточность в задании правых частей и элементов матрицы может приводить к значительным погрешностям при вычислении решения (2.1). В
"Предмет вычислительной математики. Обусловленность задачи, устойчивость алгоритма, погрешности вычислений. Задача численного дифференцирования"
на примере было показано, что такое явление наблюдается в случае плохо обусловленной системы. Остановимся подробнее на важном вопросе оценки погрешности решения СЛАУ.
Для этого напомним некоторые сведения из функционального анализа, которые понадобятся в дальнейшем.
2.2. Согласованные нормы векторов и матриц
В векторном n -мерном линейном нормированном пространстве введем следующие нормы вектора:
кубическая:
![]() |
( 2.2а) |
октаэдрическая:
![]() |
( 2.2б) |
евклидова (в комплексном случае — эрмитова):
![]() |
( 2.2в) |
Рассмотрим квадратную матрицу и связанное с ней линейное преобразование
, где
( Ln — n -мерное линейное нормированное пространство). Норма матрицы определяется как действительное неотрицательное число, характеризующее это преобразование и определяющееся как
![]() |
( 2.3) |
Укажем некоторые свойства нормы матрицы:
![\begin{gather*}
\|\mathbf{A + B}\|= \|\mathbf{A}\|+ \|\mathbf{B}\|, \\
\|\mathbf{\lambda A}\|=|\lambda| \|\mathbf{A}\|, \\
\|\mathbf{AB}\| \le \|\mathbf{A}\| \|\mathbf{B}\|, \\
\|\mathbf{A}\|= 0 \text{ тогда и только тогда, когда }\mathbf{A}= 0.
\end{gather*}](/sites/default/files/tex_cache/5e83980e434bf847bfc03053c936c7f7.png)
Заметим, что норму матрицы (2.3) называют подчиненной норме вектора. Говорят, что норма матрицы согласована с нормой вектора
, если выполнено условие
![\|\mathbf{Au}\| \le \|\mathbf{A}\|\|\mathbf{u}\|.](/sites/default/files/tex_cache/73b2d2cb6d22306b337b1c4489526db8.png)
Нетрудно видеть, что подчиненная норма согласована с соответствующей метрикой векторного пространства. В самом деле
![$ \|\mathbf{A}\|= \sup\limits_{\|\mathbf{u}\| \ne 0} \frac{\|\mathbf{Au}\|}{\|\mathbf{u}\|}\ge \frac{\|\mathbf{Au}\|}{\|\mathbf{u}\|}\mbox{ откуда }\|\mathbf{Au}\| \le \|\mathbf{A}\|\cdot \|\mathbf{u}\|. $](/sites/default/files/tex_cache/dca7295fe42aefcaf5475eb0f761d315.png)
Согласованные с введенными выше нормами векторов нормы матриц будут определяться следующим образом:
![\begin{gather*}
{\|\mathbf{A}\|}_1 = \max\limits_{1 \le i \le n}\sum\limits_{j = 1}^n|a_{ij}|, \\
{\|\mathbf{A}\|}_2 = \max\limits_{1 \le j \le n}\sum\limits_{i = 1}^n{|a_{ij}|}, \\
{\|\mathbf{A}\|}_3 = \sqrt{\max\limits_{1 \le i \le n} \lambda^i (\mathbf{A}^* \cdot \mathbf{A})}.
\end{gather*}](/sites/default/files/tex_cache/8154aa75e8e1ca5f658d0a2b4f264e57.png)
Покажем, как получается выражение для согласованной нормы матрицы , соответствующей норме вектора
![\begin{multline*}
{\|\mathbf{Au}\|}_1 = \max\limits_i \left|{\sum\limits_j{a_{ij}u_j}}\right| \le \max\limits_i (\sum\limits_j{|{a_{ij}}|}|{u_j}|) \le \\
\le (\max\limits_i \sum\limits_j{|{a_{ij}}|}) \max\limits_j|{u_j}| = (\max\limits_i \sum\limits_j{|{a_{ij}}|}){\|\mathbf{u}\|}_1 ,
\end{multline*}](/sites/default/files/tex_cache/2de3a9b360b1af95545a5a0663fc08a9.png)
откуда
![\frac{{\|\mathbf{Au}\|}_1}{{\|\mathbf{u}\|}_1}\le \max\limits_i \sum\limits_j |{a_{ij}}|.](/sites/default/files/tex_cache/06788a7df2e7e07f305d9a3124afcb38.png)
![\frac{\|\mathbf{Au}\|}{\|\mathbf{u}\|}, \max\limits_j \sum\limits_i{|{a_{ij}}|} = {\|\mathbf{A}\|}_1 ,](/sites/default/files/tex_cache/645cdb779c9236a07ca23eef4c074a4e.png)
Покажем, что таким вектором является, например,
![{\mathbf{v}}_k = \{sign a_{k1}, \ldots , sign a_{kn}\}^T,](/sites/default/files/tex_cache/c36a26974cad9199c08d3cd4715d3207.png)
Поскольку , то
Тогда, в соответствии с выражением для первой нормы вектора, получаем
![\|{\mathbf{Av}}\|}_1 = \max\limits_i \sum\limits_j{|{a_{ij}}|}.](/sites/default/files/tex_cache/9632609fb279a8c39614a2d8338e99d3.png)
Таким образом, точная верхняя грань в рассмотренном неравенстве достижима и
действительно
Для третьей нормы (2.2в)
![$ {\|\mathbf{A}\|}_3 = \sup\limits_\mathbf{u}\frac{{\|\mathbf{Au}\|}_3}{{\|\mathbf{u}\|}_3}= \sup\limits_\mathbf{u} \sqrt{\frac{(\mathbf{Au,Au})}{(\mathbf{u,u})}}= \\
= \sup\limits_\mathbf{u}\sqrt{\frac{(\mathbf{A}^*\mathbf{Au,u})}{(\mathbf{u,u})}} $](/sites/default/files/tex_cache/fb1aba3f8cb2822d2f56483b905e0bed.png)
Заметим, что матрица — симметричная. Без ограничения общности предположим, что все собственные числа матрицы различны. Матрица обладает всеми действительными собственными значениями,
и каждому собственному числу соответствует собственный вектор. Все собственные векторы взаимно ортогональны. Можно рассмотреть ортонормированную систему собственных векторов
— соответствующие им собственные значения. Любой вектор
можно представить в виде своего разложения по базису из собственных векторов:
Кроме того,
Поэтому
![$ \sup\limits_{\|\mathbf{u}\| \ne 0}\sqrt{\frac{(\mathbf{A}^* \mathbf{Au,Au})}{(\mathbf{u,u})}} = \sup\limits_{\|\mathbf{u}\| \ne 0}\sqrt{\sum\limits_i
\frac{(\lambda_i\xi_i \omega_i, \xi_i \omega_i)}{(\xi_i\omega_i, \xi_i\omega_i)}} = \\
= \sup\limits_{\|\mathbf{u}\| \ne 0}\sqrt{\frac{\sum \lambda_i{\xi}^2_i}{\sum {\xi}^2_i}}
= \sqrt{\max \lambda_i (\mathbf{A}^* \mathbf{A})}, $](/sites/default/files/tex_cache/83d41fbde3684d1104bc5187cd21f803.png)
причем точная верхняя грань достигается при Действительно,
![$ \sup\limits_u \sqrt{\frac{(\mathbf{A}^* \mathbf{A}\omega_i, \omega_i)}{(\omega_i, \omega_i)}} = \sup\limits_u \sqrt{\lambda^i (\mathbf{A}^*\mathbf{A})} = \sqrt{\max\limits_i {\lambda_i (\mathbf{A}^* \mathbf{A})}},
$](/sites/default/files/tex_cache/9868898e9c10cc62110801c3a0af9598.png)
т.к. , откуда
,
![$ \frac{(\mathbf{A}^*\mathbf{A}\omega_i, \omega_i)}{(\omega_i,
\omega_i)} = \lambda_i. $](/sites/default/files/tex_cache/a1659900e53b8b690ba447356bf5fcde.png)
В важном частном случае симметричной (самосопряженной) матрицы имеем
, поэтому