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

UptoLike

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

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

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

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

              fi;
            fi;
          fi;

          U:=Matrix(n,E);U[k..k+1,k..k+1]:=V;
          # Матрица преобразования,
          # реализующего второй прием Лагранжа.

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

    elif B[k,k]=0 then
    # Если диагональ юго-восточного блока ненулевая,
    # но начальный ее элемент - нулевой,
    # то проводим подготовку к применению
    # первого приема Лагранжа.

          for i from k+1 to n do
            if B[i,i]<>0 then
            # Обнаружен ненулевой диагональный элемент.
              break;
            fi;
          od;

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