Какие объекты исследует вычислительная математика |
Численное решение систем линейных алгебраических уравнений
2.4.2. Модификация метода Гаусса для случая линейных систем с трехдиагональными матрицами — метод прогонки
В приложениях часто возникают системы линейных уравнений с матрицами специального вида. В дальнейшем, например, при интерполяции функции сплайнами, при решении задачи Штурма-Лиувилля, при численном решении уравнений теплопроводности, уравнений Лапласа и Пуассона придется иметь дело с системами, матрицы которых имеют ненулевые элементы лишь на главной диагонали и еще на двух диагоналях — одной под главной, одной над главной. Такие матрицы называются трехдиагональными. Для решения систем с трехдиагональными матрицами существует экономичный (требующий малого количества памяти и арифметических действий) вариант метода Гаусса — прогонка. В англоязычной литературе метод прогонки называется алгоритмом Томаса. Подробнее о свойствах метода прогонки речь пойдет в "Численное решение краевых задач для систем обыкновенных дифференциальных уравнений" в связи с решением разностными методами задачи Штурма-Лиувилля.
2.4.3. LU-разложение
Среди прямых методов численного решения СЛАУ широко используется также LU-разложение матрицы и метод Холецкого (или метод квадратного корня).
Если матрица представима в виде произведений матриц
, то СЛАУ может быть представлена в виде
![]() |
( 2.13) |
Перепишем (2.13), вводя вспомогательный вектор , в следующем виде
![]() |
( 2.14) |
Решение СЛАУ свелось к последовательному решению двух систем с треугольными
матрицами. Первый этап решения системы :
![\left\{ \begin{array}{l}
v_1 = f_1 , \\
l_{21}v_1 + v_2 = f_2 , \\
\ldots \\
l_{n1}v_1 + l_{n2}v_2 + \ldots + l_{n,n - 1}v_{n - 1}+ v_n = f_n , \\
\end{array} \right.](/sites/default/files/tex_cache/0da86ea513041733dda4cad0ab160107.png)
откуда можно вычислить все vk последовательно по формулам
![v_k = f_k - \sum\limits_{j = 1}^{k - 1}{l_{kj}v_j};\quad k = 2, \ldots , n.](/sites/default/files/tex_cache/153034a96e06e80dd45e59f1335a8b2a.png)
Далее рассмотрим систему или
![\left\{ \begin{array}{l}
d_{11}u_1 + d_2 u_2 + \ldots + d_{1n} u_n = v_1 , \\
d_{22}u_2 + \ldots + d_{2n} u_n = v_2 , \\
\ldots \\
d_{nn}u_n = v_n , \\
\end{array} \right.](/sites/default/files/tex_cache/e050ad2d035d349b01bf1d4c2922b4ac.png)
решение которой находится в обратном порядке, т.е. при k = n - 1, ..., 1 по очевидным формулам Условия существования такого разложения даются следующей
теоремой [2.5] (без доказательства).
Теорема. Если все главные миноры квадратной матрицы отличны от нуля, то существуют единственные
нижняя и верхняя треугольные матрицы
и
такие, что
При этом все диагональные коэффициенты матрицы
фиксированы и равны единице.
Опишем алгоритм нахождения элементов lijdij матриц Выписав равенство
в компонентах, получим
![\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) = \left( \begin{array}{cccc}
1 & 0 & \ldots & 0 \\
l_{21} & 1 & \ldots & 0 \\
\ldots & \ldots & \ldots & \ldots \\
l_{n1} & l_{n2} & \ldots & 1 \\
\end{array} \right) \left( \begin{array}{cccc}
d_{11} & d_{12} & \ldots & d_{1n} \\
0 & d_{22} & \ldots & d_{2n} \\
\ldots & \ldots & \ldots & \ldots \\
0 & 0 & \ldots & d_{nn} \\
\end{array} \right)](/sites/default/files/tex_cache/7ed9892e0b1877ae243afb2f4e8969a7.png)
Выполнив умножение матриц, приходим к системе линейных уравнений размером n x n:
![\begin{gather*}
d_{11} = a_{11}, d_{12}= a_{12}, \ldots , d_{1n} = a_{1n}, \\
l_{21}d_{11} = a_{21}, l_{21}d_{12}+ d_{22} = a_{22}, \ldots , l_{21}d_{1n}+ d_{2n} = a_{2n}, \\
\ldots \\
l_{n1}d_{11} = a_{n1}, l_{n1}d_{12} + l_{n2}d_{22} = a_{n2}, \ldots ,
l_{n1}d_{1n} + \ldots + l_{n,n-1}d_{n-1,n} + d_{nn} = a_{nn}
\end{gather*}](/sites/default/files/tex_cache/1031e5e4c8d55ce1a202184014c3f11f.png)
относительно неизвестных d11, d12, ..., d1n, l21, d22, ..., d2n, ln1, ln2, ..., dnn.
Специфика этой системы позволяет решить ее последовательно. Из первой строки находим d1j= a1j(j = 1, ..., n).
Из уравнений, входящих в первый столбец приведенной выше системы, находим li1= ai1/d11, i = 1, ...dots, n. Теперь можно из уравнений второй строки найти d2j= a2j- l21d1j, j = 2, ..., n, а из уравнений, входящих во второй столбец, получим и так далее. Последним вычисляется элемент
![d_{nn} = a_{nn}- \sum\limits_{k = 1}^{n - 1}{l_{nk}d_{kn}}.](/sites/default/files/tex_cache/432b2705029ea86f25d4f3fea9431625.png)
Можно выписать общий вид этих формул:
![\begin{gather*}
d_{ij}= a_{ij} - \sum\limits_{k = 1}^{j - 1}{l_{ik}d_{kj}},\quad i \le j, \\
l_{ij}= d_{ij}^{- 1}\left({a_{ij} - \sum\limits_{k = 1}^{j - 1}{l_{ik}d_{kj}}}\right),\quad
i > j.
\end{gather*}](/sites/default/files/tex_cache/bfd3fef0af6d7da32aac5b91c691100c.png)
Приведение матриц к треугольному виду аналогично приведению матрицы в методе Гаусса и также требует количества арифметических действий порядка O(n3), точнее,
2.4.4. Метод Холецкого (метод квадратного корня)
Пусть матрица рассматриваемой линейной системы
— симметричная, т.е. aij = aji, положительная матрица. Тогда она представима в виде
, где
![{\mathbf{L}}^T = \left( \begin{array}{cccc}
l_{11} & l_{12} & \ldots & l_{1n} \\
0 & l_{22} & \ldots & l_{2n} \\
\ldots & \ldots & \ldots & \ldots \\
0 & 0 & \ldots & l_{nn}
\end{array} \right),
\mathbf{L} = \left( \begin{array}{cccc}
l_{11} & 0 & \cdots & 0 \\
l_{12} & l_{22} & \ldots & 0 \\
\ldots & \ldots & \ldots & \ldots \\
l_{1n} & l_{2n} & \ldots & l_{nn}
\end{array} \right)](/sites/default/files/tex_cache/5f76ff1c1ec1c72f98516ddd2091d4f7.png)
Далее, как и в случае LU-разложения, решение СЛАУ сводится к последовательному решению двух линейных систем с треугольными матрицами
,
, для решения которых требуется примерно 2n2 арифметических действий.
Первая из этих линейных систем
![\begin{gather*}
l_{11}v_1 = f_1 ,\\
l_{12}v_1 + l_{22}v_2 = f_2 ,\\
\ldots\\
l_{1n}v_1 + l_{2n}v_2 + \ldots + l_{nn}v_n = f_n ,
\end{gather*}](/sites/default/files/tex_cache/f4022cd7b36e8f70fe2ae46b309d3f13.png)
она легко решается. Для решения получаем очевидные формулы
![v_i = l_{ii}^{- 1}(f_i - \sum\limits_{k = 1}^{i-1}{l_{ki}}v_k )},\quad i = 1,\ldots, n.](/sites/default/files/tex_cache/ac017f9ab258d2913303be0ef450ad6d.png)
Вторая система уравнений есть
l11u1 + l12u2 + ... + l1nun = v1 , l22u2 + ... + l2nun = v2, ... lnnun = vn.
Из нее находим значения переменных ui в обратном порядке по формуле
![u_k= l_{ii}^{- 1}(v_k - \sum\limits_{j = k + 1}^n{l_{kj}u_j)}.](/sites/default/files/tex_cache/21029eeff9390a01276034286295f6c7.png)
Определенной опасностью при реализации этого метода являются возможная
близость к нулю lii и отрицательность подкоренных выражений при вычислении lii (последнего не должно быть при симметричной положительной матрице )
Элементы матрицы находим из уравнения
, приравнивая соответствующие элементы матриц
и
В результате получим систему уравнений
![\begin{gather*}
l_{11}^2 = a_{11}, \\
l_{i1}l_{11} = a_{i1}, i = 2, \ldots ,n, \\
l_{21}^2 + l_{22}^2 = a_{22}, \\
l_{i1}l_{21} + l_{i2}l_{22} = a_{i2}, i = 3, \ldots , n, \\
\ldots\\
l_{k1}^2 + l_{k2}^2 + \ldots + l_{kk}^2 = a_{kk}, \\
l_{i1}l_{k1} + l_{i2}l_{k2} + \ldots + l_{ik}l_{kk} = a_{kk}, i = k + 1, \ldots , n.
\end{gather*}](/sites/default/files/tex_cache/8f92a9cae0dce619ba5fe83decb35f5f.png)
Решение этой системы легко находится:
![\begin{gather*}
l_{11} = \sqrt{a_{11}},\\
l_{i1} = a_{i1}/l_{11}, i = 2, \ldots , n, \\
l_{22} = \sqrt{a_{22}- l_{21}^2}, \\
l_{i2} = (a_{i2}- l_{i1}l_{21})/l_{22}, i = 3, \ldots ,n, \\
\ldots \\
l_{kk} = \sqrt{a_{kk}- l_{k1}^2 - l_{k2}^2 - \ldots - l_{k,k - 1}^2}, \\
l_{ik} = (a_{ik}- l_{i1}l_{k1}- l_{i2}l_{k2}- \ldots - l_{i,k - 1}l_{k,k - 1})/l_{kk},i = k + 1, \ldots , n,
\end{gather*}](/sites/default/files/tex_cache/695cf8cbbc90557327bace325abf6ac8.png)
Метод также называется методом квадратного корня.
Внимание! Не следует путать матрицу (оператор) с
оператором
— квадратным корнем из самосопряженного положительного оператора.