Я.Ю. Коновалов, С.К. Соболев, М.А. Ермолаева
12
3-й метод. Ортогональные матрицы можно получить, применяя
процесс ортогонализации к строкам целочисленной квадратной матри-
цы
А
с ненулевым определителем (и последующей нормировкой всех
строк). Процесс ортогонализации последовательно строит попарно ор-
тогональные строки целочисленной матрицы
В
, в которой первая стро-
ка такая же, как и в матрице
А
. На
k
-м этапе из уже построенных по-
парно ортогональных вектор-строк
1
, ,
,
k
b b
таких, что
1
( , ..., )
k
L
a a
1
( , ..., )
k
L
b b
(
L
обозначает линейную оболочку), следующая вектор-
строка
1
k
b
выбирается в виде
1
1 1
1
...
k
k k
k
b
b
b a
(
,
)
i
из условия ортогональности всем векторам
1
, ...,
k
b b
, откуда
2
2
1
( ) ...( )
k
b b
,
1
2
( ,
)
( )
k k
i
i
b a
b
. Числа
1
, ...,
,
k
затем надо
сократить на их наибольший общий делитель.
Проще всего в качестве матрицы
А
взять единичную матрицу, в
которой в первой строке правее единицы стоят произвольные числа.
Этот алгоритм почти детерминирован, произвольной является только
эта первая строка. Тогда получается матрица
В
с треугольником ну-
лей, например:
1 1 2 1 3
1 1 2 1 3
0 1 0 0 0
1 15 2 1 3
.
0 0 1 0 0
2 0 11 2 6
0 0 0 1 0
1 0 0 10 3
0 0 0 0 1
3 0 0 0 1
A
B
Лучше взять случайную верхнетреугольную матрицу
А
с ненуле-
выми диагональными элементами (скажем, единицами), например:
1 1 1 1 1
1 1 1 1 1
0 1 2 2 1
6 1 4 4 1
.
0 0 1 1 1
0 1 0 0 1
0 0 0 1 2
5 5 1 6 5
0 0 0 0 1
1 1 3 2 1
A
B
4-й метод (пока не реализованный).
Взять случайную целочислен-
ную
п
-мерную строку с небольшими компонентами, например,
1
(1; 1; 0; 2),
a
и в ее ортогональном дополнении
1
,
a
задаваемом
уравнением
1
( , ) 0
a x
, перебирая один за другим его целочисленные
векторы, выбрать из первых
N
векторов вектор
2
a
с минимальной нор-
мой, вычисляемой по формуле
1
max .
i
i n
b
b
Затем в ортогональном