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

UptoLike

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

532 Коды Maple-процедур Прил. 1
BG:=SubMatrix(G,1..n,pr);
# Подматрица матрицы G,
# составленная из базисных (главных) столбцов.
fi;
RETURN(BG,rG,GG,pr);
# Возвращаются:
# 1) базис подпространства W
# в виде подматрицы BG из базисных столбцов;
# 2) размерность dim(W), равная
# рангу rG данной матрицы;
# 3) ступенчатый вид GG данной матрицы;
# 4) список pr номеров главных столбцов.
end proc;
> BiS[algorithm_3]:=proc(G::Matrix)
# Переход от второго способа
# задания линейного подпространства W
# (в виде линейной оболочки столбцов матрицы G)
# к первому (в виде подпространства решений
# однородной с.л.у. Ax=0).
local n,s,k,A,ZG,sys;
n:=RowDimension(G);s:=ColumnDimension(G);
# Размеры данной матрицы; n=dim(V).
ZG:=ZeroMatrix(n,s);
# Нулевая матрица.
if Equal(G,ZG) then
# Особый случай: G=O. Выдается единичная матрица,
# A=E и с.л.у. [x[j]=0; j=1..n]
# (все неизвестные равны нулю).
A:=IdentityMatrix(n);
else
A:=Transpose(algorithm_1(Transpose(G))[1]);
# Данная матрица G транспонируется,
# затем, с помощью процедуры algorithm_1,
# решается соответствующая однородная с.л.у.,
# причем из возвращаемых данных берется только
# первый член последовательности -
# фундаментальная матрица,
# которая затем транспонируется.
fi;
532                         Коды Maple-процедур       Прил. 1

    BG:=SubMatrix(G,1..n,pr);
    # Подматрица матрицы G,
    # составленная из базисных (главных) столбцов.

fi;

RETURN(BG,rG,GG,pr);
# Возвращаются:
# 1) базис подпространства W
#    в виде подматрицы BG из базисных столбцов;
# 2) размерность dim(W), равная
#    рангу rG данной матрицы;
# 3) ступенчатый вид GG данной матрицы;
# 4) список pr номеров главных столбцов.

end proc;



>   BiS[algorithm_3]:=proc(G::Matrix)
#   Переход от второго способа
#   задания линейного подпространства W
#   (в виде линейной оболочки столбцов матрицы G)
#   к первому (в виде подпространства решений
#   однородной с.л.у. Ax=0).

    local n,s,k,A,ZG,sys;

n:=RowDimension(G);s:=ColumnDimension(G);
# Размеры данной матрицы; n=dim(V).

ZG:=ZeroMatrix(n,s);
# Нулевая матрица.

if Equal(G,ZG) then
  # Особый случай: G=O. Выдается единичная матрица,
  # A=E и с.л.у. [x[j]=0; j=1..n]
  # (все неизвестные равны нулю).
  A:=IdentityMatrix(n);

else

    A:=Transpose(algorithm_1(Transpose(G))[1]);
    # Данная матрица G транспонируется,
    # затем, с помощью процедуры algorithm_1,
    # решается соответствующая однородная с.л.у.,
    # причем из возвращаемых данных берется только
    # первый член последовательности -
    # фундаментальная матрица,
    # которая затем транспонируется.

fi;