Вы находитесь на странице: 1из 13

Алгоритмы

1 Выделение базиса из системы векторов


Дано Пусть v1 , . . . , vm ∈ Rn – вектора и V = hv1 , . . . , vm i – их линейная оболочка.

Задача Среди векторов 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

2. Приведем матрицу A элементарными преобразованиями строк к улучшенному ступенчатому виду. На-


пример  
1 0 a31 0 a51
A0 = 0 1 a32 0 a52 
0 0 0 1 a53

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

Тогда v1 , v2 и v4 – базис линейной оболочки. v3 = 2v1 + 3v2 и v5 = v1 − 2v4 .

2 Нахождение какого-то базиса линейной оболочки


Дано Пусть v1 , . . . , vm ∈ Rn – вектора и V = hv1 , . . . , vm i – их линейная оболочка.

Задача Найти какой-нибудь базис подпространства V .

Алгоритм
1. Уложить все вектора vi в строки матрицы A ∈ Mm n (R).

2. Элементарными преобразованиями строк привести матрицу к ступенчатому виду.


3. Ненулевые строки полученной матрицы будут искомым базисом.

1
3 Дополнение линейно независимой системы до базиса всего пространства стан-
дартными векторами
Дано Пусть v1 , . . . , vm ∈ Rn – линейно независимая система векторов, V = hv1 , . . . , vm i – их линейная
оболочка и ei – стандартные базисные векторы, т.е. на i-ом месте стоит 1, а в остальных 0.

Задача Найти такие вектора ek1 , . . . , ekn−m , что система v1 , . . . , vm , ek1 , . . . , ekn−m является базисом Rn .

Алгоритм

1. Уложить вектора vi в строки матрицы A ∈ Mm n (R).


2. Привести матрицу A к ступенчатому виду.
3. Пусть k1 , . . . , kn−m – номера неглавных столбцов. Тогда e1 , . . . , ekn−m – искомое множество.

4 Найти ФСР однородной СЛУ


Дано Система однородных линейных уравнений Ax = 0, где A ∈ Mm n (R) и x ∈ Rn .

Задача Найти ФСР системы Ax = 0.

Алгоритм
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

являются ФСР.

5 Задать подпространство базисом, если оно задано матричным уравнением


Дано Пусть A ∈ Mm n (R) и V ⊆ Rn задано в виде V = {y ∈ Rn | Ay = 0}.

Задача Найти базис подпространства V .

Алгоритм
1. Найти ФСР системы Ay = 0. Векторы ФСР будут базисом V .

6 Задать подпространство матричным уравнением, если оно задано линейной


оболочной
Дано Пусть v1 , . . . , vk ∈ Rn – набор векторов и V = hv1 , . . . , vk i.

Задача Для некоторого m найти матрицу A ∈ Mm n (R) такую, что V = {y ∈ Rn | Ay = 0}.

2
Алгоритм
1. Уложить вектора vi в строки матрицы B ∈ Mk n (R).
2. Найти ФСР системы Bz = 0.
3. Уложить ФСР в строки матрицы A ∈ Mm n (R), где m – количество векторов в ФСР. Матрица A и будет
искомой.

7 Найти матрицу замены координат


Дано Векторное пространство V , e = (e1 , . . . , en ) и f = (f1 , . . . , fn ) – два базиса пространства V . Известна
матрица перехода от e к f , т.е. (f1 , . . . , fn ) = (e1 , . . . , en )A, где A ∈ Mn (R). Дан вектор v = x1 e1 + . . . + xn en .

Задача Найти разложение v по базису f .

Алгоритм
1. Если v = ex, где x ∈ Rn , а также v = f y, где y ∈ Rn , то y = A−1 x.

8 Найти матрицу линейного оператора при замене базиса


Дано Векторное пространство V , e = (e1 , . . . , en ) и f = (f1 , . . . , fn ) – два базиса пространства V . Известна
матрица перехода от e к f , т.е. (f1 , . . . , fn ) = (e1 , . . . , en )C, где C ∈ Mn (R). Дано линейное отображение
φ : V → V заданное в базисе e матрицей A ∈ Mn (R), т.е. φe = eA.

Задача Найти матрицу отображения φ в базисе f .

Алгоритм

1. Пусть φf = f B, где B – искомая матрица. Тогда B = C −1 AC.

9 Найти сумму подпространств заданных линейными оболочками


Дано Подпространства V, U ⊆ Rn заданные в виде V = hv1 , . . . , vm i, U = hu1 , . . . , uk i, где vi , uj ∈ Rn .

Задача Найти базис V + U .

Алгоритм

1. Надо найти базис линейной оболочки hv1 , . . . , vm , u1 , . . . , uk i.

10 Найти пересечение подпространств заданных линейными оболочками


Дано Подпространства V, U ⊆ Rn заданные в виде V = hv1 , . . . , vm i, U = hu1 , . . . , uk i, где vi , uj ∈ Rn .

Задача Найти базис V ∩ U .

1
Алгоритм
 
1. Найти ФСР системы Dx = 0, где D = (v1 | . . . |vm | − u1 | . . . | − uk ) и x = α
β , где α ∈ Rm , β ∈ Rk .
 
2. Пусть α1
– ФСР.
αs
β1 . . . βs

(a) Множество векторов R = (v1 | . . . |vm )(α1 | . . . |αs ) – порождают V ∩ U .


1 В это задаче можно задать подпространства системами, потом найти пересечение в виде системы, потом задать результат

базисом.

3
(b) Среди (α1 | . . . |αs ) можно выкинуть те αi , для которых βi = 0.2
3. Выделить базис среди столбцов R. Это и будет базис V ∩ U .
• Вместо стандартного алгоритма, можно выделить среди полученных (α1 | . . . |αs ) базис, либо найти
любой базис их линейной оболочки (α10 | . . . |αt0 ). Тогда R = (v1 | . . . |vm )(α10 | . . . |αt0 ) и будет базисом
пересечения.3

11 Найти пересечение подпространств заданных матричным уравнением


Дано Подпространства V, U ⊆ Rn заданные в виде V = {y ∈ Rn | Ay = 0}, U = {y ∈ Rn | By = 0}, где
A ∈ Mm n (R) и B ∈ Mk n (R).

Задача Задать V ∩ U в виде {y ∈ Rn | Dy = 0} для некоторого D ∈ Mk n (R), где rk D = k 6 n.

Алгоритм
1. Рассмотреть матрицу D0 = A
.

B

2. Выделить среди строк D0 линейно независимую подсистему. Результат и будет искомая D.

12 Найти сумму подпространств заданных матричным уравнением


Дано Подпространства V, U ⊆ Rn заданные в виде V = {y ∈ Rn | Ay = 0}, U = {y ∈ Rn | By = 0}, где
A ∈ Mm n (R) и B ∈ Mk n (R).

Задача Задать V + U в виде {y ∈ Rn | Ry = 0} для некоторого R ∈ Mk n (R), где rk R = k 6 n.

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}.

3. Выделить базис среди строк S. Это и будет искомая матрица R.

13 Найти проекцию вектора на подпространство вдоль другого подпространства


Дано Rn = V ⊕ U , где V и U заданы базисами V = hv1 , . . . , vm i, U = hu1 , . . . , uk i. Пусть z ∈ Rn расклады-
вается z = v + u, где v ∈ V и u ∈ U .

Задача Найти v и u.

Алгоритм
 
1. Решить СЛУ Dx = z, где D = (v1 | . . . |vm |u1 | . . . |uk ) и x = β , где α ∈ R
α m
и β ∈ Rk .

2. Тогда v = (v1 | . . . |vm )α и u = (u1 | . . . |uk )β.

14 Найти оператор проекции на подпространство вдоль другого подпростран-


ства
Дано Rn = V ⊕ U , где V задано базисом V = hv1 , . . . , vm i, U = {y ∈ Rn | Ay = 0}, где A ∈ Mk n (R) и
rk A = k 6 n.
2 Если ФСР построен по стандартному базису, то останутся αi с нулевыми свободными переменными.
3 Если u1 , . . . , uk были линейно независимы, то полученный на предыдущем шаге набор (α1 | . . . |αs ) уже будет линейно неза-
висим.
4 В этой задаче можно задать подпространства базисами, потом найти сумму заданной базисом, потом задать эту сумму

системой.

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.

15 Определить существует ли линейный оператор заданный на векторах


Дано Векторное пространство V и набор векторов v1 , . . . , vk ∈ V , векторное пространство U и набор век-
торов u1 , . . . , uk ∈ U .

Задача Определить существует ли линейное отображение φ : V → U такое, что φ(vi ) = ui .

Алгоритм
1. Среди векторов v1 , . . . , vk выделить линейно независимые, а остальные разложить по ним.
2. Пусть на предыдущем этапе базис получился v1 , . . . , vr , а vr+i = ai1 v1 + . . . + air vr .
3. Искомое линейное отображение φ существует тогда и только тогда, когда выполняются равенства ur+i =
ai1 u1 + . . . + air ur .6

16 Найти базис образа и ядра линейного отображения


Дано φ : Rn → Rm задан x 7→ Ax, где A ∈ Mm n (R).

Задача Найти базис Im φ ∈ Rm и базис ker φ ∈ Rn .

Алгоритм
1. Выделить базис среди столбцов матрицы A. В результате получится базис Im φ.
2. Найти ФСР системы Ax = 0. Полученная ФСР будет базисом ker φ.

17 Поиск собственных значений и векторов


Следующий алгоритм годится как для комплексных так и для вещественных матриц. Разница лишь в том,
что в вещественном случае у нас вообще говоря будет меньше собственных значений. Для определенности
алгоритм рассказывается для комплексных матриц.

Дано Матрица A ∈ Mn (C).

Задача Найти все собственные значения λ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 .

19 Определить ЖНФ у оператора


Дано Матрица A ∈ Mn (C)

Задача Определить все собственные значения и размеры клеток в жордановой нормальной форме.

Алгоритм
1. Собственные значения совпадают со спекторм их ищем, как корни характеристического многочлена
χA (t) = (−1)n det(A − tE) = 0. Получаем набор корней и их кратности (λ1 , n1 ), . . . , (λk , nk ).
2. Для каждого λi суммарный размер клеток равен ni . Потому надо определить количество клеток для
всех k ∈ [1, ni ]. Количество клеток считается по формуле

количество клеток размера k = rk(A − λi E)k+1 + rk(A − λi E)k−1 + 2 rk(A − λi E)k

Обратите внимание, что если вы нашли m клеток размера k, а кратность была ni , то на оставшиеся клетки
уходит ni − mk мест. Этим можно пользоваться, чтобы не считать все количества клеток подряд.

20 Определение ЖНФ у матриц 2 на 2


Дано Матрица A ∈ M2 (C)

Найти Жорданова форма может быть одной из


     
λ λ λ 1
, ,
µ λ λ

Определить какая форма в нашем случае и определить все числа.

6
Алгоритм Общая идея в том, чтобы подобрать инварианты, которые достаточно рассчитать для выбора
из предоставленных вариантов.
1. Найдем характеристический многочлен χA (t) = det(A − tE). И посчитаем его корни. Есть два варианта:
(a) два разных корня λ и µ. В этом случае ЖНФ имеет вид
 
λ
µ

(b) один корень λ кратности 2. В этом случае, если A = λE, то ЖНФ имеет вид
 
λ
λ

В противном случае ЖНФ имеет вид  


λ 1
λ

21 Определение ЖНФ у матриц 3 на 3


Дано Матрица A ∈ M3 (C)

Найти Жорданова форма может быть одной из


           
λ λ λ 1 λ λ 1 λ 1
 µ ,  λ ,  λ ,  λ ,  λ ,  λ 1
γ µ µ λ λ λ

Определить какая форма в нашем случае и определить все числа.

Алгоритм Общая идея в том, чтобы подобрать инварианты, которые достаточно рассчитать для выбора
из предоставленных вариантов.
1. Найдем характеристический многочлен χA (t) = − det(A − tE) и посчитаем его корни. Возможны следу-
ющие варианты:

• три разных корня λ, µ, γ.


• один корень λ кратности 2, один корень µ кратности 1.
• один корень λ кратности 3.
2. Три разных корня. В этом случае ЖНФ имеет вид
 
λ
 µ 
γ

3. Два разных корня, λ кратности 2 и µ кратности 1. В этом случае, если rk(A − λE) = 1, то ЖНФ имеет
вид  
λ
 λ 
µ
В противном случае (то есть, если rk(A − λE) = 2) ЖНФ имеет вид
 
λ 1
 λ 
µ

7
4. Один корень λ кратности 3. Если A = λE, то ЖНФ имеет вид
 
λ
 λ 
λ

Если rk(A − λE) = 1, то ЖНФ имеет вид


 
λ 1
 λ 
λ

В противном случае (то есть rk(A − λE) = 2) ЖНФ имеет вид


 
λ 1
 λ 1
λ

22 Определение ЖНФ у матриц 4 на 4 с одним собственным значением


Дано Матрица A ∈ M4 (C) с единственным собственным значением.

Найти Жорданова форма может быть одной из


         
λ λ 1 λ 1 λ 1 λ 1

 λ  
,  λ 
, 
 λ 
,

 λ 1 
,

 λ 1 

 λ   λ   λ 1  λ   λ 1
λ λ λ λ λ

Определить какая форма в нашем случае и определить собственное значение.

Алгоритм Общая идея в том, чтобы подобрать инварианты, которые достаточно рассчитать для выбора
из предоставленных вариантов.

1. Найдем характеристический многочлен χA (t) = det(A − tE). Так как он имеет вид (t − λ)4 , то можно
найти его 3-ю производную и решить χA (t)(3) = 0 для нахождения корня.
2. Если A = λE, то ЖНФ имеет вид  
λ

 λ 

 λ 
λ

3. Если rk(A − λE) = 1, то ЖНФ имеет вид


 
λ 1

 λ 

 λ 
λ

4. Если rk(A − λE) = 3, то ЖНФ имеет вид


 
λ 1

 λ 1 

 λ 1
λ

8
5. Если rk(A − λE) = 2, то надо посмотреть на (A − λE)2 . Если (A − λE)2 = 0, то ЖНФ имеет вид
 
λ 1

 λ 

 λ 1
λ

иначе (если (A − λE)2 6= 0) ЖНФ имеет вид


 
λ 1

 λ 1 

 λ 
λ

23 Найти матрицу билинейной формы при замене базиса


Дано Векторное пространство V , e = (e1 , . . . , en ) и f = (f1 , . . . , fn ) – два базиса пространства V . Известна
матрица перехода от e к f , т.е. (f1 , . . . , fn ) = (e1 , . . . , en )C, где C ∈ Mn (R). Дана билинейная форма β : V ×V →
R заданная в базисе e матрицей B ∈ Mn (R), т.е. bij = β(ei , ej ).

Задача Найти матрицу билинейной формы β в базисе f .

Алгоритм
1. Пусть в базисе f мы имеем β(x, y) = xt B 0 y, где B 0 – искомая матрица. Тогда B 0 = C t BC.

24 Найти правое ортогональное дополнение к подпространству


Дано Подпространство V ⊆ Rn , заданное образующими V = hv1 , . . . , vk i, и билинейная форма β : Rn ×Rn →
R, заданная β(x, y) = xt By, где B ∈ Mn (R).

Задача Найти V ⊥ = {y ∈ Rn | β(V, y) = 0}.

Алгоритм
1. Составить вектора vi в столбцы матрицы D ∈ Mn k (R).
2. Найти ФСР СЛУ Dt By = 0. Данная ФСР дает базис V ⊥ .

25 Найти левое ортогональное дополнение к подпространству


Дано Подпространство V ⊆ Rn , заданное образующими V = hv1 , . . . , vk i, и билинейная форма β : Rn ×Rn →
R, заданная β(x, y) = xt By, где B ∈ Mn (R).

Задача Найти ⊥
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

β(ei , e01 ) 0 β(ei , e0i−1 ) 0


e0i = ei − e 1 − . . . − e
β(e01 , e01 ) β(e0i−1 , e0i−1 ) i−1

28 Алгоритм диагонализации на основе метода Якоби


Дано Симметрическая матрица B ∈ Mn (F ).

Задача Проверить, что все ее угловые подматрицы 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 .

Алгоритм

1. Начнем с переменной x1 . Посмотреть, зависит Q(x) от x21 или нет.


2. Пусть не зависит от x21 , но вообще говоря зависит от x1 . Тогда можно считать, что есть член x1 x2 .
Сделаем замену переменных x1 = u1 + u2 , x2 = u1 − u2 . Тогда x1 x2 = u21 − u22 . После этой замены, можно
считать, что Q(x) зависит от x21 .

3. Рассмотрим все слагаемые содержащие x1 :

Q(x) = a11 x21 + a12 x1 x2 + . . . + a1n x1 xn + Q0 (x)

Выделим полный квадрат


   2
a12 a1n a12 a1n
Q(x) = a11 x21 +2 x2 + . . . + xn x1 + x2 + . . . + xn −
2a11 2a11 2a11 2a11
 2 !
a12 a1n
− x2 + . . . + xn + Q0 (x) =
2a11 2a11
 2
a12 a1n
= a11 x1 + x2 + . . . + xn + Q00 (x)
2a11 2a11

4. Теперь Q00 (x) не зависит от x1 . Повторить для него алгоритм с первого шага.

30 Алгоритм приведения ортогонального оператора R3 к каноническому виду


Дано Ортогональная матрица A ∈ M3 (R).

Задача Найти разложение 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 α.

3. Теперь найдем sin α. Для этого заметим, что (Au2 , u3 ) = sin α.

31 Алгоритм разложения симметрических матриц


Дано Матрица A ∈ Mn (R) такая, что At = A.

Задача Найти разложение A = CΛC t , где C ∈ Mn (R) – ортогональная матрица, Λ ∈ Mn (R) – диагональная
матрица.

Алгоритм
1. Найти собственные значения матрицы A.
(a) Составить характеристический многочлен χ(λ) = det(A − λE).
(b) Найти корни χ(λ) с учетом кратностей: {(λ1 , n1 ), . . . , (λk , nk )}, где λi – корни, ni – кратности.

2. Для каждого λi найти ортонормированный базис в пространстве собственных векторов отвечающему


λi .
(a) Найти ФСР системы (A − λi E)x = 0. Пусть это будет v1i , . . . , vni i . Обратите внимание, что их коли-
чество будет в точности равно кратности ni .
(b) Ортогонализовать v1i , . . . , vni i методом Грама-Шмидта. Обратите внимание, после ортогонализации
останется ровно ni векторов.
vji
(c) Сделать каждый вектор длинны один: vji 7→ |vji |
.

3. Матрица Λ будет диагональной с числами λ1 , . . . , λ1 , λ2 , . . . , λ2 , . . . , λk , . . . , λk на диагонали, где каждое


λi повторяется ni раз. Обратите внимание, всего получится n чисел.
4. Матрица C будет составлена из столбцов v11 , . . . , vn1 1 , v12 , . . . , vn2 2 , . . . , v1k , . . . , vnk k . Обратите внимание, по-
рядок собственных векторов соответствует порядку собственных значений в матрице Λ.

32 Алгоритм нахождения сингулярного разложения


Дано Матрица A ∈ Mm n (R).9

Задача Найти разложение A = U ΛV t , где U ∈ Mm (R) ортогональная, V ∈ Mn (R) ортогональная, Λ ∈


Mm n (R) содержит на диагонали элементы σ1 > . . . > σs > 0, а все остальные нули.
9 Этот алгоритм рекомендуется применять при m 6 n, в противном случае, применить его к матрице At , а потом транспони-

ровать полученное разложение.

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

10 Обратите внимание Λ не обязательно квадратная и тем более не обязательно обратимая.


11 Можно заметить, что vs+1 , . . . , vn будут базисом ядра A, потому можно найти ФСР для {y ∈ Rn | Ay = 0} и ортонормировать
его.

13