2014 dxdy logo

Научный форум dxdy

Математика, Физика, Computer Science, Machine Learning, LaTeX, Механика и Техника, Химия,
Биология и Медицина, Экономика и Финансовая Математика, Гуманитарные науки




Начать новую тему Ответить на тему
 
 Maple. Интересная задачка.
Сообщение11.05.2009, 23:44 


11/05/09
2
Здраствуйте. Задали задачку по алгебре, по теории групп: Найти порядки элементов в группе, в частности Sn, и группа матриц, состоящих из 0 и 1 причем 1-цы должны стоять по одной в каждой строке и столбце.
(Благодарю за помощь V.A.L. и Kitonum)
Вот есть 2 процедуры: 1-я генерация случайной матрицы, n-го порядка (в частности тут 5-го, состоящей из нулей и 1)
Код:
with(LinearAlgebra):
> r5:=rand(1..5): 
> A:=ZeroMatrix(5,5):
> A:=convert(A,array):
> for i to 5 do A[i,r5()]:=1 od:
> A:=convert(A,matrix);
                          [1    0    0    0    0]
                          [                        ]
                          [0    0    0    1    0]
                          [                        ]
                     A := [0    0    0    0    1]
                          [                        ]
                          [1    0    0    0    0]
                          [                        ]
                          [0    0    0    1    0]

выдает чуть чуть не то что надо, а надо чтобы 1 была одна на строке и столбце и не пересекалась с другой единичкойкой, подскажите как это сделать?
И вот 2-е: как задать случайную подстановку чтобы она была n-й размерности(n выбирается сама) /*это мне нужно для подсчета степени этой подстановки*/.
Далее, я считаю порядок подстановки с помощью grouporder но он не всегда корректно работает.
Код:
grouporder(permgroup(5,{[[1,2,3],[4,5]]}));

и потом:
Код:
cyc:=proc(A) local i,B,n,d,r,S;n:=nops(A):B:=[]:S:={i$i=2..n}:
>  r,i,d:=1,1,1:
>  while S<>{} do
>  if A[i]=d then B:=[op(B),[r]]:i:=op(1,S):r,d:=i,i
>  else 
>  r:=r,A[i]:i:=A[i] fi :S:=S minus {i} od;
>  B:=[op(B),[r]]: end:

grouporder - почему то считает не все перестановки,
например если использовать перестановку:
Код:
A:=[2,1,3,5,4];

А затем переводя ее с помощью
Код:
cyc(A);

получаем
Код:
[[1, 2], [3], [4, 5]]

и вот пакет выдает ошибку, как исправить непонимаю, с двумя циклами щитает корректно а уже с 3 нет(
Подскажите "чукче" :oops: :cry: как исправить?
Код:
grouporder(permgroup(5,{(cyc(A))}));

выдает:
Код:
Error, (in permgroup) generators must represent products of disjoint cycles, but [[1, 2], [3], [4, 5]] does not

 Профиль  
                  
 
 Re: Maple. Интересная задачка.
Сообщение12.05.2009, 00:27 
Заслуженный участник


27/06/08
4058
Волгоград
Mirakami писал(а):
Здраствуйте. Задали задачку по алгебре, по теории групп: Найти порядки элементов в группе, в частности Sn, и группа матриц, состоящих из 0 и 1 причем 1-цы должны стоять по одной в каждой строке и столбце.
(Благодарю за помощь V.A.L. и Kitonum)
Вот есть 2 процедуры: 1-я генерация случайной матрицы, n-го порядка (в частности тут 5-го, состоящей из нулей и 1)
Код:
with(LinearAlgebra):
> r5:=rand(1..5): 
> A:=ZeroMatrix(5,5):
> A:=convert(A,array):
> for i to 5 do A[i,r5()]:=1 od:
> A:=convert(A,matrix);
                          [1    0    0    0    0]
                          [                        ]
                          [0    0    0    1    0]
                          [                        ]
                     A := [0    0    0    0    1]
                          [                        ]
                          [1    0    0    0    0]
                          [                        ]
                          [0    0    0    1    0]

выдает чуть чуть не то что надо, а надо чтобы 1 была одна на строке и столбце и не пересекалась с другой единичкойкой, подскажите как это сделать?

Только не надо перекладывать с больной головы на здоровую! ;) Вы просили, чтобы в каждой строке было ровно по одной единичке. О столбцах (или о невырожденности матрицы) речи не было.
Цитата:
И вот 2-е: как задать случайную подстановку чтобы она была n-й размерности(n выбирается сама) /*это мне нужно для подсчета степени этой подстановки*/.

Код:
with(combinat):randperm(5);

                           [1, 4, 5, 2, 3]

А используя произвольную подстановку, как Вы, наверное, уже догадались, легко получить и требуемую матрицу.
Цитата:
Далее, я считаю порядок подстановки с помощью grouporder но он не всегда корректно работает.
grouporder - почему то считает не все перестановки,
например если использовать перестановку:
Код:
A:=[2,1,3,5,4];

А затем переводя ее с помощью
Код:
cyc(A);

получаем
Код:
[[1, 2], [3], [4, 5]]

и вот пакет выдает ошибку, как исправить непонимаю, с двумя циклами щитает корректно а уже с 3 нет(

Дело не в количестве циклов, а в наличии цикла длины один. Такие циклы при задании перестановки в виде произведения независимых циклов надо опускать.

 Профиль  
                  
 
 Re: Maple. Интересная задачка.
Сообщение13.05.2009, 20:29 


11/05/09
2
Пытался написать процедуру, задания невырожденной матрицы. не получается.
там вроде надо добавить услови какое то...
Я вот пытался с определителями написать, если det=0 то вырожденная и он ее отбрасывает, а если det>=1 то невырожденная, и ее запониманем в файл.
ниодну не сгенерил невырожденную.(((
///. Такие циклы при задании перестановки в виде произведения независимых циклов надо опускать.
то есть их вообще считать не надо? ... и так видно какой порядок у цикла ;

Посоветуйте литературу по Maple для решений матриц,
и для работы с файлами....

 Профиль  
                  
 
 Re: Maple. Интересная задачка.
Сообщение13.05.2009, 22:20 
Заслуженный участник


27/06/08
4058
Волгоград
Mirakami" в сообщении #213650 писал(а):
Пытался написать процедуру, задания невырожденной матрицы. не получается.
там вроде надо добавить услови какое то...
Я вот пытался с определителями написать, если det=0 то вырожденная и он ее отбрасывает, а если det>=1 то невырожденная, и ее запониманем в файл.
ниодну не сгенерил невырожденную.(((
Вы так до посинения считать будете!
Я же в предыдущем сообщении сделал прозрачный намек. Придется делать более чем прозрачный :)
Код:
with(LinearAlgebra):
> with(combinat):r5:=randperm(5):
> A:=ZeroMatrix(5,5):
> A:=convert(A,array):
> for i to 5 do A[i,r5[i]]:=1 od:
> A:=convert(A,matrix);
Цитата:
///. Такие циклы при задании перестановки в виде произведения независимых циклов надо опускать.
то есть их вообще считать не надо? ... и так видно какой порядок у цикла ;

Опускать надо циклы длины 1. Для этого достаточно внести косметические изменения в процедуру cyc.
Ну а то, что порядок подстановки можно считать через НОК длин циклов, безо всяких grouporder - это само собой. Об этом я уже писал.
Цитата:
Посоветуйте литературу по Maple для решений матриц,
и для работы с файлами....
А что такое "решение матриц". На мой взгляд, это примерно то же, что "решение чисел".
А о работе в Maple, как с матрицами, так и с файлами, почитайте у В.З.Аладьева

 Профиль  
                  
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы



Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group