Линейные уравнения

Вектора

Векторным пространством называется любая алгебраическая система \(V\) с двумя операциями: сложением типа \(V\times V\to V\) и растяжением вида \(R\times V\to V\) для некоторого кольца \(R\) (далее будем считать, что \(R\) — поле действительных чисел). Эти операции должны удовлетворять некоторому списку довольно естественных свойств. А именно, сложение должно иметь структуру коммутативной группы, а растяжение должно быть связано с ним следующими свойствами:

  • \( (\alpha+\beta)(a+b) = \alpha a + \beta a + \alpha b + \beta b \)
  • \( 1a = a \)
  • \( (\alpha\beta)a = \alpha(\beta a) \)

Говоря проще, векторное пространство — то же самое, что и морфизм кольца \(R\) в кольцо эндоморфизмов коммутативной группы.

Чаще всего на практике встречаются пространства \(R^n\): последовательности чисел из \(R\) длины \(n\), сложение и растяжение которых определяется покомпонентно. Договоримся обозначать \(\delta_i\) такую последовательность (неважно для какого именно \(n\)), в которой только \(i\)-я компонента равна 1, а остальные — нулевые. Пространства \(R^n\) называются конечномерными.

Также часто встречаются пространства отображений типа \(X\to V\), где \(V\) является векторным пространством. Сложение и растяжение таких отображений определяется поточечно. В принципе, пространства \(R^n\) являются частным случаем таких пространств для множества \(X\) мощности \(n\).

Линейные отображения

Отображение векторных пространств называется линейным, если оно коммутирует со сложением и растяжением. Говоря проще, \(f\) линейно, если

\[ f(\alpha x + \beta y) = \alpha f(x) + \beta f(y) \]

Ну или, если быть совсем кратким:

\[ f\left( \sum_i \alpha_i x_i \right) = \alpha_i \sum_i f(x_i) \]

Линейные отображения конечномерных пространств имеют очень простое описание: любой вектор конечномерного пространства допускает однозначное представление в виде суммы \(\delta_i\). Поэтому если \(x = \sum_i \alpha_i \delta_i\), то

\[ f(x) = f\left( \sum_i \alpha_i \delta_i \right) = \alpha_i \sum_i f(\delta_i) \]

Заметим, что каждый из \(f(\delta_i)\) можно также разложить по дельтам. Введём обозначение \(f_{ji}\) для коэффициентов этого разложения:

\[ f(\delta_i) = \sum_i f_{ji} \delta_j \]

Такое соглашение (совокуплять индекс дельты здесь именно с первым индексом обозначения) приводит к удобным выражениям для координат образа вектора

\[ f(x)_{i} = \sum_j f_{ij} x_j \]

и для коэффициентов композиции линейных отображений

\[ (f\circ g)_{ij} = \sum_k f_{ik} g_{kj} \]

Набор коэффициентов линейного отображения называется его матрицей. Обычно её записывают в виде таблицы:

\[ \left( \begin{matrix} f_{11} & \ldots & f_{m1}\\ \vdots & & \vdots\\ f_{n1} & \ldots & f_{mn} \end{matrix} \right) \]

Вектора же часто записывают в виде матрицы-столбца: это связано с тем, что любому вектору \(x: R^m\) можно однозначно сопоставить линейное отображение \(\ulcorner x\urcorner: R\to R^m \) по правилу

\[ \ulcorner x\urcorner (r) = rx \]

Такое соглашение позволяет вообще избавиться от операции подстановки значения в отображение (она плоха тем, что неассоциативна, поэтому требует внимания к тому, как расставлены скобки) и писать все равенства в терминах композиции отображений (композиция ассоциативна). Далее мы будем придерживаться именно этого соглашения, считая, что в записи \(AB\) между \(A\) и \(B\) стоит композиция. Соответственно, числа мы будем также считать линейными отображениями \(R\to R\).

Линейные уравнения

Линейным уравнением называется уравнение вида

\[ Ax = a \]

где \(A:U\to V\) — линейное отображение, \(a:V\) — известный вектор (называемый правой частью), а \(x:U\) — неизвестный вектор, который требуется найти.

Если пространства \(U\) и \(V\) конечномерны, то можно применить метод Гаусса. С бесконечномерными такой фокус не пройдёт. Также не пройдёт он с пространствами большой размерности — алгоритмическая сложность метода Гаусса растёт как куб размерности пространства.

Поэтому мы рассмотрим так называемый итерационный способ решения линейных уравнений.

Итерация для чисел

Хорошо известно, что значение \( (1-\alpha)^{-1} \) при \( |\alpha| \lt 1 \) легко найти при помощи итерации схемы Горнера:

\[ x_0 = 0;\qquad x_{n+1} = 1 + \alpha x_n \]

Известно это из курса арифметики, в котором доказывается несложная теорема о том, что

\[ x_n = \frac{1-\alpha^n}{1-\alpha} \]

откуда следует, что при \( |\alpha| \lt 1 \) выполнено

\[ \lim_n x_n = (1-\alpha)^{-1} \]

В принципе, любое числовое уравнение вида

\[ kx = a \]

можно представить в таком виде, домножив на \( \alpha \) и сделав тривиальное преобразование

\[ (1 - (1 - \alpha k)) x = \alpha a \]

Очевидно, что выбором \( \alpha \) можно загнать \( \alpha k \) в интервал от 0 до 1.

Величина линейного отображения

С линейными отображениями всё хуже — у них нет адекватного аналога абсолютной величины числа. Самое лучшее, что есть — это точная нижняя грань множества тех чисел \(M\), для каждого из которых неравенство

\[ |Ax| \leqslant M |x| \]

выполнено для любого вектора \(x\). Она же совпадает с точной верхней гранью множества всевозможных чисел вида \(|Ax| / |x|\). Будем её в дальнейшем обозначать \( |A| \) и называть нормой отображения \( A \). Она удовлетворяет:

  • неравенству треугольника \( |A+B| \leqslant |A| + |B| \)
  • мультипликативному свойству \( |AB| \leqslant |A||B| \)

Именно эти свойства обеспечивают сходимость итерационного процесса, рассмотренного выше (конечно, при норме соответствующего отображения, меньшей 1).

Можно также сделать оценку снизу и рассмотреть точную верхнюю грань множества тех чисел \(N\), для каждого из которых для любого \(x\) имеет место неравенство

\[ N|x| \leqslant |Ax| \]

Эта точная грань обладает похожим мультипликавным свойством, но уже не удовлетворяет неравенству треугольника: в случае

\[ A = \left(\begin{matrix}1&0\\ 0&2\end{matrix}\right)\qquad B = \left(\begin{matrix}2&0\\ 0&1\end{matrix}\right) \]

эта величина у \(A\) и у \(B\) равна 1, а у их суммы она равна 3. Те отображения, у которых она положительна, будем называть положительными, а саму эту грань — коэффициентом положительности.

Всё плохо?

Посмотрим внимательно на уравнение

\[ (1 - (1 - \alpha A)) x = \alpha a \]

Пусть

\[ A = \left(\begin{matrix}1+a&0\\ 0&1-a\end{matrix}\right) \]

Нетрудно заметить, что как ни уменьшай \(\alpha\), норма \( (1 - \alpha A) \) всё равно равна \( 1 + |\alpha a| \), что больше единицы.

Также нетрудно заметить, что при \(U\ne V\) запись вида \(1 - \alpha A\) вообще смысла не имеет (при \(U=V\) же можно считать, что единица — это тождественное отображение).

На самом деле, всё хорошо (почти)

Вспомним, что в пространствах \( R^n \) есть стандартное скалярное произведение:

\[ x\cdot y = \sum_i x_i y_i \]

Пусть \(A: R^m\to R^n \) — линейное отображение с матрицей \( i,j\mapsto (A_{ij}) \). Отображение с матрицей \( i,j\mapsto (A_{ji}) \) будем называть транспонированным к \(A\) и обозначать \(A^*\).

Нетрудно проверить, что:

\[ x\cdot y = x^* y \]

а также, что:

\[ (AB)^* = B^* A^* \]

Отсюда (и из неравенства Коши-Буняковского) немедленно следует

\[ |Ax|^2 = x^{*} A^{*} A x = x\cdot (A^{*}A x) \leqslant |x| |A^{*}| |A| |x| = |A^{*}| |A| |x|^2 \]

Это означает, что \( |A|^2 \leqslant |A^{*}| |A| \), что эквивалентно \( |A| \leqslant |A^{*}| \). Меняя в этом рассуждении \(A\) на \(A^{*}\), получаем \( |A^{*}| \leqslant |A| \), откуда

\[ |A| = |A^{*}| \]

Использование транспонированного отображения позволяет построить сходящийся итерационный процесс для уравнения \(Ax = a\).

Что делать?

Банально перейти от уравнения

\[ Ax = a \]

к уравнению

\[ \alpha A^{*} A x = \alpha A^{*} a \]

и выбрать достаточно малый \(\alpha\). При этом итерационный процесс примет вид

\[ x_0 = b;\qquad x_{n+1} = b + Bx_n \]

где \(b = \alpha A^{*} a\) и \( B = 1 - \alpha A^{*} A \).

Скорость сходимости

У нас имеется точное равенство

\[ \alpha A^{*}A x_n = (1 - \left( \alpha A^{*} A\right)^n ) b \]

Пусть \(x\) — точное решение уравнения (если оно вообще есть). Тогда

\[ A^{*}A (x-x_n) = \alpha^n \left(A^{*} A\right)^n A^{*}a \]

Пусть \(N\) — коэффициент положительности для \(A^{*}A\). Если он не равен нулю, то

\[ |x-x_n| \leqslant \frac{|A^{*}a|}{N} \left( \alpha |A|^2 \right)^n \]

Отсюда видно, что если выбрать \( \alpha \lt |A|^{-2} \), то процесс сойдётся. Единственная проблема: непонятно, когда. Для этого нужно оценивать сверху \(N^{-1}\), что представляет собой нетривиальную задачу (по сложности сопоставимую с решением исходного уравнения). Впрочем, иногда эту оценку можно вытянуть из той модели, для исследования свойств которой это уравнение и решается.

А вот выбор \( \alpha \) осуществить легко: \( |A|^2 \) оценивается сверху суммой квадратов компонент матрицы \( A \). Таким образом получаем нижнюю оценку на \( |A|^{-2} \). Соответственно, \( \alpha \) можно выбрать, например, равным половине этой оценки.