ВУЗ:
Составители:
Рубрика:
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);
Страницы
- « первая
- ‹ предыдущая
- …
- 574
- 575
- 576
- 577
- 578
- …
- следующая ›
- последняя »