ВУЗ:
Составители:
Рубрика:
Прил. 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
- …
- следующая ›
- последняя »