ВУЗ:
Составители:
Рубрика:
Прил. 1 Коды Maple-процедур 577
if not Equal(SubMatrix(B,k..n,k..n),ZeroMatrix(n-k+1)) then
# Если юго-восточный блок
# (по отношению к данной диагональной позиции)
# ненулевой, то - работаем...
if Equal(Diagonal(SubMatrix(B,k..n,k..n)),ZeroVector(n-k+1))
then
# Если диагональ юго-восточного блока нулевая,
# то применяем второй прием Лагранжа.
if B[k,k+1]=0 then
# Если в позиции (k,k+1) находится нуль,
# то предварительно переставляем в эту позицию
# ненулевой (внедиагональный) элемент.
signal:=false;
# Сигнал для фиксации обнаружения ненулевого элемента,
# с выходом из цикла поиска.
for j from k+2 to n do
if B[k,j]<>0 then
# Ненулевой элемент обнаружен
# в текущей строке.
signal:=true;
break;
fi;
od;
if signal then
U:=ColumnOperation(E,[k+1,j],inplace=false);
# Перестановка ненулевого элемента
# в нужную позицию.
print(`U=`,U);
T:=T.U;
# Накопление элементарных преобразований
# в матрице перехода.
B:=Transpose(U).B.U;
# Пересчет матрицы квадратичной формы.
print(`B=`,B);
else
for j from k+2 to n do
if B[k+1,j]<>0 then
# Ненулевой элемент обнаружен
# в строке, следующей за текущей.
signal:=true;
break:
fi;
od;
Прил. 1 Коды Maple-процедур 577
if not Equal(SubMatrix(B,k..n,k..n),ZeroMatrix(n-k+1)) then
# Если юго-восточный блок
# (по отношению к данной диагональной позиции)
# ненулевой, то - работаем...
if Equal(Diagonal(SubMatrix(B,k..n,k..n)),ZeroVector(n-k+1))
then
# Если диагональ юго-восточного блока нулевая,
# то применяем второй прием Лагранжа.
if B[k,k+1]=0 then
# Если в позиции (k,k+1) находится нуль,
# то предварительно переставляем в эту позицию
# ненулевой (внедиагональный) элемент.
signal:=false;
# Сигнал для фиксации обнаружения ненулевого элемента,
# с выходом из цикла поиска.
for j from k+2 to n do
if B[k,j]<>0 then
# Ненулевой элемент обнаружен
# в текущей строке.
signal:=true;
break;
fi;
od;
if signal then
U:=ColumnOperation(E,[k+1,j],inplace=false);
# Перестановка ненулевого элемента
# в нужную позицию.
print(`U=`,U);
T:=T.U;
# Накопление элементарных преобразований
# в матрице перехода.
B:=Transpose(U).B.U;
# Пересчет матрицы квадратичной формы.
print(`B=`,B);
else
for j from k+2 to n do
if B[k+1,j]<>0 then
# Ненулевой элемент обнаружен
# в строке, следующей за текущей.
signal:=true;
break:
fi;
od;
Страницы
- « первая
- ‹ предыдущая
- …
- 575
- 576
- 577
- 578
- 579
- …
- следующая ›
- последняя »
