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

UptoLike

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

576 Коды Maple-процедур Прил. 1
3. Пакет процедур Quadro
(к ТР3 "Диагонализация
симметрических билинейных (квадратичных)
форм "; п. 39.1)
> restart;with(LinearAlgebra):
> # Пакет Quadro содержит три процедуры
# Lagr, Jacob, Signatura;
# обеспечивает работу с симметрическими билинейными
# (квадратичными) формами, заданными
# симметрическими квадратными матрицами.
# Реализованы алгоритмы диагонализации Лагранжа и Якоби
# (над любым числовым полем),
# а также алгоритм нормализации (над полем R).
> Quadro[Lagr]:=proc(A::'Matrix'(symmetric))
local B,T,E,n,i,j,k,signal,U,U1,V;
# Процедура Lagr, сценарного типа:
# симметрическая квадратная матрица
# (отвечающая квадратичной форме)
# приводится к конгруэнтному диагональному виду
# с помощью метода Лагранжа.
n:=RowDimension(A);
# Размер матрицы.
B:=Matrix(n,A);
# Рабочая копия матрицы.
E:=IdentityMatrix(n);
# Единичная матрица.
T:=Matrix(n,E);
# Заготовка для матрицы перехода
# к диагонализирующему базису.
V:=<<1,1>|<-1,1>>;
# Вспомогательная матрица (блок);
# используется при применении
# второго приема Лагранжа.
for k from 1 to n-1 do
# Цикл по номеру диагонального элемента.
print(`k=`||k);
576                        Коды Maple-процедур            Прил. 1



3. Пакет процедур Quadro
   (к ТР3 "Диагонализация
   симметрических билинейных (квадратичных)
   форм "; п. 39.1)


> restart;with(LinearAlgebra):

> # Пакет Quadro содержит три процедуры
# Lagr, Jacob, Signatura;
# обеспечивает работу с симметрическими билинейными
# (квадратичными) формами, заданными
# симметрическими квадратными матрицами.
# Реализованы алгоритмы диагонализации Лагранжа и Якоби
# (над любым числовым полем),
# а также алгоритм нормализации (над полем R).

> Quadro[Lagr]:=proc(A::'Matrix'(symmetric))
   local B,T,E,n,i,j,k,signal,U,U1,V;

#   Процедура Lagr, сценарного типа:
#   симметрическая квадратная матрица
#   (отвечающая квадратичной форме)
#   приводится к конгруэнтному диагональному виду
#   с помощью метода Лагранжа.


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

B:=Matrix(n,A);
# Рабочая копия матрицы.

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

T:=Matrix(n,E);
# Заготовка для матрицы перехода
# к диагонализирующему базису.

V:=<<1,1>|<-1,1>>;
# Вспомогательная матрица (блок);
# используется при применении
# второго приема Лагранжа.

for k from 1 to n-1 do
# Цикл по номеру диагонального элемента.

    print(`k=`||k);