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
4062
Волгоград
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
4062
Волгоград
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, Супермодераторы



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

Сейчас этот форум просматривают: DariaRychenkova


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

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