Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Система компьютерной алгебры GAP


Информационный Канал Subscribe.Ru Новый модный поиск - www.lycos.ru

Здравствуйте, уважаемые подписчики!!!

Направляем Вам 8-й выпуск рассылки "Система компьютерной алгебры GAP". Дополнительно
сообщаем, что уже в конце апреля периодичность рассылки восстановится на предыдущем
уровне - раз в 1-2 недели. Этот выпуск посвящен примеру, который скоро появится
на нашем сайте, и демонстрирует построение с помощью GAP таблицы умножения для
конечной группы подстановок

----------------------------------------------------------------------------

Построение таблицы умножения для конечной группы подстановок

В системе GAP имеется стандартная функция MultiplicationTable, которая для заданного
списка elms возвращает его таблицу умножения. Например, таким образом можно получить
таблицу умножения, в которой A[i][j] = k тогда и только тогда, когда
elms[i] * elms[j] = elms[k].

gap> G:=SymmetricGroup(3);
Sym( [ 1 .. 3 ] )
gap> elms:=AsList(G);
[ (), (2,3), (1,2), (1,2,3), (1,3,2), (1,3) ]
gap> A:=MultiplicationTable(elms);
[ [ 1, 2, 3, 4, 5, 6 ], [ 2, 1, 4, 3, 6, 5 ], [ 3, 5, 1, 6, 2, 4 ],
  [ 4, 6, 2, 5, 1, 3 ], [ 5, 3, 6, 1, 4, 2 ], [ 6, 4, 5, 2, 3, 1 ] ]
gap> Display(A);
[ [  1,  2,  3,  4,  5,  6 ],
  [  2,  1,  4,  3,  6,  5 ],
  [  3,  5,  1,  6,  2,  4 ],
  [  4,  6,  2,  5,  1,  3 ],
  [  5,  3,  6,  1,  4,  2 ],
  [  6,  4,  5,  2,  3,  1 ] ]

Получение таблицы умножения в виде матрицы удобно, так как существует и обратная
возможность построения объекта по его таблице умножения. Но каким образом, если
необходимо, можно сделать таблицу умножения более наглядной ?

Следующая программа была предложена студентом Запорожского государственного университета
Юрием Романиченко:

Cayley:=function(G)
local s,i,l,m,j,k,max;
l:=Elements(G);
max:=1;
for i in [1..Length(l)] do
  for j in [1..Length(l)] do
    m:=l[i]*l[j];
    s:=String(m);
    if max<Length(String(s)) then
      max:=Length(String(s));
    fi;
  od;
od;
s:=String(" ",max);
Print(s," ");
for i in [1..Length(l)] do
  s:=String(l[i],max);
  Print(s,"  ");
od;
Print("\n");
s:=String(" ",max);
Print(s,"_");
for i in [1..Length(l)*max+2*(Length(l)-1)] do
  Print("_");
od;
Print("\n");
for i in [1..Length(l)] do
  s:=String(l[i],max);
  Print(s,"|");
  for j in [1..Length(l)] do
    m:=l[i]*l[j];
    s:=String(m,max);
    Print(s,"  ");
  od;
  Print("\n");
od;
end;

При обращении к этой функции на экран будет выведена следующая таблица:

gap> Cayley(G);
             ()    (2,3)    (1,2)  (1,2,3)  (1,3,2)    (1,3)
       _____________________________________________________
     ()|     ()    (2,3)    (1,2)  (1,2,3)  (1,3,2)    (1,3)
  (2,3)|  (2,3)       ()  (1,2,3)    (1,2)    (1,3)  (1,3,2)
  (1,2)|  (1,2)  (1,3,2)       ()    (1,3)    (2,3)  (1,2,3)
(1,2,3)|(1,2,3)    (1,3)    (2,3)  (1,3,2)       ()    (1,2)
(1,3,2)|(1,3,2)    (1,2)    (1,3)       ()  (1,2,3)    (2,3)
  (1,3)|  (1,3)  (1,2,3)  (1,3,2)    (2,3)    (1,2)       ()

Заметим, что в случае, когда ширина таблицы превышает ширину экрана, разрыва
строк можно избежать, если сначала увеличить до максимально возможной длину строки
вывода с помощью команды

SizeScreen( [ 256, ] );

и затем открыть файл протокола командой

LogTo( "log.txt" );

В этом случае в текстовом файле таблица не будет искажена, если ее ширина не
будет превышать 256 символов. Файл протокола закрывается командой

LogTo( "log.txt" );

----------------------------------------------------------------------------

Полезные ссылки:
http://www.zsu.zp.ua/UkrGAP/ - Украинская группа пользователей GAP
http://www.gap-system.org/ - Система компьютерной алгебры GAP
http://subscribe.ru/catalog/science.exact.gap/ - наша рассылка
http://subscribe.ru/archive/science.exact.gap/ - архив нашей рассылки

----------------------------------------------------------------------------

С уважением,
Коновалов Александр Борисович,
Председатель Украинской группы пользователей GAP,
доцент кафедры алгебры и геометрии
Запорожского государственного университета
E-mail  : a_konovalov@hotmail.com
Homepage: http://www.zsu.zp.ua/ppages/konoval/konov.htm


http://subscribe.ru/
E-mail: ask@subscribe.ru
Отписаться
Убрать рекламу

В избранное