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

UptoLike

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

Прил. 1 Коды Maple-процедур 533
sys:=GenerateEquations(A,[seq(x[k],k=1..n)]);
# Однородная с.л.у., задающая данное подпространство.
RETURN(A,sys);
# Возвращаются:
# 1) матрица A, задающая данное подпространство
# первым способом (как множество решений
# однородной с.л.у. Ax=0);
# 2) самa этa системa (в виде списка уравнений).
end proc;
> BiS[algorithm_4]:=proc(G1::Matrix,G2::Matrix)
# Продолжение базиса в линейном подпространстве W1
# (в пространстве V)
# до базиса в (более широком) подпространстве W2;
# отыскание базиса в некотором
# прямом дополнении к W1 в W2.
# Подпространства W1 и W2 заданы вторым способом
# (как линейные оболочки
# столбцов матриц G1 и G2).
local n,n1,n2,B1,B2,B3,C1,d1,d2,d3;
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);
B3:=algorithm_2(<<B1|B2>>)[1];d3:=ColumnDimension(B3);
# Процедура algorithm_2
применяется
# к данным матрицам и к их конкатенации.
if d2<>d3 then
ERROR(`W1 не является подпространством в W2!`);
# Отработка особого случая,
# когда подпространство W1, заданное матрицей G1,
# не содержится в подпространстве W2,
# заданном матрицей G2.
Прил. 1                   Коды Maple-процедур            533

sys:=GenerateEquations(A,[seq(x[k],k=1..n)]);
# Однородная с.л.у., задающая данное подпространство.

RETURN(A,sys);
# Возвращаются:
# 1) матрица A, задающая данное подпространство
#    первым способом (как множество решений
#    однородной с.л.у. Ax=0);
# 2) самa этa системa (в виде списка уравнений).

end proc;



>   BiS[algorithm_4]:=proc(G1::Matrix,G2::Matrix)
#   Продолжение базиса в линейном подпространстве W1
#   (в пространстве V)
#   до базиса в (более широком) подпространстве W2;
#   отыскание базиса в некотором
#   прямом дополнении к W1 в W2.
#   Подпространства W1 и W2 заданы вторым способом
#   (как линейные оболочки
#   столбцов матриц G1 и G2).

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

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);
B3:=algorithm_2(<>)[1];d3:=ColumnDimension(B3);
# Процедура algorithm_2 применяется
# к данным матрицам и к их конкатенации.

if d2<>d3 then
  ERROR(`W1 не является подпространством в W2!`);
  # Отработка особого случая,
  # когда подпространство W1, заданное матрицей G1,
  # не содержится в подпространстве W2,
  # заданном матрицей G2.