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

UptoLike

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

Прил. 1 Коды Maple-процедур 535
local n,n1,n2,B1,B2,B3,C1,C2,d1,d2,d3,d0;
n1:=RowDimension(G1); n2:=RowDimension(G2);
if n1<>n2 then
ERROR(`Вводимые матрицы должны иметь
равное количество строк!`);
else
n:=n1;
fi;
# Контроль совпадения размерностей по строкам
# для данных матриц G1 и G2.
# Размерность всего пространства: dim(V)=n.
B1:=algorithm_2(G1)[1];d1:=ColumnDimension(B1);
B2:=algorithm_2(G2)[1];d2:=ColumnDimension(B2);
# Процедура algorithm_2 применяется
# к каждой из данных матриц.
# Определены (и записаны в матрицы B1 и B2)
# базисы в W1 и W2;
# вычислены размерности d1 и d2.
B3[1]:=algorithm_2(<<B1|B2>>)[1];
d3:=ColumnDimension(B3[1]);
# Процедура algorithm_2 применяется
# к конкатенации матриц B1 и B2.
# Определен (и записан в матрицу B3[1]),
# базис в сумме W3, продолжающий базис в W1,
# содержащийся в матрице B1.
d0:=d1+d2-d3;
# Размерность пересечения данных подпространств.
B3[2]:=algorithm_2(<<B2|B1>>)[1];
# Процедура algorithm_2 применяется
# к конкатенации матриц B2 и B1
# (в противоположном порядке).
# Определен (и записан в матрицу B3[2]),
# другой базис в сумме W3,
# продолжающий базис в W2,
# содержащийся в матрице B2.
if d1=d3 then
C1:=Matrix(n,0);
# Отработка особого случая: d1=d3
# (и, следовательно, W1=W3; W2<=W1;
# прямое дополнение к W1 в W3 тривиально;
# матрица С1 пуста).
else
Прил. 1                 Коды Maple-процедур        535

  local n,n1,n2,B1,B2,B3,C1,C2,d1,d2,d3,d0;

n1:=RowDimension(G1); n2:=RowDimension(G2);

if n1<>n2 then
  ERROR(`Вводимые матрицы должны иметь
         равное количество строк!`);
else
  n:=n1;
fi;
# Контроль совпадения размерностей по строкам
# для данных матриц G1 и G2.
# Размерность всего пространства: dim(V)=n.

B1:=algorithm_2(G1)[1];d1:=ColumnDimension(B1);
B2:=algorithm_2(G2)[1];d2:=ColumnDimension(B2);
# Процедура algorithm_2 применяется
# к каждой из данных матриц.
# Определены (и записаны в матрицы B1 и B2)
# базисы в W1 и W2;
# вычислены размерности d1 и d2.

B3[1]:=algorithm_2(<>)[1];
d3:=ColumnDimension(B3[1]);
# Процедура algorithm_2 применяется
# к конкатенации матриц B1 и B2.
# Определен (и записан в матрицу B3[1]),
# базис в сумме W3, продолжающий базис в W1,
# содержащийся в матрице B1.

d0:=d1+d2-d3;
# Размерность пересечения данных подпространств.

B3[2]:=algorithm_2(<>)[1];
# Процедура algorithm_2 применяется
# к конкатенации матриц B2 и B1
# (в противоположном порядке).
# Определен (и записан в матрицу B3[2]),
# другой базис в сумме W3,
# продолжающий базис в W2,
# содержащийся в матрице B2.

if d1=d3 then

  C1:=Matrix(n,0);
  # Отработка особого случая: d1=d3
  # (и, следовательно, W1=W3; W2<=W1;
  # прямое дополнение к W1 в W3 тривиально;
  # матрица С1 пуста).

else