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

UptoLike

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

552 Коды Maple-процедур Прил. 1
# Изначально этот список пуст.
blist:=[];
# Номер первого столбца во второй зоне
# матрицы-конкатенации M[i][1].
v:=p[i][k+1]+1;
# Цикл по номеру строки
# в ступенчатой матрице MG[i][1],
# начиная с первой строки, являющейся
# чисто нулевой в первой зоне конкатенации,
# и заканчивая последней ненулевой строкой
# во всей матрице.
for u from p[i][k+1]+1 to d[i][k] do
# Просматриваем (слева направо) строку с номером u,
# пока не встретим первый ненулевой элемент.
# (При этом работает счетчик столбцов.)
while MG[i][k][u,v]=0 do
v:=v+1;
od;
# Встретив в строке с номером u,
# в столбце с номером v
# первый ненулевой элемент,
# мы добавляем номер v к списку blist
# и переходим к следующей строке.
blist:=[blist[],v];
od;
# Формируем матрицу H[i][1], отвечающую
# ступеньке уровня k=1
# (т. е. содержащую базис в D[i][1])
# как подматрицу в исходной конкатенации M[i][1],
# содержащую столбцы, номера которых
# входят в список blist.
H[i][k]:=SubMatrix(M[i][k],1..n,blist);
# Формируем матрицу G[i][1], отвечающую
# всему первому уровню
# (т. е. содержащую базис в C[i][1]).
G[i][k]:=<B[i][1].G[i][k+1]|H[i][k]>;
# Выдаем на печать полученные результаты.
print(evaln(H[i][k])=H[i][k],evaln(G[i][k])=G[i][k]);
print(str);
fi;
fi;
# Завершение рассмотрения случаев 1) – 3)
# по расположению этажа.
552                     Коды Maple-процедур                  Прил. 1

         # Изначально этот список пуст.
         blist:=[];

         # Номер первого столбца во второй зоне
         # матрицы-конкатенации M[i][1].
         v:=p[i][k+1]+1;

         # Цикл по номеру строки
         # в ступенчатой матрице MG[i][1],
         # начиная с первой строки, являющейся
         # чисто нулевой в первой зоне конкатенации,
         # и заканчивая последней ненулевой строкой
         # во всей матрице.
         for u from p[i][k+1]+1 to d[i][k] do

           # Просматриваем (слева направо) строку с номером u,
           # пока не встретим первый ненулевой элемент.
           # (При этом работает счетчик столбцов.)
           while MG[i][k][u,v]=0 do
             v:=v+1;
           od;

           # Встретив в строке с номером u,
           # в столбце с номером v
           # первый ненулевой элемент,
           # мы добавляем номер v к списку blist
           # и переходим к следующей строке.
           blist:=[blist[],v];
         od;

         # Формируем матрицу H[i][1], отвечающую
         # ступеньке уровня k=1
         # (т. е. содержащую базис в D[i][1])
         # как подматрицу в исходной конкатенации M[i][1],
         # содержащую столбцы, номера которых
         # входят в список blist.
         H[i][k]:=SubMatrix(M[i][k],1..n,blist);

         # Формируем матрицу G[i][1], отвечающую
         # всему первому уровню
         # (т. е. содержащую базис в C[i][1]).
         G[i][k]:=;

         # Выдаем на печать полученные результаты.
         print(evaln(H[i][k])=H[i][k],evaln(G[i][k])=G[i][k]);
         print(str);
       fi;

      fi;
      # Завершение рассмотрения случаев 1) – 3)
      # по расположению этажа.