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

UptoLike

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

Прил. 1 Коды Maple-процедур 549
blist:=[blist[],v];
od;
# Формируем матрицу H[i][k], отвечающую
# ступеньке уровня k=l[i]
# (т. е. содержащую базис в D[i][k])
# как подматрицу в исходной конкатенации M[i][k],
# содержащую столбцы, номера которых
# входят в список blist.
# Формируем также матрицу G[i][k], отвечающую
# всему рассматриваемому уровню
# (т. е. содержащую базис в C[i][k]).
# (Для верхнего уровня эти матрицы совпадают.)
H[i][k]:=SubMatrix(M[i][k],1..n,blist);
G[i][k]:=H[i][k];
# Выдаем
на печать полученные результаты.
print(evaln(H[i][k])=H[i][k],evaln(G[i][k])=G[i][k]);
print(str);
elif k<l[i] and k>1 then
# Определение векторов на этажах,
# начиная с предпоследнего и заканчивая вторым.
if q[i][k]=0 then
# Отработка случая, когда на k-м уровне
# отсутствует ступенька.
# В этом случае матрица H[i][k],
# отвечающая ступеньке, - пуста,
# а матрица G[i][k], отвечающая всему уровню,
# находится умножением слева на матрицу B[i]
# матрицы G[i][k+1], отвечаюшей
# предыдущему (расположенному выше) уровню.
G[i][k]:=B[i][1].G[i][k+1];
# Выдаем на печать полученные результаты.
print(evaln(H[i][k])=[],evaln(G[i][k])=G[i][k]);
print(str);
else
# Случай, когда на k-м уровне есть ступенька.
# Формирование "тройной" конкатенации M[i][k]:
# в левой зоне - матрица, содержащая
# (необработанный) базис в ядре N[i][k-1],
# в центральной зоне - матрица, содержащая
# образ B[i].G[i][k+1] базиса
# в подпространстве C[i][k+1]
# при отображении, заданном матрицей B[i],
# в правой зоне - матрица, содержащая
# (необработанный) базис в ядре N[i]{k].
M[i][k]:=<F[i][k-1]|B[i][1].G[i][k+1]|F[i][k]>;
Прил. 1                      Коды Maple-процедур                   549

             blist:=[blist[],v];
           od;

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

           # (Для верхнего уровня эти матрицы совпадают.)
           H[i][k]:=SubMatrix(M[i][k],1..n,blist);
           G[i][k]:=H[i][k];

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

          elif k1 then
            # Определение векторов на этажах,
            # начиная с предпоследнего и заканчивая вторым.

           if q[i][k]=0 then
             # Отработка случая, когда на k-м уровне
             # отсутствует ступенька.
             # В этом случае матрица H[i][k],
             # отвечающая ступеньке, - пуста,
             # а матрица G[i][k], отвечающая всему уровню,
             # находится умножением слева на матрицу B[i]
             # матрицы G[i][k+1], отвечаюшей
             # предыдущему (расположенному выше) уровню.
             G[i][k]:=B[i][1].G[i][k+1];

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

           else
             # Случай, когда на k-м уровне есть ступенька.
             # Формирование "тройной" конкатенации M[i][k]:
             # в левой зоне - матрица, содержащая
             # (необработанный) базис в ядре N[i][k-1],
             # в центральной зоне - матрица, содержащая
             # образ B[i].G[i][k+1] базиса
             # в подпространстве C[i][k+1]
             # при отображении, заданном матрицей B[i],
             # в правой зоне - матрица, содержащая
             # (необработанный) базис в ядре N[i]{k].
             M[i][k]:=;