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

UptoLike

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

580 Коды Maple-процедур Прил. 1
U:=Matrix(n,E);
# Заготовка для матрицы преобразования,
# реализующего первый прием Лагранжа;
# далее она заполняется.
for j from k+1 to n do
U[k,j]:=-B[k,j]/B[k,k];
od;
if not Equal(U,E) then
# Если преобразование не тождественное,
# то применяем его к матрице квадратичной формы,
# производим "накопление"
# в результирующей матрице перехода
# и выдаем промежуточные результаты на печать.
print(`U=`,U);
T:=T.U;
# Накопление элементарных преобразований
# в матрице перехода.
B:=Transpose(U).B.U;
# Пересчет матрицы квадратичной формы.
print(`B=`,B);
fi;
fi;
od;
RETURN(B,T);
# Возвращаются: диагональная матрица,
# задающая диагональный вид данной квадратичной формы,
# и матрица перехода к диагональному виду.
end proc;
> Quadro[Jacob]:=proc(A::'Matrix'(symmetric))
local B,n,i,j,k,Delta,mu,T,AT,sys,sol;
# Процедура Jacob приведения
# к конгруэнтному диагональному виду
# симметрической квадратной матрицы
# (отвечающей квадратичной форме),
# в предположении выполнения условия Якоби.
n:=RowDimension(A);
# Размер матрицы.
Delta[0]:=1;
# Угловой минор нулевого порядка.
580                       Коды Maple-процедур            Прил. 1

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

      for j from k+1 to n do
        U[k,j]:=-B[k,j]/B[k,k];
      od;

      if not Equal(U,E) then
      # Если преобразование не тождественное,
      # то применяем его к матрице квадратичной формы,
      # производим "накопление"
      # в результирующей матрице перехода
      # и выдаем промежуточные результаты на печать.

       print(`U=`,U);
       T:=T.U;
       # Накопление элементарных преобразований
       # в матрице перехода.
       B:=Transpose(U).B.U;
       # Пересчет матрицы квадратичной формы.
       print(`B=`,B);

    fi;
  fi;
od;

RETURN(B,T);
# Возвращаются: диагональная матрица,
# задающая диагональный вид данной квадратичной формы,
# и матрица перехода к диагональному виду.

end proc;



> Quadro[Jacob]:=proc(A::'Matrix'(symmetric))
   local B,n,i,j,k,Delta,mu,T,AT,sys,sol;

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

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

Delta[0]:=1;
# Угловой минор нулевого порядка.