10Системы линейных уравнений с постоянными коэффициентами

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

10.1Замена базиса в линейных системах

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

Пример 1. Вот пример уравнения вида (10.1), записанного в виде системы:
Та же система, записанная в матричной форме, имеет вид:

Вопрос 1. Найти все особые точки уравнения (10.1), если — невырожденная матрица.

Замечание 1. Великая наука линейная алгебра учит нас: не все базисы одинаково полезны! Например, если у нас есть оператор, и нам нужно его возвести в какую-нибудь большую степень, проще всего это сделать в хорошем базисе — например, диагонализирующем (если есть), или, на худой конец, жордановом. А в плохом базисе это делать плохо.

В дифференциальных уравнениях эта идея — использования хорошей системы координат — также является одной из ключевых. Прежде, чем применять её к линейным уравнениям, докажем простую лемму.

Лемма 1. Пусть — некоторая дифференцируемая вектор-функция, — фиксированный линейный оператор. Тогда

Доказательство. По определению производной,

в силу линейности оператора
Что и требовалось.

Следствие 1. В дифференциальных линейных уравнениях можно делать замену базиса, как в обычных линейных. Действительно, пусть — новая неизвестная функция, и пусть , где — фиксированная невырожденная матрица. Тогда и
где первое равенство следует из леммы.

Получили такое уравнение для новой неизвестной функции :

Это уравнение (10.1) в новых координатах. Видим, что линейное дифференциальное уравнение преобразуется при замене базиса точно так же, как обычное линейное уравнение. Это хорошая новость.

10.2Классификация линейных уравнений на плоскости

Пусть : мы рассматриваем линейное уравнение на плоскости. Если матрица невырождена, система (10.1) имеет единственную особую точку, находящуюся в начале координат. Такая особая точка также называется линейной.

Cвойства решений дифференциального уравнения (10.1) сильно зависят от собственных значений оператора . Мы будем классифицировать линейные системы (или, что то же самое, линейные особые точки) в зависимости от собственных значений. Рассмотрим все возможные случаи, начиная с самых простых.

10.2.1Два различных вещественных собственных значения

Пусть линейный оператор имеет два различных вещественных собственных значения , . Великая наука линейная алгебра учит нас: в этом случае у матрицы есть диагонализирующий базис. То есть существует такая матрица перехода , что , где
Сделаем в уравнении (10.1) замену , . Получим новое уравнение
Пусть . Тогда новое уравнение запишется в виде системы:
Эта система — декартово произведение двух простых уравнений. Можно легко записать явный вид решений (если вам не кажется, что это сделать легко, нужно повторить самую первую лекцию):
где — начальное условие (в координатах ). Можно ещё записать решение в таком виде:
Нам бы надо записать решение в исходных координатах, но это сделать тоже легко.
Здесь даже не пришлось вычислять обратную матрицу к ! Впрочем, это ненадолго: если нам поставлена задача Коши в исходных координатах, то есть нужно найти решение с начальным условием , то для её решения придётся выразить начальное условие через новые координаты, а тут уже потребуется :

10.2.2Положительные различные собственные значения: неустойчивый узел

Пусть и положительны. Для определенности будем считать, что (если это не так, просто поменяем их местами). Как будет выглядеть фазовый портрет системы (10.1)? Для начала построим фазовый портрет диагонализированной системы (10.4). Согласно (10.5), все траектории, кроме особой точки , будут убегать от начала координат при (как говорят, «в прямом времени») и стремиться к началу координат при («в обратном времени») — потому что именно так ведут себя соответствующие экспоненты. Чтобы понять более точно, что происходит вблизи начала координат, заметим, что решения удовлетворяют соотношению
Его можно было бы получить, выразив через из второго уравнения и подставив в первое. А ещё можно перейти к соответствующему неавтономному уравнению (см. раздел 4.4) и решить его.

Поскольку по предположению , фазовые кривые касаются оси при подходе к нулю (здесь можно представить себе параболу). Другой способ понять, что они будут касаться именно оси , такой: поскольку , в обратном времени стремление к нулю вдоль оси будет гораздо более быстрым, чем по оси . Фазовый портрет в координатах выглядит как изображено на рис. 10.4. Он состоит из «параболических лучей», стремящихся к началу координат в обратном времени и пяти специальных траекторий: самого начала координат (это особая точка, которая, как мы знаем, является отдельной траекторией) и четырёх прямолинейных лучей, лежащих на осях координат.

import matplotlib.pyplot as plt
import numpy as np
import qqmbr.odebook as ob
# see https://github.com/ischurov/qqmbr/blob/master/qqmbr/odebook.py

plt.figure(figsize=(6, 6))
ob.axes4x4(labels=('u', 'v'))

theta = np.linspace(0, 2 * np.pi, 4 * 5 + 1)
r = 2
x = np.cos(theta) * r
y = np.sin(theta) * r

ob.phaseportrait(lambda X, t=0: np.array([X[0], 1.6*X[1]]), 
    np.array([x, y]).T, t=(-4, 2), n=50, linewidth=1.5)
Рис. 10.1: Неустойчивый узел в диагонализирующем базисе
Чтобы нарисовать фазовый портрет в исходных координатах, необходимо совершить соответствующее линейное преобразование. Посмотрим, как это происходит, на примере системы (10.2).

Диагонализируем матрицу системы. Характеристический многочлен имеет вид

собственные значения и , собственные векторы и соответственно, а стало быть матрица перехода к диагонализирующему базису имеет вид:
В новом базисе наша система принимает вид (мы это знаем наверняка, поскольку матрица находилась как диагонализирующая, а у диагональной матрицы на диагоналях стоят собственные значения).
Её фазовый портрет выглядит примерно так.
import matplotlib.pyplot as plt
import numpy as np
import qqmbr.odebook as ob
# see https://github.com/ischurov/qqmbr/blob/master/qqmbr/odebook.py

plt.figure(figsize=(6, 6))
ob.axes4x4(labels=('u', 'v'))

theta = np.linspace(0, 2 * np.pi, 4 * 5 + 1)
r = 1.7
x = 2 * np.cos(theta) * r
y = np.sin(theta) * r

ob.phaseportrait(lambda X, t=0: np.array([X[0], 5 * X[1]]), 
    np.array([x, y]).T, t=(-2, 2), n=50, linewidth=1.5)
Рис. 10.2: Фазовый портрет системы (10.2) в координатах
По оси приближение к нулю происходит гораздо быстрее, чем по оси (поскольку 5>1), поэтому фазовые кривые стремятся к нулю, касаясь оси . Чтобы нарисовать фазовый портрет в исходном базисе, нужно изобразить новые базисные векторы в старом базисе. Получается примерно так:
import matplotlib.pyplot as plt
import numpy as np
import qqmbr.odebook as ob
# see https://github.com/ischurov/qqmbr/blob/master/qqmbr/odebook.py

plt.figure(figsize=(6, 6))
ob.axes4x4(labels=('x','y'))

theta = np.linspace(0, 2 * np.pi, 4 * 5 + 1)
r = 1.7
u = 2 * np.cos(theta) * r
v = np.sin(theta) * r

C = np.array([[-3, 1], [1, 1]])

ob.phaseportrait(lambda X: np.array([2 * X[0] + 3 * X[1], X[0] + 4 * X[1]]),
    (0.25 * C @ np.array([u, v])).T, t=(-2, 2), n=50, linewidth=1.5)
plt.arrow(0,0,-3,1,head_width=0.2, head_length=0.3,color='red',lw=2)
plt.arrow(0,0,1,1,head_width=0.2, head_length=0.3,color='red',lw=2)
Рис. 10.3: Фазовый портрет системы (10.2) в исходных координатах. Красные стрелочки — собственные векторы.
Особая точка такого вида называется неустойчивым узлом (англ. unstable node).

10.2.3Отрицательные различные собственные значения: устойчивый узел

Если оба собственных значения отрицательны (но при этом различны), получаются такие же картинки, но стрелочки направлены в обратную сторону: теперь при траектории стремятся к началу координат, а при , наоборот, уходят на бесконечность. В остальном никаких изменений нет. Соответствующая особая точка называется устойчивым узлом (англ. stable node).
import matplotlib.pyplot as plt
import numpy as np
import qqmbr.odebook as ob
# see https://github.com/ischurov/qqmbr/blob/master/qqmbr/odebook.py

plt.figure(figsize=(6, 6))
ob.axes4x4(labels=('u', 'v'))

theta = np.linspace(0, 2 * np.pi, 4 * 5 + 1)
r = 2
x = np.cos(theta) * r
y = np.sin(theta) * r

ob.phaseportrait(lambda X: np.array([-X[0], -1.6*X[1]]), 
    np.array([x, y]).T, t=(-2, 4), n=50, linewidth=1.5)
Рис. 10.4: Устойчивый узел в диагонализирующем базисе

10.2.4Собственные значения различных знаков: седло

Пусть теперь и . Тогда, конечно, автоматически не совпадает с , оператор диагонализируем и все рассуждения из параграф 10.2.1 работают. Из формул (10.5) в этом случае видно, что при ненулевое решение будет приближаться к оси (потому что уменьшается) и вдоль оси уходить на бесконечность (потому что увеличивается), и наоборот, при решение приближается к оси , входя вдоль этой оси на бесконечность.

Можно также найти первый интеграл системы: он имеет вид

Можно проверить это по явным формулам (10.5). Обе степени положительны (мы так выбрали знаки и ) и линии уровня функции похожи на линии уровня функции , то есть на гиперболы. Эта особая точка имеет название седло (потому что поверхность похожа на седло), её фазовые кривые изображены на рис. 10.5.
import matplotlib.pyplot as plt
import numpy as np
import qqmbr.odebook as ob
# see https://github.com/ischurov/qqmbr/blob/master/qqmbr/odebook.py

from itertools import product
plt.figure(figsize=(6, 6))
ob.axes4x4(labels=('u','v'))
ob.phaseportrait(lambda X: np.array([-X[0], X[1]]),
                list(product(np.linspace(-15, 15, 26), [-1, 1])) +
                [[-3, 0], [3, 0], [0, 3], [0, -3]], t=(-2, 2), n=50, linewidth=1.5)
Рис. 10.5: Линейное седло: собственные значения разных знаков

10.2.5Скалярная матрица: дикритический узел

Если два собственных значения вещественной матрицы совпадают, то это единственное собственное значение является вещественным: это следует из того факта, что комплексные собственные значения (с ненулевой мнимой частью) обязаны быть комплексно сопряжёнными (см. лемму 2 ниже). В этом случае есть два варианта: матрица является либо диагонализируемой, либо эквивалентной жордановой клетке. Пусть матрица диагонализируема. В собственном базисе она имеет вид
Нетрудно заметить, что на самом деле она имеет такой вид в любом базисе: скалярная матрица коммутирует с любой другой матрицей, поэтому для любой матрицы перехода верно
В этом случае решение (10.5) также работает. Отличие от параграфов 10.2.2 и 10.2.3 состоит в том, что теперь фазовые кривые лежат не на параболах, а на прямолинейных лучах.

Получается картинка, изображенная на рис. 10.6. Такая особая точка называется дикритическим узлом. Дикритические узлы также бывают устойчивыми или неустойчивыми, в зависимости от знака единственного собственного значения. (Нулю оно равняться не может, потому что мы рассматриваем только невырожденные матрицы.)

import matplotlib.pyplot as plt
import numpy as np
import qqmbr.odebook as ob
# see https://github.com/ischurov/qqmbr/blob/master/qqmbr/odebook.py

plt.figure(figsize=(6, 6))
ob.axes4x4(labels=('u', 'v'))

theta = np.linspace(0, 2 * np.pi, 4 * 5 + 1)
r = 2
x = np.cos(theta) * r
y = np.sin(theta) * r

ob.phaseportrait(lambda X: X, 
    np.array([x, y]).T, t=(-4, 2), n=50, linewidth=1.5)
Рис. 10.6: Неустойчивый дикритический узел

10.2.6Жорданова клетка: вырожденный узел

Если собственные значения матрицы совпадают, но при этом она не диагональная, значит, она и не диагонализируема. Однако она в любом случае приводится к жордановой нормальной форме. Поскольку мы работаем с матрицами , в жордановой нормальной форме есть только одна клетка. Уравнение (10.1) принимает вид
В этом случае решение (10.5) не работает. Такую систему можно решать другими методами: например, можно решить второе уравнение относительно , подставить решение в уравнение на , после чего использовать метод вариации постоянных (см. параграф 9.2.2). Другой способ состоит в использовании комплексной экспоненты, которая будет обсуждаться в следующей главе. Мы сейчас пропустим явное нахождение решения и ограничимся лишь картинкой с фазовым портретом, см. рис. 10.7). Такая особая точка называется вырожденным узлом.
import matplotlib.pyplot as plt
import numpy as np
import qqmbr.odebook as ob
# see https://github.com/ischurov/qqmbr/blob/master/qqmbr/odebook.py

plt.figure(figsize=(6, 6))
ob.axes4x4(labels=('u', 'v'))

theta = np.linspace(0, 2 * np.pi, 4 * 5 + 1)
r = 3.5
x = np.cos(theta) * r
y = np.sin(theta) * r

y = np.linspace(-4, 4, 21)
x = y * 0.2


ob.phaseportrait(lambda X: np.array([- X[0] + 3 * X[1], -X[1]]), 
    np.array([x, y]).T, t=(-2, 4), n=50, linewidth=1.5)
Рис. 10.7: Устойчивый вырожденный узел

Упражнение 1. Доказать, что все траектории стремятся к нулю при , касаясь оси .

10.2.7Комплексные собственные значения

Мы полностью разобрали случай вещественных собственных значений. Однако, скалярная матрица может иметь и комплексные собственные значения с ненулевой мнимой частью. Этот случай также необходимо разобрать.

Начнём с краткого напоминания о комплексных числах.

Напомним, что комплексные числа — это числа вида , где . Множество комплексных чисел обычно изображается в виде плоскости — и, более того, оно является двумерной вещественной плоскостью (с дополнительной структурой, заданной умножением на число ). Можно говорить, что . В качестве базиса можно взять 1 и .

Напомним также, что (доказательство тривиально: достаточно подставить в ряд и выделить вещественную и мнимую части). Пользуясь этим мы можем записать комплексное число в полярной форме: , - радиус, — угол.

В то же время, если рассматривать как комплексное линейное пространство (то есть разрешить коэффициентам тоже быть комплексными), элементы 1 и станут комплексно-зависимыми (т.к. ), и пространство станет одномерным. Таким образом, — комплексная прямая.

По аналогии с можно рассматривать — комплексное -мерное пространство. Но мы этого делать не будем.

Определение 1. Пусть — комплексное число. Комплексно-сопряжённым числом к (обозначается ) называется чило .

Лемма 2. Пусть — вещественный оператор (задающийся вещественной матрицей) с комплексным собственным значением , , соответствующим собственному вектору . Тогда комплексно-сопряжённое число также является собственным значением с собственным вектором , получающимся из вектора поэлементным комплексным сопряжением.

Доказательство. Для матриц это утверждение может быть доказано «в лоб», анализом формулы для корней характеристического уравнения, но мы используем более изящный (и более универсальный) подход.

Поскольку — собственное значение, имеем:

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

Из доказанной леммы следует, что если собственные значения матрицы комплексны и имеют ненулевую мнимую часть, то они обязаны быть различными. На первый взгляд кажется, что тут история заканчивается: раз собственные значения различны, значит, матрица диагонализируема, можно перейти к собственному базису и получить такие же результаты, как в параграфе 10.2.1. В принципе, это правда. Но есть нюанс: диагональная матрица будет комплексной, матрица перехода тоже будет комплексной и решения будут комплексными. Но исходное уравнение было вещественным и нас интересуют его вещественные решения. Которые, конечно, будут подмножеством комплексных решений, но сходу их выделить и понять, как они устроены, будет не так-то просто. Поэтому мы пойдём другим, чуть более заковыристым путём. Но сначала определим всё-таки, что такое дифференциальное уравнение с комплексным фазовым пространством. Оно нам понадобится.

10.2.8Автономные уравнения с комплексным фазовым пространством

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

(По правде говоря, с математической точки зрения очень интересно рассматривать дифференциальные уравнения и с комплексным временем тоже. Привычная интуиция при этом перестаёт работать: если время комплексное, оно становится плоскостью (с вещественной точки зрения) и перестаёт течь «из прошлого в будущее» (комплексные числа нельзя сравнивать между собой). В общем, есть риск уйти в четырёхмерное пространство и не вернуться. Мы не будем этого делать.)

Пример 2. Рассмотрим простейшее нетривиальное комплексное уравнение
Как и его вещественный аналог, оно имеет решение
Действительно, правила дифференцирования сложной функции в комплексных числах никто не отменял, и поэтому .

Если кто-то не верит, тот может продиффернцировать формулу и убедиться, что это так. Если кто-то не верит и в эту формулу, тот может взять ряд для экспоненты и подставить в него .

Пусть теперь и . Тогда уравнение (10.7) можно представить в виде

Или, приравнивая действительную и мнимую части:
Или в матричной форме
А решение (10.8) представляется в виде
Или в матричной форме
Матрица, стоящая в правой части (10.12) — матрица поворота на угол . Таким образом, фазовые кривые системы (10.9) — окружности. (Мы и раньше об этом догадывались, да. Но зато теперь мы знаем нечто большее: мы знаем, что движемся по этим окружностям с угловой скоростью 1.)

Заметим наконец, что собственные значения матрицы в уравнении (10.10) равны и . И это неспроста.

10.2.9Комплексные линейные уравнения

Рассмотрим теперь чуть более сложное комплексное уравнение
Его решением по-прежнему будет экспонента
Проделаем то же самое, что мы сделали выше (раскроем скобки, приравниваем вещественную и мнимую часть):
И решение

Упражнение 2. Докажите, что решение представляется именно в таком виде, аналогично тому, как мы это сделали при рассмотрении примера 2.

Упражнение 3. Нарисуйте какую-нибудь фазовую кривую для уравнения (10.13). Как она выглядит? (Ответ в конце главы.)

Найдем собственные значения матрицы в уравнении (10.13): Итак, мы показали, что линейному комплексному уравнению с коэффициентом соответствует вещественное уравнение с комплексными собственными значениями, одно из которых равно , а другое .

Теперь мы умеем решать вещественные системы с матрицей как в уравнении (10.13): они соответствуют комплексным уравнениям и их решения задаются формулой (10.14). Можно ли привести к такому виду любую вещественную матрицу с комплексными собственными значениями? Оказывается, можно.

Теорема 1. Пусть одно из собственных значений вещественной матрицы равно . Рассмотрим соответствующий собственный вектор . (То есть и являются поэлементными вещественными и мнимыми частями собственного вектора .) Тогда в базисе матрица имеет вид

Доказательство. Действительно, по определению собственного вектора и собственного значения,
Раскрываем скобки:
Приравниваем действительную и мнимую часть.
Эти равенства и показывают, что в базисе оператор имеет ту матрицу, которую мы просили. Действительно, если оператор в некотором базисе задаётся матрицей
то
Таким образом, коэффициенты при базисных векторах в правой части — это элементы матрицы оператора, записанные по столбцам.

Упражнение 4. Нам следовало бы ещё доказать, что и линейно независимы. Сделайте это.

Эта теорема по своему смыслу похожа на теорему о диагонализации. Если у матрицы есть различные вещественные собственные значения, то её можно привести к диагональному виду. А если собственные значения комплексно-сопряжённые, то самый лучший вид, к которому её можно привести, оставаясь в вещественных числах — это вид (10.15). Мы будем называть соответствующие координаты нормализующими, хотя это не общеупотребительный термин.

Уравнения с матрицей вида (10.15) мы уже умеем решать. А значит теперь можем решить любое линейное уравнение на плоскости с комплексно-сопряжёнными собственными значениями: достаточно перейти к нормализующим координатам.

10.2.10Центры и фокусы

Решение (10.14) представляет собой результат применения к начальному условию матрицы поворота на угол и умножения на вещественное число . Возможно два случая: и .

Если , и фазовыми кривыми в нормализующих координатах будут окружности, а в исходных координатах — эллипсы, см. рис. 10.8. Соответствующая особая точка называется центром.

import matplotlib.pyplot as plt
import numpy as np
import qqmbr.odebook as ob
# see https://github.com/ischurov/qqmbr/blob/master/qqmbr/odebook.py

plt.figure(figsize=(6, 6))
ob.axes4x4(labels=('u', 'v'))

x = y = np.linspace(-8, 8, 31)

ob.phaseportrait(lambda X: np.array([X[1], -X[0]]), 
    np.array([x, y]).T, t=(-4, 2), n=50, linewidth=1.5)
Рис. 10.8: Фазовые кривые центра в нормализующих координатах
Если , вместе с вращением будет происходить приближение к началу координат (при ) или удаление от него (в противном случае). Фазовыми кривыми будут логарифмические спирали, см. рис. 10.9. Такая особая точка называется фокусом. Подобно узлам, фокусы бывают устойчивыми (при ) и неустойчивыми (в противном случае).
import matplotlib.pyplot as plt
import numpy as np
import qqmbr.odebook as ob
# see https://github.com/ischurov/qqmbr/blob/master/qqmbr/odebook.py

plt.figure(figsize=(6, 6))
ob.axes4x4(labels=('u', 'v'))

theta = np.linspace(0, 2 * np.pi, 4 * 3 + 1)
r = 2
x = np.cos(theta) * r
y = np.sin(theta) * r

ob.phaseportrait(lambda X: np.array([0.6 * X[0] - X[1], X[0] + 0.6 * X[1]]), 
    np.array([x, y]).T, t=(-8, 2), n=50, linewidth=1.5)
Рис. 10.9: Фазовые кривые неустойчивого фокуса в нормализующих координатах
Вращение в исходных координатах может происходить как в положительном направлении, так и в отрицательном. По уравнению в нормализующих координатах определить направление вращения нельзя (в отличие от устойчивости): нужно смотреть на исходную систему (или на матрицу перехода).

10.3Итог классификации

Мы проделали долгий путь. Подведём итог. Пусть матрица линейной системы дифференциальных уравнений на плоскости невырождена и имеет собственные значения и . Тогда:
  • Если и вещественные
    • и имеют разные знаки: седло, см. рис. 10.5.
    • и имеют одинаковые знаки, но различны: узел, см. рис. 10.4.
    • и совпадают, но матрица диагональна: дикритический узел, см. рис. 10.6.
    • и совпадают, а матрица не диагональна: вырожденный узел, см. рис. 10.7.
  • Если и комплексные и следовательно комплексно-сопряжённые,
Все типы узлов, а также фокусы, в свою очередь, бывают устойчивыми (все траектории стремятся к началу координат в прямом времени) или неустойчивыми (все траектории стремятся к началу координат в обратном времени).

На этом мы заканчиваем полную классификацию невырожденных линейных уравнений на плоскости.