Алгоритм аннулирующей редукции

| 0 коммент.

Наиболее эффективным в практическом отношении методом построения минимального многочлена является метод аннулирующей редукции. Задача сводится к поиску обращающейся в ноль линейной комбинации векторов (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)

clip_image002l*r=Al*r-1+clip_image004gkrl*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 будет справедливо выражение

clip_image002[1]l*r=f r+clip_image004[1]gkrl*k (1.47)

Учитывая соотношение (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)+ clip_image007gkrd 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)+ clip_image009gkpd 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)

По описанному в данном подразделе алгоритму аннулирующей редукции была разработана программа построения минимального многочлена вектора относительно заданной матрицы. Описание программы приводится в подразделе описания программ.