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

UptoLike

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

578 Коды Maple-процедур Прил. 1
if signal then
U:=ColumnOperation(E,[k,k+1],inplace=false);
# Перестановка ненулевого элемента
# в нужную позицию (первый этап).
print(`U=`,U);
T:=T.U;
# Накопление элементарных преобразований
# в матрице перехода.
B:=Transpose(U).B.U;
# Пересчет матрицы квадратичной формы.
print(`B=`,B);
U:=ColumnOperation(E,[k+1,j],inplace=false);
# Перестановка ненулевого элемента
# в нужную позицию (второй этап).
print(`U=`,U);
T:=T.U;
# Накопление элементарных преобразований
# в матрице перехода.
B:=Transpose(U).B.U;
# Пересчет матрицы квадратичной формы.
print(`B=`,B);
else
for i from k+2 to n-1 do
for j from i+1 to n do
if B[i,j]<>0 then
# Ненулевой элемент обнаружен
# ниже строки, следующей за текущей.
signal:=true;
break;
fi;
od;
if signal then
break;
fi;
od;
U:=ColumnOperation(E,[k+1,j],inplace=false);
# Перестановка ненулевого элемента
# в нужную позицию (первый этап).
print(`U=`,U);
T:=T.U;
# Накопление элементарных преобразований
# в матрице перехода.
B:=Transpose(U).B.U;
# Пересчет матрицы квадратичной формы.
print(`B=`,B);
578                    Коды Maple-процедур            Прил. 1

      if signal then

       U:=ColumnOperation(E,[k,k+1],inplace=false);
       # Перестановка ненулевого элемента
       # в нужную позицию (первый этап).
       print(`U=`,U);
       T:=T.U;
       # Накопление элементарных преобразований
       # в матрице перехода.
       B:=Transpose(U).B.U;
       # Пересчет матрицы квадратичной формы.
       print(`B=`,B);

       U:=ColumnOperation(E,[k+1,j],inplace=false);
       # Перестановка ненулевого элемента
       # в нужную позицию (второй этап).
       print(`U=`,U);
       T:=T.U;
       # Накопление элементарных преобразований
       # в матрице перехода.
       B:=Transpose(U).B.U;
       # Пересчет матрицы квадратичной формы.
       print(`B=`,B);

      else

       for i from k+2 to n-1 do
         for j from i+1 to n do
           if B[i,j]<>0 then
           # Ненулевой элемент обнаружен
           # ниже строки, следующей за текущей.
             signal:=true;
             break;
           fi;
         od;
         if signal then
           break;
         fi;
       od;

       U:=ColumnOperation(E,[k+1,j],inplace=false);
       # Перестановка ненулевого элемента
       # в нужную позицию (первый этап).

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