Наиболее эффективным в практическом отношении методом построения минимального многочлена является метод аннулирующей редукции. Задача сводится к поиску обращающейся в ноль линейной комбинации векторов (1.40)
l, l1=Al , l2=Al1 , ... , lr=Alr- (1.40)
при минимальном их числе p+1. Указанная линейная комбинация ищется с помощью формирования векторов
l*0=l, l*1 , l*2 , ... , l*r
с возрастающим числом нулевых элементов вплоть до образования нулевого вектора l*p, дающего соотношение (1.41)
l p+d1 l p -1+d2 l p-2+ ... +dp-1 l 1+dp l =0 (1.41)
Алгоритму аннулирующей редукции придана удобная табличная форма.
Пусть задан вектор l и требуется построить его минимальный многочлен вида (1.42)
d(s)= s p+d1 s p-1+d2 s p-2+ ... +dp-1 s+dp (1.42)
Таким образом, возникает задача поиска коэффициентов линейной комбинации (1.41). Для решения этой задачи рассматривается ряд векторов l*r, r=0,1,2,..., l*0=l, определяющихся по формуле (1.43)
l*r=Al*r-1+
gkrl*k , r=1,2, (1.43)
Коэффициенты линейной комбинации (1.43) grk выбираются на каждом шаге r, с учетом условия, что в каждом последующем конструируемом векторе число нулевых элементов должно возрастать.
Алгоритм начинается с первого шага r=1. Для этого в исходном векторе l выбирается элемент d, с номером m , такой что
d=lm¹ 0 (1.44)
Составляется линейная комбинация
l*1=Al+g01l,
коэффициент g01 выбирается так, чтобы выполнялось условие
l*1m=0.
Тогда он вычисляется по формуле
g01=-(Al)m / d
На втором шаге редукции при r=2 в векторе l*1 выбирается элемент d1, с номером m1¹m, такой, что
l*1m1¹0
Составляется линейная комбинация
l*2=Al*1+g02l+g12l*1 ,
коэффициенты g02 и g12 выбираются с учетом условий
l*2m= 0 , l*2m1= 0.
Тогда искомые коэффициенты определяются по формулам
g02=-(Al*1)m / d
g12=-[(Al*1)m1 +g02 lm1 ]/ d1.
Выбранные элементы d и d1 называются ведущими элементами векторов l и l*1 соответственно.
Далее указанная процедура продолжается индуктивно для построения векторов вида (1.43). Можно записать соотношения для полученных векторов:
1. l*1m=0.
2. l*2m= 0 , l*2m1= 0.
............................................ (1.45)
r-2. l*r-2m= 0 , l*r-2m1= 0 , ... , l*r-2m r-3= 0 .
r-1. l*r-1m= 0 , l*r-1m1= 0 , ... , l*r-1m r-3= 0 , l*r-1m r-2= 0 .
где m, m1, ... , mr-2 - номера ведущих элементов векторов l*0=l, l*1 , l*2 , ... , l*r-2 соответственно.
Предположим, что на шаге r выбирается элемент dr-1 с номером mr-1 , причем
dr-1= l*r-1m r-1¹ 0
Тогда, выполняя указанную выше процедуру построения линейной комбинации и выбора коэффициентов, конструируется вектор l*r со всеми нулевыми компонентами.
Для удобства формирования таблицы вводятся обозначения:
f*r=Al*r-1 , r=1,2, ... (1.46)
А для векторов l*r будет справедливо выражение
Учитывая соотношение (1.45) можно записать
l*rm= fmr + g0r lm
l*rm1= fm 1r + g0r lm 1+g1r l*1m1
...............................................
l*rmk= fmrk + g0r lm k+g1r l*1mk+ ... +gkr l*kmk (1.48)
...............................................
l*rmr-1= fmrr-1 + g0r lm r-1+g1r l*1mr-1+ ... +gr-1r l*r-1mr-1
Если учесть, что на r - ом шаге редукции требуется образовать нуль-вектор, то есть выполнить условия
l*rm= 0 , l*rm1= 0 , ... , l*rm r-2= 0 , l*rm r-1= 0 , (1.49)
то из соотношения (1.48) определяются коэффициенты gkr :
g0r =-fmr / d
g1r=-(fm1r+g0r lm1) / d1
.........................................
gkr=-(fmkr+g0r lmk+g1r l*1mk+ ...+ gk-1r l*k-1mk-1) / dk (1.50)
..........................................................................
gr-1r=-(fmr-1r+g0r lmr-1+g1r l*1mr-1+ ...+ gr-2r l*r-2mr-1) / dr-1
Таким образом, при построении линейной комбинации векторов (1.47) с учетом выбора коэффициентов (1.50) образуется вектор l*r , у которого r элементов с номерами m, m1, ... , mr-1 равны 0. Каждый из построенных векторов l*r , r=1,2,... может быть представлен в виде линейной комбинации векторов l, l1=Al , l2=Al1 , ..., lr=Alr-1 вида
l*r =lr+d1lr-1+d2lr-2+ ... +dr-1l1+drl (1.51)
Если при r=p вектор l*p равен нулю, то равенство (1.51) принимает вид (1.41). Так как это равенство по построению образуется впервые, то с учетом соотношения (1.41) формируется минимальный многочлен с коэффициентами:
d1=d1p , d2=d2p , ..., dp-1= dp-1p, dp=dpp (1.52)
Для построения таблицы вводятся обозначения:
hr1= f r + g0r l
hr2= hr1+g1r l*1
..............................
hrk= hrk-1+gkr l*r-1 (1.53)
..............................
hrr-1= hrr-2+gr-2r l*r-2 , r=2,3,...
Тогда вектор l*r формируется по формуле
l*r= hrr-1+gr-1r l*r-1 (1.54)
а соотношение (1.50) принимает вид
g0r =-fmr / lm
g1r=- hr1m1 / l*1m1
..................................
gkr=- hrkmk / l*kmk (1.55)
..................................
gr-1r=- hrr-1mr-1 / l*r-1mr-1 , r=2,3,...
Получая коэффициенты gkr из соотношений (1.53),(1.55) при k=0,1,...,r-1, можно вычислить коэффициенты линейной комбинации (1.51). Для этого подставляется выражение (1.51) в (1.40) и приравниваются коэффициенты при векторах lr-1,lr-2,...,l1,l. В итоге получается соотношение
d1r=d1r-1+ gr-1r
d2r=d2r-2+ gr-1rd1r-1+ gr-2r
....................................
dkr=dkr-1+ gr-1rdk-1r-1+ gr-2rdk-2r-2+ ... +gr-k+1rd1r-k+1+ gr-1r (1.56)
..................................................................................
dr-1r=dr-1r-1+ gr-1rdr-2r-1+ gr-2rdr-3r-2+ ... +g2rd12+ g1r
drr=0+ gr-1rdr-1r-1+ gr-2rdr-2r-2+ ... +g2rd22+ g1rd11+ g0r
Вычислениям по соотношению ( 1.56 ) можно придать табличную форму (табл 1.1). Формируя строки, указанные в таблице, умножая их на gkr , при k=0,1,... указанные колонкой справа и складывая соответственно элементы этих строк по столбцам, получаются коэффициенты линейной комбинации (1.51) по найденным на предыдущих шагах.
Выполняя вычисления последовательно при r = 1, 2, ..., p в последней таблице получим коэффициенты минимального многочлена ( 1.52 ). Указанному рекурентному процессу можно придать следующую форму :
d r(s)= sr + d1r sr-1+ d2r sr-2 + ... +dr-1r s + drr, r = 0, 1, ..., p (1.57)
d 0(s)= 1
Таблица 1.1
k | sr sr-1 sr-2 sr-3 ... s2 s1 s0 | gkr |
0 1 2 ... r-1 r | 0 0 0 0 ... 0 0 1 0 0 0 0 ... 0 1 d11 0 0 0 0 ... 1 d12 d22 ................................................................................ 0 1 d1r-1 d2r-1 ... dr-3r-1 dr-2 r-1 dr-1 r-1 1 d1r-1 d 2r-1 dr-3r-1 ... dr-2 r-1 dr-1 r-1 0 | g0r g1r g2r . gr-1r 1 |
S | 1 d1r d 2r dr-3r ... dr-2 r dr-1 r dr r |
Многочлены выражения ( 1.57 ) связаны рекурентным соотношением :
d r(s)= sd r-1(s)+ gkrd k(s), r = 1, 2, ... p (1.58)
где d 0(s)= 1.
Учитывая, что коэффициенты gkr определены выше, можно записать согласно (1.58) соотношение :
d10(s)= 1
d21(s)= s + g1
d32(s)= s d 1(s)+ g12 d 1(s)+ g32 (1.59)
..............................................
d r(s)= s d r-1(s)+ gr-1r d r-1(s)+ gr-2r d r-2(s)+ ... + g1r d 1(s)+ g r
..............................................
на последнем шаге вычислений определяются коэффициенты минимального многочлена d (s)= d p(s)
d p(s)= s d p-1(s)+ gkpd k(s) (1.60 )
Полную схему вычислений для построения минимального многочлена на основе соотношений ( 1.53, 1.54, 1.56, 1.46, 1.40 ) можно представить в табличной форме ( табл. 1.2 ), представляющей собой фрагмент алгоритма на r-ом шаге.
Таблица заполняется числами * последовательно по шагам k = 0, 1, ... r. Строки левой части таблицы заполняются значениями элементов векторов, а строки правой части - значениями коэффициентов многочленов при степенях sk , k = 0, 1, ..., n. В последней строке таблицы получаем слева компоненты l*r1 , l*r2 , ..., l*rn вектора l*r , а справа коэффициенты 1, d1 r, ..., d rr , при указанных вверху степенях многочлена d r(s).
Таблица 1.2
k | 1 2 3 ... n | dk | gkr | sr sr-1 ... s2 s1 s0 | ||
0 1 2 . r-1 | f r g0rl h r1 g1 r l*1 hr2 g2r l*2 ... hrr-1 gr-1r l*r-1 | * * * ... * * * * ... * * * * ... * * * * ... * * * * ... * * * * ... * ..................
* * * ... * * * * ... *
| *
*
*
.
* | *
*
*
.
*
| *
* *
* * *
................................
* ... * * * 1 * ... * * * | g0 r d o(s)
g01r d 1(s)
g2 r d 2(s)
...... gr-1r d r-1(s) sd r-1(s)
|
r | l*r | * * * ... * |
|
| 1 * ... * * * | d r(s) |
По описанному в данном подразделе алгоритму аннулирующей редукции была разработана программа построения минимального многочлена вектора относительно заданной матрицы. Описание программы приводится в подразделе описания программ.