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

UptoLike

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

584 Коды Maple-процедур Прил. 1
if s=n then
str:=`Форма положительно определена.`;
elif s<n and s>0 and t=0 then
str:=`Форма положительно полуопределена.`;
elif s<n and s>0 and t>0 then
if r=n then
str:=`Форма невырожденна и знакопеременна.`;
else
str:=`Форма вырождена и знакопеременна.`;
fi;
elif s=0 and t=0 then
str:=`Форма нулевая.`;
elif s=o and t<n then
str:=`Форма отрицательно полуопределена.`;
else
str:=`Форма отрицательно определена.`;
fi;
print(str);
new_ord:=[pos[],neg[],zer[]];
# Переупорядочивание переменных:
# сначала должны идти переменные,
# которым отвечают положительные
# диагональные элементы,
# потом - те, которым отвечают отрицательные,
# и, наконец, - те, которым отвечают нулевые
# диагональные элементы.
T1:=Matrix(n,E);
# Заготовка для матрицы
# перестановочного перехода.
# Далее следует ее заполнение:
# столбцы единичной матрицы
# располагаются в соответствии
# с новым порядком.
for j from 1 to n do
T1[1..n,j..j]:=E[1..n,new_ord[j]..new_ord[j]];
od;
B1:=Transpose(T1).A.T1;
# Вычисление матрицы,
# отвечающей диагональному виду,
# с правильно упорядочненными по знаку
# диагональными элементами.
print(`T1=`,T1,`B1=`,B1);
T2:=Matrix(n,E):
# Заготовка для матрицы
# перехода к нормальному виду.
584                       Коды Maple-процедур      Прил. 1

if s=n then
  str:=`Форма положительно определена.`;
elif s0 and t=0 then
  str:=`Форма положительно полуопределена.`;
elif s0 and t>0 then
  if r=n then
    str:=`Форма невырожденна и знакопеременна.`;
  else
    str:=`Форма вырождена и знакопеременна.`;
  fi;
elif s=0 and t=0 then
  str:=`Форма нулевая.`;
elif s=o and t