Н.И. Яцкин - Линейная алгебра (Теоремы и алгоритмы) (1109879), страница 93
Текст из файла (страница 93)
е. содержащую базис в D[i][1])# как подматрицу в исходной конкатенации M[i][1],# содержащую столбцы, номера которых# входят в список blist.H[i][k]:=SubMatrix(M[i][k],1..n,blist);# Формируем матрицу G[i][1], отвечающую# всему первому уровню# (т. е. содержащую базис в C[i][1]).G[i][k]:=<B[i][1].G[i][k+1]|H[i][k]>;# Выдаем на печать полученные результаты.print(evaln(H[i][k])=H[i][k],evaln(G[i][k])=G[i][k]);print(str);fi;fi;# Завершение рассмотрения случаев 1) – 3)# по расположению этажа.Прил. 1Коды Maple-процедурprint(str);od;# Завершение спуска по этажам диаграммы.fi;# Завершение рассмотрения случаев по одно# (или много-) этажности диаграммы.od;# Завершение цикла по номеру собственного значения.# Подготовка окончательных ответов.# Формирование матрицы GS, содержащей# (полный или частичный) жорданов базис.# (Число столбцов в GS равняется сумме ms# всех алгебраических кратностей.)GS:=Matrix(n,ms);# Цикл по номеру собственного значения.for i from 1 to s do# Цикл по номеру строки в матрице DIAGR[i].for k from 1 to l[i] do# При всяком u от 1 до p[i][k]# в позиции [k,u] в матрице DIAGR[i]# стоит натуральное число DIAGR[i][k,u] # номер, под которым в матрице GS# должен стоять вектор,# извлеченный из матрицы G[i][k],# где он имел номер u.# Поэтому мы извлекаем из G[i][k]# (как подматрицу) вектор-столбец с номером u# и вписываем его в матрицу GS# как вектор-столбец с номером DIAGR[i][k,u].for u from 1 to p[i][k] doGS[1..n,DIAGR[i][k,u]..DIAGR[i][k,u]]:=SubMatrix(G[i][k],1..n,u..u);od;od;od;# Печать матрицы GS, представляющей базис в корневой сумме.print(evaln(GS)=GS);print(str);print(str);553554#####Коды Maple-процедурФормирование матрицы перехода Tот исходного (естественного) базисак жорданову (или частично жорданову) базису,а также формирование (частичной или полной)жодановой нормальной формы J для матрицы А.if exist_jbas then# Если существует полный жорданов базис# (во всем пространстве),# то матрица GS является квадратной,# содержит полный жорданов базис# и совпадает с искомой матрицей перехода Т.# Полная ж.н.ф.
матрицы A совпадает# с (ранее вычисленной) матрицей JS.T:=GS;J:=JS;# Выводим на печать матрицы J и T.print(evaln(J)=J);print(evaln(T)=T);print(str);print(str);####Организуем "избыточную" проверку(логически она является излишней,но при отладке программыили при ручной работе – полезна).#####Вычисляем и выдаем на печатьопределитель det(T);он должен быть ненулевым.Если это не так, товыдается сообщение об ошибке.dt:=Determinant(T);print(evaln(det('T'))=dt);if dt=0 thenERROR(`Матрица T необратима!`);fi;#####Еще одна избыточная проверка:контролируем выполнение равенстваT.J=A.Tи генерируем сообщение об ошибке,если оно нарушается.if not Equal(T.J,A.T) thenERROR(`Равенство T*J=A*T не выполняется!`);fi;print(str);print(str);Прил.
1Прил. 1Коды Maple-процедурelse######Если полного жорданова базисане существует,то мы дополняем жорданов базис в корневой сумме,содержащийся в матрице GS,до (частично жорданова) базисаво всем пространстве.# Составляем и приводим к ступенчатому виду# матрицу GSE, являющуюся конкатенацией# матрицы GS и единичной матрицы E.GSE:=<GS|E>;GSEG:=GaussianElimination(GSE);print(evaln(GSE)=GSE);print(evaln(GSEG)=GSEG);####Выбираем (по ступенькам в правой зонематрицы GSEG) добавочные векторыиз правой зоны матрицы GSEи приписываем их к GS.for i from ms+1 to n dofor j from ms+1 to n doif GSEG[i,j]<>0 thenT:=<T|SubMatrix(GSE,1..n,j..j)>;break;fi;od;od;# В итоге формируется квадратная# матрица T размера n на n,# содержащая частично жорданов базис.# Избыточная проверка:# контролируем отличие от нуля# определителя det(T).dt:=Determinant(T);if dt=0 thenERROR(`Матрица T необратима!`);fi;# Вычисляем частично жорданову форму J# для матрицы A,# пользуясь T как матрицей перехода.J:=MatrixInverse(T).A.T;# Еще одна избыточная проверка:555556Коды Maple-процедурПрил.
1# севере-западный блок размера ms на ms# в полученной матрице J# должен совпадать с матрицей JS.if not Equal(JS,SubMatrix(J,1..ms,1..ms)) thenERROR(`Равенство JS=SubMatrix(G,1..ms,1..ms)не выполняется!`);fi;print(str);print(str);# Печать окончательных результатов.print(evaln(J)=J);print(evaln(T)=T);print(evaln(det('T'))=dt);print(str);print(str);fi;######"Сценарная часть" работы процедуры завершена.Далее следует завершение работы всей процедурыс возвращением (в виде, допускающем дальнейшее использование)1) матрицы J - (частичной) ж.н.ф. для A;2) матрицы T - перехода от исходного базисак (частично) жорданову.RETURN(J,T);end proc;Прил. 1Коды Maple-процедур5572а.
Пример применения процедуры jrd(к ТР2 "Жорданов базис для линейного эндоморфизма"; п. 28.5)> A:=Matrix([[5, -4, -3, 5, -1, 1, 5, 1, -1, 3, 1],[12, 30, 14, 4, 5, -8, 0, -4, 12, -8, -4],[12, 8, 3, 5, -1, -1, 1, -4, 5, -2, -3],[1, -14, -7, -1, -4, 7, -3, -3, -4, 2, -1],[-12, -8, -1, -5, 3, 1, -1, 4, -5, 2, 3],[13, 28, 12, 5, 4, -8, 1, -4, 11, -7, -4],[-6, 18, 10, -5, 5, -8, -3, 1, 5, -5, 0],[6, -4, -3, 5, -1, 1, 5, 0, -1, 3, 1],[-12, -34, -16, -4, -6, 9, 0, 4, -14, 9, 4],[23, 39, 21, 8, 7, -9, 0, -8, 17, -11, -7],[13, -22, -16, 10, -9, 9, 7, -1, -6, 8, 0]]);⎡ 5⎢⎢⎢⎢ 12⎢⎢ 12⎢⎢ 1⎢⎢⎢-12⎢A := ⎢⎢ 13⎢⎢⎢ -6⎢⎢ 6⎢⎢⎢-12⎢⎢⎢⎢ 23⎢⎣ 13-4308-14-82818-4-3439-22-3143-7-11210-3-1621-16545-1-55-55-4810-15-1-4345-1-67-91-8-171-8-819-99501-3-11-350071-4-4-34-4104-8-1-1125-4-5115-1-1417-63-8-222-7-539-1181⎤⎥-4 ⎥⎥⎥-3 ⎥⎥-1 ⎥⎥⎥3 ⎥⎥⎥-4 ⎥⎥⎥0 ⎥⎥1 ⎥⎥⎥4 ⎥⎥⎥-7 ⎥⎥⎥0 ⎥⎦> jrd(A);n = 11h( λ ) = λ 11 − 4 λ 10 − 5 λ 9 + 30 λ 8 + 15 λ 7 − 96 λ 6 − 51 λ 5 + 150 λ 4 + 120 λ 3− 80 λ 2 − 112 λ − 32h( λ ) = ( λ − 2 ) 5 ( λ + 1 ) 6s=2λ 1 = 2 , m1 = 5λ 2 = -1 , m 2 = 6----------------------------------------------------------------------------------ms = 11Полный жорданов базис существует.----------------------------------------------------------------------------------558Коды Maple-процедурПрил.
1l1 = 4⎡ 3⎢⎢⎢⎢ 12⎢⎢ 12⎢⎢ 1⎢⎢⎢-12⎢B 1 = ⎢⎢ 13⎢⎢1⎢ -6⎢⎢ 6⎢⎢⎢-12⎢⎢⎢⎢ 23⎢⎣ 13-4288-14-82818-4-3439-22-3141-7-11210-3-1621-16⎡1⎢⎢⎢⎢0⎢⎢0⎢⎢0⎢⎢⎢0⎢BGJ 1 = ⎢⎢0⎢⎢1⎢0⎢⎢0⎢⎢⎢0⎢⎢⎢⎢0⎢⎣001000000000545-3-55-55-4810-15-1-4145-1-67-91-8-171-10-819-99001000000000001000000000001000000⎡0⎢⎢⎢⎢ 0⎢⎢ 1⎢⎢ 0⎢⎢⎢-2⎢F 1 = ⎢⎢ 0⎢⎢1⎢0⎢⎢ 0⎢⎢⎢0⎢⎢⎢⎢ 0⎢⎣ 100000100000501-3-11-550071-4-4-34-41-24-8-1-1125-4-5115-1-1617-600000010000-1011-2000000000000010003-8-222-7-539-138000000001001⎤⎥-4 ⎥⎥⎥-3 ⎥⎥-1 ⎥⎥⎥3 ⎥⎥⎥-4 ⎥⎥,⎥0 ⎥⎥1 ⎥⎥⎥4 ⎥⎥⎥-7 ⎥⎥⎥-2 ⎥⎦0⎤⎥0 ⎥⎥⎥-1 ⎥⎥0 ⎥⎥⎥2 ⎥⎥⎥0 ⎥⎥⎥0 ⎥⎥0 ⎥⎥⎥0 ⎥⎥⎥0 ⎥⎥⎥0 ⎥⎦1⎤⎥0 ⎥⎥⎥-1 ⎥⎥-1 ⎥⎥⎥2 ⎥⎥⎥0 ⎥⎥, d 1 = 2⎥0 ⎥⎥ 11 ⎥⎥⎥0 ⎥⎥⎥0 ⎥⎥⎥0 ⎥⎦----------------------------------------------------------------------------------Прил.
1Коды Maple-процедур⎡ 25⎢⎢⎢⎢-24⎢⎢-27⎢⎢-32⎢⎢⎢ 27⎢B 1 = ⎢⎢-29⎢⎢2⎢ 10⎢⎢ 16⎢⎢⎢ 24⎢⎢⎢⎢-46⎢⎣ 033-88-541254-79-4533115-1517820-43-21421-31-242055-8253⎡1⎢⎢⎢⎢0⎢⎢0⎢⎢0⎢⎢⎢0⎢BGJ 1 = ⎢⎢0⎢⎢2⎢0⎢⎢0⎢⎢⎢0⎢⎢⎢⎢0⎢⎣0-3-7-909-1312-37-10-15010000000005-17-676-11-12523-322600100000000⎡0⎢⎢⎢⎢ 0⎢⎢ 1⎢⎢ 0⎢⎢⎢-2⎢F 1 = ⎢⎢ 0⎢⎢2⎢0⎢⎢ 0⎢⎢⎢0⎢⎢⎢⎢ 0⎢⎣ 10001000000001000100-110-42715-17-153021-4-3342-250000100000000000100000-1410110-512-14-17-1700000010000559-188922-972-9-818-14-1011-20000000000000100015-35-24-324-29-121550-5927-1426152-152012-14-3250-260-1000-1010000⎤⎥0 ⎥⎥⎥-1 ⎥⎥0 ⎥⎥⎥2 ⎥⎥⎥0 ⎥⎥⎥0 ⎥⎥0 ⎥⎥⎥0 ⎥⎥⎥0 ⎥⎥⎥0 ⎥⎦-10 ⎤⎥9 ⎥⎥⎥9 ⎥⎥10 ⎥⎥⎥-9 ⎥⎥⎥9 ⎥⎥,⎥0 ⎥⎥-10 ⎥⎥⎥-9 ⎥⎥⎥18 ⎥⎥⎥-1 ⎥⎦1⎤⎥0 ⎥⎥⎥-1 ⎥⎥-1 ⎥⎥⎥2 ⎥⎥⎥0 ⎥⎥, d 1 = 3⎥0 ⎥⎥ 21 ⎥⎥⎥0 ⎥⎥⎥0 ⎥⎥⎥0 ⎥⎦----------------------------------------------------------------------------------560Коды Maple-процедур⎡ -60⎢⎢⎢⎢ 81⎢⎢ 81⎢⎢ 69⎢⎢⎢ -81⎢B 1 = ⎢⎢ 99⎢⎢3⎢ -9⎢⎢ -33⎢⎢⎢ -81⎢⎢⎢⎢144⎢⎣ 3-14227018934-189216108-142-378486-250-851358131-818154-85-189270-166⎡1⎢⎢⎢⎢0⎢⎢0⎢⎢0⎢⎢⎢0⎢BGJ 1 = ⎢⎢0⎢⎢3⎢0⎢⎢0⎢⎢⎢0⎢⎢⎢⎢0⎢⎣0292727-29-2754-2729-27275601000000000-2954272-272727-29-81108-8300100000000⎡0⎢⎢⎢⎢ 0⎢⎢ 1⎢⎢ 0⎢⎢⎢-2⎢F 1 = ⎢⎢ 0⎢⎢3⎢0⎢⎢ 0⎢⎢⎢0⎢⎢⎢⎢ 0⎢⎣ 1Прил.
130-81-542454-81-5430108-135845500-55027-27550-275562-27-27-7127-18-183527-6353000100000000000100000000000100000000000100000010-10000100-110-1-1001001⎤⎥0 ⎥⎥⎥-1 ⎥⎥-1 ⎥⎥⎥2 ⎥⎥⎥0 ⎥⎥, d 1 = 4⎥0 ⎥⎥ 31 ⎥⎥⎥0 ⎥⎥⎥0 ⎥⎥⎥0 ⎥⎦-1011-200000001-101100000-561088129-818127-56-162189-8300-10100000056-81-54-2954-54-2756108-1628327 ⎤⎥-27 ⎥⎥⎥-27 ⎥⎥-27 ⎥⎥⎥27 ⎥⎥⎥-27 ⎥⎥,⎥0 ⎥⎥27 ⎥⎥⎥27 ⎥⎥⎥-54 ⎥⎥⎥0 ⎥⎦0⎤⎥0 ⎥⎥⎥-1 ⎥⎥0 ⎥⎥⎥2 ⎥⎥⎥0 ⎥⎥⎥0 ⎥⎥0 ⎥⎥⎥0 ⎥⎥⎥0 ⎥⎥⎥0 ⎥⎦----------------------------------------------------------------------------------Прил.
1Коды Maple-процедур⎡ 216⎢⎢⎢⎢-243⎢⎢-243⎢⎢-216⎢⎢⎢ 243⎢B 1 = ⎢⎢-297⎢⎢4⎢ -27⎢⎢ 135⎢⎢⎢ 243⎢⎢⎢⎢-432⎢⎣ 54486-891-648-243648-648-2434861296-1620729297-459-297-189297-243-108297675-918486⎡1⎢⎢⎢⎢0⎢⎢0⎢⎢0⎢⎢⎢0⎢BGJ 1 = ⎢⎢0⎢⎢4⎢0⎢⎢0⎢⎢⎢0⎢⎢⎢⎢0⎢⎣0-108-81-8113581-18954-10881-54-16201000000000⎡0⎢⎢⎢⎢-1⎢⎢ 1⎢⎢ 0⎢⎢⎢-1⎢F 1 = ⎢⎢-1⎢⎢4⎢0⎢⎢ 0⎢⎢⎢1⎢⎢⎢⎢ 0⎢⎣ 0108-189-108-54108-81-54108297-378243001000000000010-100001000010000000-108270189-27-189243135-108-378459-243000010000000010-20000010000010000010-1-12001000-189002160-10854-1890108-16200-112000000-1011-2000000561-2438181270-812781-162-81216-21601-101100000189-351-270-135270-243-54189540-62124300-101000000-189270189135-18916254-189-378540-2430⎤⎥0 ⎥⎥⎥-1 ⎥⎥0 ⎥⎥⎥2 ⎥⎥⎥0 ⎥⎥⎥0 ⎥⎥0 ⎥⎥⎥0 ⎥⎥⎥0 ⎥⎥⎥0 ⎥⎦0⎤⎥0 ⎥⎥⎥1 ⎥⎥-1 ⎥⎥⎥-2 ⎥⎥⎥0 ⎥⎥, d 1 = 5⎥1 ⎥⎥ 40 ⎥⎥⎥0 ⎥⎥⎥0 ⎥⎥⎥0 ⎥⎦---------------------------------------------------------------------------------------------------------------------------------------------------------------------81 ⎤⎥81 ⎥⎥⎥81 ⎥⎥81 ⎥⎥⎥-81 ⎥⎥⎥81 ⎥⎥,⎥0 ⎥⎥-81 ⎥⎥⎥-81 ⎥⎥⎥162 ⎥⎥⎥0 ⎥⎦562Коды Maple-процедурПрил.
1l2 = 3⎡ 6⎢⎢⎢⎢ 12⎢⎢ 12⎢⎢ 1⎢⎢⎢-12⎢B 2 = ⎢⎢ 13⎢⎢1⎢ -6⎢⎢ 6⎢⎢⎢-12⎢⎢⎢⎢ 23⎢⎣ 13-4318-14-82818-4-3439-22-3144-7-11210-3-1621-16⎡1⎢⎢⎢⎢0⎢⎢0⎢⎢0⎢⎢⎢0⎢BGJ 2 = ⎢⎢0⎢⎢1⎢0⎢⎢0⎢⎢⎢0⎢⎢⎢⎢0⎢⎣0010000000005450-55-55-481000100000000⎡0⎢⎢⎢⎢ 1⎢⎢ 1⎢⎢-2⎢⎢⎢-1⎢F 2 = ⎢⎢ 3⎢⎢1⎢2⎢⎢ 0⎢⎢⎢0⎢⎢⎢⎢ 1⎢⎣ 0-15-1-4445-1-67-900010000000000-101101001-8-171-7-819-990000100000000000100000501-3-11-250071-4-4-34-4114-8-1-1125-4-5115-1-1317-600000010000-1-1-141-4-3000000010-1-100003-8-222-7-539-1080-1-121-3-200001⎤⎥-4 ⎥⎥⎥-3 ⎥⎥-1 ⎥⎥⎥3 ⎥⎥⎥-4 ⎥⎥,⎥0 ⎥⎥1 ⎥⎥⎥4 ⎥⎥⎥-7 ⎥⎥⎥1 ⎥⎦0⎤⎥0 ⎥⎥⎥0 ⎥⎥0 ⎥⎥⎥0 ⎥⎥⎥0 ⎥⎥⎥0 ⎥⎥1 ⎥⎥⎥0 ⎥⎥⎥0 ⎥⎥⎥0 ⎥⎦1⎤⎥1 ⎥⎥⎥1 ⎥⎥-4 ⎥⎥⎥-1 ⎥⎥⎥4 ⎥⎥, d 2 = 3⎥3 ⎥⎥ 11 ⎥⎥⎥0 ⎥⎥⎥0 ⎥⎥⎥0 ⎥⎦----------------------------------------------------------------------------------Прил. 1Коды Maple-процедур⎡ 52⎢⎢⎢⎢ 48⎢⎢ 45⎢⎢-26⎢⎢⎢-45⎢B 2 = ⎢⎢ 49⎢⎢2⎢-26⎢⎢ 52⎢⎢⎢-48⎢⎢⎢⎢ 92⎢⎣ 78989-6-72689639-8983-54⎡⎢ 1⎢⎢⎢ 0⎢⎢⎢⎢⎢ 0⎢⎢⎢⎢⎢⎢ 0⎢⎢⎢BGJ 2 = ⎢⎢ 0⎢2⎢⎢⎢⎢ 0⎢⎢⎢⎢ 0⎢⎢⎢ 0⎢⎢⎢⎢ 0⎢⎢ 0⎢0⎣241-6-381541362-4144-43271721-9-2117-1827-173845-113-12-17211318-1-1310-282-21925-9-21-27221-122900000100000100000100000100000100000000000000000000000001616-7-61-916-17250-517-7171417717-201700000563-12-16-15415-178-1216-30-20-1-2174172617-417-817000009376-27-637189-3743-90517717317-717317000004-22314-3-22-18422-19220-717-317617317-111700000-4 ⎤⎥-15 ⎥⎥⎥-9 ⎥⎥4 ⎥⎥⎥9 ⎥⎥⎥-15 ⎥⎥,⎥0 ⎥⎥-4 ⎥⎥⎥15 ⎥⎥⎥-24 ⎥⎥⎥-4 ⎥⎦0 ⎤⎥-4 ⎥⎥17 ⎥⎥⎥-9 ⎥⎥⎥17 ⎥⎥1 ⎥⎥⎥17 ⎥⎥⎥9 ⎥⎥17 ⎥⎥⎥-16 ⎥⎥17 ⎥⎥⎥0 ⎥⎥⎥0 ⎥⎥⎥0 ⎥⎥0 ⎥⎥⎥0 ⎥⎦564Коды Maple-процедур⎡⎢ 0⎢4⎢⎢⎢⎢17⎢9⎢⎢⎢⎢17⎢⎢ -1⎢⎢⎢17⎢⎢-9F 2 = ⎢⎢17⎢2⎢⎢⎢⎢16⎢⎢17⎢⎢ 0⎢⎢⎢ 0⎢⎢⎢⎢ 0⎢⎢ 0⎢1⎣0717317-617-3171117000101217-417-2617417817010000-517-717-317717-31700100Прил.
10 ⎤⎥5 ⎥⎥17 ⎥⎥⎥7 ⎥⎥⎥17 ⎥⎥-14 ⎥⎥⎥17 ⎥⎥⎥-7 ⎥⎥17 ⎥⎥, d 22 = 5⎥20 ⎥⎥17 ⎥⎥⎥1 ⎥⎥⎥0 ⎥⎥⎥0 ⎥⎥0 ⎥⎥⎥0 ⎥⎦---------------------------------------------------------------------------------⎡ 273⎢⎢⎢⎢ 189⎢⎢ 162⎢⎢-192⎢⎢⎢-162⎢B 2 = ⎢⎢ 189⎢⎢3⎢ -81⎢⎢ 273⎢⎢⎢-189⎢⎢⎢⎢ 351⎢⎣ 35447261-81-2368126118947-261180-14214126-54-1228112610814-12699-1211377281-83-8172-54137-72153191-1136-54-43813654-11-369-9221-545460-54-54-812154010264927-37-279-2764-93691-73-63-544654-6327-7363-117-100521170-10601175452-117117-211-632743-27-63-541163-3665-36 ⎤⎥-54 ⎥⎥⎥-27 ⎥⎥36 ⎥⎥⎥27 ⎥⎥⎥-54 ⎥⎥,⎥0 ⎥⎥-36 ⎥⎥⎥54 ⎥⎥⎥-81 ⎥⎥⎥-36 ⎥⎦Прил.