Задача Среди векторов v1 , . . . , vm найти базис пространства V и разложить оставшиеся вектора по этому
базису.
Алгоритм
1. Запишем вектора v1 , . . . , vm по столбцам в матрицу A ∈ Mn m (R). Например, при n = 3, m = 5
v11 v21 v31 v41 v51
A = v12 v22 v32 v42 v52
v13 v23 v33 v43 v53
3. Пусть k1 , . . . , kr – номера главных позиций в матрице A0 . Тогда вектора vk1 , . . . , vkr образуют базис V .
Например, в примере выше это вектора v1 , v2 и v4 .
4. Пусть vi – вектор соответствует неглавной позиции в A0 . Тогда в i-ом столбце A0 записаны координаты
разложения vi через найденный базис выше. Например, в примере выше v3 = a31 v1 + a32 v2 и v5 =
a51 v1 + a52 v2 + a53 v4 .
Пример Пусть
1 1 5 1 −1
v1 = 3 , v2 = 2 , v3 = 12 , v4 = 1 , v5 = 1 ∈ R3
2 1 7 1 0
Тогда
1 1 5 1 −1 1 1 5 1−1 1 1 5 1 −1
3 2 12 1 1 7→ 0 0 0 −1 2 7→ 0 0 0 −1 2 →7
2 1 7 1 0 2 1 7 1 0 1 0 2 0 1
1 0 2 0 1 1 0 2 0 1 1 0 2 0 1
7→ 1 1 5 1 −1 7 → 0 1 3 1 −2 7→ 0 1 3 0 0
0 0 0 1 −2 0 0 0 1 −2 0 0 0 1 −2
Алгоритм
1. Уложить все вектора vi в строки матрицы A ∈ Mm n (R).
1
3 Дополнение линейно независимой системы до базиса всего пространства стан-
дартными векторами
Дано Пусть v1 , . . . , vm ∈ Rn – линейно независимая система векторов, V = hv1 , . . . , vm i – их линейная
оболочка и ei – стандартные базисные векторы, т.е. на i-ом месте стоит 1, а в остальных 0.
Задача Найти такие вектора ek1 , . . . , ekn−m , что система v1 , . . . , vm , ek1 , . . . , ekn−m является базисом Rn .
Алгоритм
Алгоритм
1. Привести матрицу A элементарными преобразованиями строк к улучшенному ступенчатому виду. На-
пример
1 0 a31 0 a51
A0 = 0 1 a32 0 a52
0 0 0 1 a53
2. Пусть k1 , . . . , kr – позиции свободных переменных. Если положить одну из этих переменных равной 1,
а все остальные нулями, то существует единственное решение, которое мы обозначим через ui (всего
r штук). Например, для матрицы A0 выше свободные переменные имеют номера 3 и 5. Тогда вектора
(записанные в строку)
u1 = −a31 −a32 1 0 0 , u2 = −a51 −a52 0 −a53 1
являются ФСР.
Алгоритм
1. Найти ФСР системы Ay = 0. Векторы ФСР будут базисом V .
2
Алгоритм
1. Уложить вектора vi в строки матрицы B ∈ Mk n (R).
2. Найти ФСР системы Bz = 0.
3. Уложить ФСР в строки матрицы A ∈ Mm n (R), где m – количество векторов в ФСР. Матрица A и будет
искомой.
Алгоритм
1. Если v = ex, где x ∈ Rn , а также v = f y, где y ∈ Rn , то y = A−1 x.
Алгоритм
Алгоритм
1
Алгоритм
1. Найти ФСР системы Dx = 0, где D = (v1 | . . . |vm | − u1 | . . . | − uk ) и x = α
β , где α ∈ Rm , β ∈ Rk .
2. Пусть α1
– ФСР.
αs
β1 . . . βs
базисом.
3
(b) Среди (α1 | . . . |αs ) можно выкинуть те αi , для которых βi = 0.2
3. Выделить базис среди столбцов R. Это и будет базис V ∩ U .
• Вместо стандартного алгоритма, можно выделить среди полученных (α1 | . . . |αs ) базис, либо найти
любой базис их линейной оболочки (α10 | . . . |αt0 ). Тогда R = (v1 | . . . |vm )(α10 | . . . |αt0 ) и будет базисом
пересечения.3
Алгоритм
1. Рассмотреть матрицу D0 = A
.
B
4
Алгоритм
1. Найти ФСР системы Dx = 0, где D = (At | − B t ) и x = α β , где α ∈ R
m
и β ∈ Rk .
2. Пусть αβ11 . . . αβss – ФСР. Если определим S t = (v1 | . . . |vm )(α1 | . . . |αs ), то V + U = {y ∈ Rn | Sy = 0}.
Задача Найти v и u.
Алгоритм
1. Решить СЛУ Dx = z, где D = (v1 | . . . |vm |u1 | . . . |uk ) и x = β , где α ∈ R
α m
и β ∈ Rk .
системой.
4
Задача Найти матрицу отображения φ : V → V такого, что φ(U ) = 0 и φ(v) = v для любого v ∈ V .5
Алгоритм
1. Положим B = (v1 | . . . |vm ) ∈ Mn m (R).
2. Обязательно получится, что m = k и матрица AB невырождена.
3. Искомый φ имеет матрицу B(AB)−1 A.
Алгоритм
1. Среди векторов v1 , . . . , vk выделить линейно независимые, а остальные разложить по ним.
2. Пусть на предыдущем этапе базис получился v1 , . . . , vr , а vr+i = ai1 v1 + . . . + air vr .
3. Искомое линейное отображение φ существует тогда и только тогда, когда выполняются равенства ur+i =
ai1 u1 + . . . + air ur .6
Алгоритм
1. Выделить базис среди столбцов матрицы A. В результате получится базис Im φ.
2. Найти ФСР системы Ax = 0. Полученная ФСР будет базисом ker φ.
Задача Найти все собственные значения λi для A и для каждого λi найти базис пространства Vλi = {v ∈
Cn | Av = λi v}.
Алгоритм
1. Посчитать характеристический многочлен (−1)n χA (λ) = det(A − λE).
2. Найти корни многочлена χA (λ). Корни {λ1 , . . . , λk } будут собственным значениями A.
3. Для каждого λi найти ФСР системы (A − λi E)x = 0. Тогда ФСР будет базисом Vλi .
Если дополнительно найти с каждым собственным значением λi его кратность ni в характеристическом
многочлене, то на последнем шаге размер ФСР для λi оценивается так. Собственных векторов будет не
меньше чем 1 и не больше, чем ni .
5 Заметим, что если z ∈ Rn раскладывается z = v + u, где v ∈ V и u ∈ U , то φ(z) = v.
6В частности, если все vi оказались линейно независимыми, то линейное отображение φ обязательно существует.
5
18 Проверка на диагонализуемость
Дано Матрица A ∈ Mn (F ), задающая линейный оператор ϕ : F n → F n .
Задача Выяснить существует ли базис, в котором ϕ задается диагональной матрицей и если задается, то
какой именно. На матричном языке: существует ли невырожденная матрица C ∈ Mn (F ) такая, что C −1 AC
является диагональной и найти эту диагональную матрицу.
Алгоритм
1. Найдем характеристический многочлен χ(t) для ϕ, он же для A по формуле (−1)n χ(t) = det(A − tE).
2. Проверим, раскладывается ли χ(t) на линейные множители над F , то есть представляется ли он в виде
χ(t) = (t−λ1 )d1 . . . (t−λk )dk . Если не представляется, то ϕ (или что то же самое A) не диагонализируется
3. Если χ(t) = (t − λ1 )d1 . . . (t − λk )dk . Найдем для каждого λi базис Vλi как ФСР системы (A − λi E)x = 0.
Если для хотя бы одного i количество элементов в ФСР меньше соответствующей кратности корня di ,
то ϕ не диагонализируется.
4. Если для каждого i мы получили, что размер ФСР совпадает с кратностью корня, то есть dim Vλi = di .
То ϕ диагонализируется. В этом случае матрица C состоит из собственных векторов. Если собственные
векторы для λi есть {vi1 , . . . , vidi }, то C = (v11 | . . . |v1d1 |v21 | . . . |v2d2 | . . . |vk1 | . . . |vkdk ). При этом в новом
базисе будет диагональная матрица C −1 AC = Diag(λ1 , . . . , λ1 , λ2 , . . . , λ2 , . . . , λk , . . . , λk ), где каждое λi
встречается di раз.
Заметим, что если поле F алгебраически замкнуто, то первый шаг алгоритма выполнен автоматически, а
именно, над алгебраически замкнутым полем любой многочлен разлагается на линейные множители. Потому
в этом случае вопрос о диагонализируемости – это лишь проверка всех равенств dim Vλi = di .
Задача Определить все собственные значения и размеры клеток в жордановой нормальной форме.
Алгоритм
1. Собственные значения совпадают со спекторм их ищем, как корни характеристического многочлена
χA (t) = (−1)n det(A − tE) = 0. Получаем набор корней и их кратности (λ1 , n1 ), . . . , (λk , nk ).
2. Для каждого λi суммарный размер клеток равен ni . Потому надо определить количество клеток для
всех k ∈ [1, ni ]. Количество клеток считается по формуле
Обратите внимание, что если вы нашли m клеток размера k, а кратность была ni , то на оставшиеся клетки
уходит ni − mk мест. Этим можно пользоваться, чтобы не считать все количества клеток подряд.
6
Алгоритм Общая идея в том, чтобы подобрать инварианты, которые достаточно рассчитать для выбора
из предоставленных вариантов.
1. Найдем характеристический многочлен χA (t) = det(A − tE). И посчитаем его корни. Есть два варианта:
(a) два разных корня λ и µ. В этом случае ЖНФ имеет вид
λ
µ
(b) один корень λ кратности 2. В этом случае, если A = λE, то ЖНФ имеет вид
λ
λ
Алгоритм Общая идея в том, чтобы подобрать инварианты, которые достаточно рассчитать для выбора
из предоставленных вариантов.
1. Найдем характеристический многочлен χA (t) = − det(A − tE) и посчитаем его корни. Возможны следу-
ющие варианты:
3. Два разных корня, λ кратности 2 и µ кратности 1. В этом случае, если rk(A − λE) = 1, то ЖНФ имеет
вид
λ
λ
µ
В противном случае (то есть, если rk(A − λE) = 2) ЖНФ имеет вид
λ 1
λ
µ
7
4. Один корень λ кратности 3. Если A = λE, то ЖНФ имеет вид
λ
λ
λ
Алгоритм Общая идея в том, чтобы подобрать инварианты, которые достаточно рассчитать для выбора
из предоставленных вариантов.
1. Найдем характеристический многочлен χA (t) = det(A − tE). Так как он имеет вид (t − λ)4 , то можно
найти его 3-ю производную и решить χA (t)(3) = 0 для нахождения корня.
2. Если A = λE, то ЖНФ имеет вид
λ
λ
λ
λ
8
5. Если rk(A − λE) = 2, то надо посмотреть на (A − λE)2 . Если (A − λE)2 = 0, то ЖНФ имеет вид
λ 1
λ
λ 1
λ
Алгоритм
1. Пусть в базисе f мы имеем β(x, y) = xt B 0 y, где B 0 – искомая матрица. Тогда B 0 = C t BC.
Алгоритм
1. Составить вектора vi в столбцы матрицы D ∈ Mn k (R).
2. Найти ФСР СЛУ Dt By = 0. Данная ФСР дает базис V ⊥ .
Задача Найти ⊥
V = {y ∈ Rn | β(y, V ) = 0}.
Алгоритм
1. Составить вектора vi в столбцы матрицы D ∈ Mn k (R).
2. Найти ФСР СЛУ Dt B t y = 0. Данная ФСР дает базис ⊥
V.
26 Симметричный Гаусс
Дано Симметричная билинейная форма β : F n × F n → F по правилу (x, y) 7→ xt By, где B ∈ Mn (F ) –
симметричная матрица и при этом 2 6= 0 в поле F .
Задача Диагоналзовать β, то есть найти матрицу перехода к новому базису C такую, чтобы B 0 = C t BC
была диагональная, и посчитать саму матрицу B 0 .
9
Алгоритм
1. Чтобы найти матрицу B 0 будем приводить ее к диагональному виду симметричными элементарными
преобразованиями, то есть допускаются следующие преобразования:
• Прибавить i-ю строку умноженную на λ к j-ой строке и сразу же прибавление i-го столбца умно-
женного на λ к j-ому столбцу.
• Поменять местами i-ю и j-ю строку и тут же поменять местами i-ый и j-ый столбец.
• Умножить i-ю строку на ненулевое λ и тут же умножить i-ый столбец на то же самое λ.
Получившаяся диагональная матрица будет искомая B 0 .
2. Если при этом надо восстановить матрицу C, то рассматриваем (B|E) и делаем симметричные элемен-
тарные преобразования над ней в том смысле, что преобразования над строками выполняются над всей
матрицей, а преобразования над столбцами только над часть, где лежит B. Тогда матрица приведется
к виду (B 0 |C t ).
27 Метод Якоби
Дано Симметричная билинейная форма β : V ×V → F , базис e1 , . . . , en пространства V , такой, что det β|he1 ,...,ek i 6=
0.
Задача Найти базис e01 , . . . , e0n такой, что e0i − ei ∈ he1 , . . . , ei−1 i = he01 , . . . , e0i−1 i такой, что β(e0i , e0j ) = 0 при
i 6= j.
Алгоритм
1. В начале положим e01 = e1 .
2. Пусть мы нашли вектора e01 , . . . , e0i−1 . Тогда положим вектор e0i в виде7
Задача Проверить, что все ее угловые подматрицы Bk невырождены и если это так, то найти их значения,
а также найти верхнетреугольную матрицу с единицами на диагонали C ∈ Mn (F ) и диагональную матрицу
D ∈ Mn (F ) такие, что B = C t DC.
Алгоритм
1. Начнем приводить матрицу B к верхнетреугольному виду элементарными преобразованиями первого
типа, когда нам разрешено прибавлять строку с коэффициентом только к более низкой строке. Возмож-
ны два исхода:
• На каком-то этапе получили, что на диагонали на k-ом месте стоит 0, а под диагональю есть
ненулевой элемент. Это значит, что ∆k = 0. Условие на матрицу не выполнено.
• Мы привели матрицу B к верхнетреугольной матрице U . Переходим к следующему шагу.
2. Восстановим все необходимые данные по матрице U следующим образом:
(a) D – диагональ матрицы U .
(b) C = D−1 U .
(c) ∆k – произведение первых k элементов диагонали матрицы D.
7В силу условия det β|he1 ,...,ek i 6= 0 выражения вида β(e0k , e0k ) будут всегда отличны от нуля.
10
29 Привести квадратичную форму методом Лагранжа в нормальный вид
Дано Квадратичная форма Q(x) = aij xi xj , где aij ∈ R, x ∈ Rn .
P
i<j
Pr Pd
Задача Линейной заменой координат xi привести квадратичную форму к виду Q(x) = i=1 x2i − i=r+1 x2i .
Алгоритм
4. Теперь Q00 (x) не зависит от x1 . Повторить для него алгоритм с первого шага.
Задача Найти разложение A = U DU t , где U = (u1 |u2 |u3 ) ∈ M3 (R) – ортогональная матрица и D одна из
следующих матриц8
1 −1
(I) D = cos α − sin α или (II) D = cos α − sin α
sin α cos α sin α cos α
Алгоритм
1. Ищем матрицу U . Начинаем с поиска образующего оси. Решаем систему (A − E)x = 0. Возможны
следующие случаи:
(a) ФСР пустое.
Это значит, что у нас случай (II) и ось надо искать из уравнения (A + E)x = 0. Приведем матрицу
A+E к улучшенному ступенчатому виду (v1 |v2 )t . Тогда ее ФСР будет из одного вектора, нормируем
его и обозначим за u1 – это образующий оси. Векторы v1 , v2 образуют базис hu1 i⊥ . Ортогонализуем
и нормируем векторы v1 , v2 . Полученные векторы будут u2 и u3 .
(b) ФСР из одного вектора u. Нормируем его и обозначим через u1 .
Это значит, что у нас случай (I) и вектор u1 – образующий оси. Когда мы решали (A − E)x = 0
мы привели матрицу A − E к улучшенному ступенчатому виду (v1 |v2 )t . Тогда v1 , v2 – базис hu1 i⊥ .
Ортогонализуем v1 , v2 и потом нормируем. Полученные векторы будут u2 и u3 .
8 Прямая натянутая на вектор u1 называется осью для A.
11
(c) ФСР из двух векторов v1 и v2 .
Это значит, что у нас случай (II). Пусть v – любая ненулевая строка матрицы A − E, тогда нор-
мируем v и обозначим получившийся вектор u1 – это будет образующий оси. Ортогонализуем и
нормируем векторы v1 и v2 . Полученные векторы будут u2 и u3 .
(d) ФСР из трех векторов.
Это значит, что у нас случай (I). Такое возможно только если A = E. В этом случае U = E, α = 0.
2. Теперь найдем cos α. Возможны два случая.
(a) Случай (I). Тогда tr A = 1 + 2 cos α.
(b) Случай (II). Тогда tr A = −1 + 2 cos α.
Задача Найти разложение A = CΛC t , где C ∈ Mn (R) – ортогональная матрица, Λ ∈ Mn (R) – диагональная
матрица.
Алгоритм
1. Найти собственные значения матрицы A.
(a) Составить характеристический многочлен χ(λ) = det(A − λE).
(b) Найти корни χ(λ) с учетом кратностей: {(λ1 , n1 ), . . . , (λk , nk )}, где λi – корни, ni – кратности.
12
Алгоритм
1. Составим матрицу S = AAt ∈ Mm (R). Тогда S = U ΛΛt U t .
2. Так как S t = S. То с помощью алгоритма для симметрических матриц найдем ее разложение S =
CDC t . Причем, обязательно получится, что диагональная матрица D = diag(λ1 , . . . , λm ) состоит из
неотрицательных элементов.
√
3. Тогда U = C, а ΛΛt = D. То есть σi2 = λi . Так как σi > 0, то они находятся как σi = λi .
4. Теперь надо найти V из условия A = U ΛV t .10 Пусть σ1 > . . . > σs > 0. Положим U = (u1 | . . . |um ) и
V = (v1 | . . . |vn ). Тогда At U = V Λt , то есть vi = σ1i At ui при 1 6 i 6 s.
5. Теперь найдем оставшиеся vs+1 , . . . , vn . Для этого дополним v1 , . . . , vs до базиса Rn и ортонормируем
полученное семейство.11
13