Линейная алгебра. Теоремы и алгоритмы. Яцкин Н.И. - 539 стр.

UptoLike

Составители: 

Прил. 1 Коды Maple-процедур 539
2. Процедура-сценарий jrd
(к ТР2 "Жорданов базис для линейного эндоморфизма"; п. 28.5)
> restart;with(LinearAlgebra):
interface(rtablesize=infinity):
# Выбран интерфейс с возможностью вывода
# матриц произвольного размера.
> # MAPLE-сценарий:
# ПРИВЕДЕНИЕ К (ЧАСТИЧНОЙ) ЖОРДАНОВОЙ НОРМАЛЬНОЙ ФОРМЕ
# МАТРИЦЫ НАД ПОЛЕМ Q (ИЛИ НАД ПОЛЕМ Q[i])
> jrd:=proc(A::'Matrix'(square))
# Процедура применяется к квадратной матрице A.
# Работоспособна в случае рациональности ее элементов.
# (Отредактировав одну строку, можно получить версию,
# работающую над полем Q[i] гауссовых рациональных чисел.)
local n,E,i,j,k,u,v,
h,hf,hroots,s,lambda,m,ms,
exist_jbas,
B,BGJ,d,Nbas,F,l,
p,q,DIAGR,RIS,
jlist,num,
JS,J,
M,MG,blist,H,G,
GS,GSE,GSEG,
T,dt,str;
str:=`----------------------------------------------------------
------------------------`;
# Процедура названа "сценарием",
# поскольку по ходу работы
# на печать выводятся все существенные
# промежуточные результаты.
# В качестве "логического разделителя" этапов
# используется строка из дефисов.
# Размер матрицы.
n:=RowDimension(A);
print('n'=n);
# Единичная матрица.
E:=IdentityMatrix(n);
Прил. 1                    Коды Maple-процедур                    539



2. Процедура-сценарий jrd
   (к ТР2 "Жорданов базис для линейного эндоморфизма"; п. 28.5)


> restart;with(LinearAlgebra):
interface(rtablesize=infinity):
# Выбран интерфейс с возможностью вывода
# матриц произвольного размера.

> # MAPLE-сценарий:
 # ПРИВЕДЕНИЕ К (ЧАСТИЧНОЙ) ЖОРДАНОВОЙ НОРМАЛЬНОЙ ФОРМЕ
 # МАТРИЦЫ НАД ПОЛЕМ Q (ИЛИ НАД ПОЛЕМ Q[i])

> jrd:=proc(A::'Matrix'(square))

#   Процедура применяется к квадратной матрице A.
#   Работоспособна в случае рациональности ее элементов.
#   (Отредактировав одну строку, можно получить версию,
#   работающую над полем Q[i] гауссовых рациональных чисел.)

    local n,E,i,j,k,u,v,
          h,hf,hroots,s,lambda,m,ms,
          exist_jbas,
          B,BGJ,d,Nbas,F,l,
          p,q,DIAGR,RIS,
          jlist,num,
          JS,J,
          M,MG,blist,H,G,
          GS,GSE,GSEG,
          T,dt,str;

str:=`----------------------------------------------------------
------------------------`;

#   Процедура названа "сценарием",
#   поскольку по ходу работы
#   на печать выводятся все существенные
#   промежуточные результаты.

# В качестве "логического разделителя" этапов
# используется строка из дефисов.

# Размер матрицы.
n:=RowDimension(A);
print('n'=n);

# Единичная матрица.
E:=IdentityMatrix(n);