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

UptoLike

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

Прил. 1 Коды Maple-процедур 531
RETURN(FA,n-rA,JA,sys,fr);
# Возвращаются:
# 1) базис подпространства W, заключенный в
# фундаментальной матрице FA
# для однородной с.л.у. Ax=0;
# 2) размерность dim(W)=n-rA,
# где rA - ранг данной матрицы;
# 3) вид Жордана-Гаусса JA для A
# (с удаленными нулевыми строками);
# 4) однородная с.л.у. sys, соответствующая JA
# ("экономно" задающая W);
# 5) список fr номеров свободных неизвестных.
end proc;
> BiS[algorithm_2]:=proc(G::Matrix)
# Построение базиса в линейном подпространстве W,
# заданном вторым способом
# (как линейная оболочка
# столбцов матрицы G).
local n,s,i,j,k,GG,rG,pr,ZG,BG;
n:=RowDimension(G);s:=ColumnDimension(G);
# Размеры данной матрицы; n=dim(V).
ZG:=ZeroMatrix(n,s);
# Нулевая матрица.
if Equal(G,ZG) then
# Особый случай: G=O и, следовательно, W=O.
# Выдается пустой базис.
BG:=Matrix(n,0);GG:=ZG;rG:=0;pr:=[];
else
GG:=GaussianElimination(G);rG:=Rank(GG);
# Ступенчатый вид и ранг для матрицы G.
pr:=[seq(0,k=1..rG)];
# Заготовка для списка номеров главных столбцов.
for i from 1 to rG do
j:=1;
while GG[i,j]=0 do
j:=j+1;
od;
pr[i]:=j;
od;
# Сформирован список номеров главных столбцов.
Прил. 1                   Коды Maple-процедур          531

RETURN(FA,n-rA,JA,sys,fr);
# Возвращаются:
# 1) базис подпространства W, заключенный в
#    фундаментальной матрице FA
#    для однородной с.л.у. Ax=0;
# 2) размерность dim(W)=n-rA,
#    где rA - ранг данной матрицы;
# 3) вид Жордана-Гаусса JA для A
#    (с удаленными нулевыми строками);
# 4) однородная с.л.у. sys, соответствующая JA
#    ("экономно" задающая W);
# 5) список fr номеров свободных неизвестных.

end proc;



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

    local n,s,i,j,k,GG,rG,pr,ZG,BG;

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

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

if Equal(G,ZG) then
  # Особый случай: G=O и, следовательно, W=O.
  # Выдается пустой базис.
  BG:=Matrix(n,0);GG:=ZG;rG:=0;pr:=[];

else
  GG:=GaussianElimination(G);rG:=Rank(GG);
  # Ступенчатый вид и ранг для матрицы G.

    pr:=[seq(0,k=1..rG)];
    # Заготовка для списка номеров главных столбцов.

    for i from 1 to rG do
      j:=1;
      while GG[i,j]=0 do
        j:=j+1;
      od;
      pr[i]:=j;
    od;
    # Сформирован список номеров главных столбцов.