- Учителю
- Статья по математике на тему 'Система компьютерной алгебры GAP'
Статья по математике на тему 'Система компьютерной алгебры GAP'
GAP
Система GAP дает возможность производить вычисления с длинными целыми и рациональными числами, допустимые значения которых ограничены только объемом доступной памяти. Система работает с циклотомическими полями, конечными полями, р-адическими числами, многочленами от многих переменных, рациональными функциями, векторами и матрицами.
На основе анализа информации, полученной при изучении литературы, описывающей технические характеристики GAP, можно выделить следующие составные части системы:
-
язык программирования, внешне напоминающий Паскаль;
-
стандартные типы основных алгебраических объектов: групп (подстановок, абстрактных, матричных), колец, полей;
-
удобные типы переменных, в т.ч. оперативно изменяемые списки и записи;
-
библиотеки функций, в которой реализованы разнообразные алгебраические алгоритмы (более 4000 пользовательских функций, более 140000 строк программ на языке GAP);
-
библиотеки данных, включая, например, библиотеку всех групп порядка не более 2000 (за исключением 49487365422 групп порядка 1024, точное количество которых также было определено с помощью системы GAP!), библиотеку примитивных групп подстановок, таблицы характеров конечных групп и т. д, что в совокупности составляет эффективное средство для выдвижения и тестирования научных гипотез;
-
прикладные программы, поставляемые вместе с GAP, охватывают такие разделы алгебры, как комбинаторная теория групп, конечные простые группы, теория представлений групп, теория графов, в т.ч. их группы автоморфизмов, теория кодирования, кристаллографические группы, группы Галуа и многое другое.
Отметим основные обнаруженные особенности системы:
-
обширная (около полутора тысяч страниц) документация, доступная в разнообразных форматах (.tex, .ps, .pdf, .html) через Интернет;
-
бесплатное получение по сети Internet вместе с исходными текстами, являющимися незаменимым наглядным пособием для освоения GAP;
-
возможность работы в операционных системах DOS, Windows, Unix, Linux, MacOS;
-
работа с процессором типа 386 и выше с ОЗУ от 16 Mb;
-
занимаемое место на диске - от 10 до 100 Mb в зависимости от объема инсталляции;
-
способность работать с ОЗУ до 128 Mb и файлом подкачки до 128 Mb.
Система GAP является свободно распространяемой, открытой и расширяемой системой. Она распространяется в соответствии с GNU Public License [2]. Изначально система разрабатывалась под Unix, а затем была портирована для работы в других операционных системах, и в настоящее время инсталлируется на компьютеры, работающие под управлением различных версий операционных систем UNIX/Linux, Windows или Macintosh (в Mac OS X можно использовать UNIX-инсталляцию). Архивы с дистрибутивом системы GAP не зависят от операционной системы, небольшие различия имеются только в процедуре инсталляции. Ядро системы, обеспечивающее интерпретацию языка GAP, работу с системой в программном и интерактивном режиме, написано на Си, а библиотека функций - на специальном языке, также называемом GAP, который по синтаксису напоминает Pascal, однако является объектно-ориентированным языком. Полная версия системы с большинством пакетов занимает около 360 Мб дискового пространства. Для запуска программы рекомендуется наличие не менее 128 MB оперативной памяти и 500 Мб свободного пространства на жестком диске перед инсталляцией. На самом деле система будет работать и на компьютерах с меньшими характеристиками, однако на устаревших компьютерах (например, Pentium-133 и ниже с 16 - 32 Мб оперативной памяти) для ее запуска понадобится довольно продолжительное время. Кроме того, для экономии места на жестком диске пакеты могут быть установлены выборочно, а некоторые компоненты системы, использование которых не предполагается конкретным пользователем, могут быть удалены (например, документация в неиспользуемых форматах, библиотеки транзитивных групп и т.п.). Существует графический интерфейс XGAP [61], который работает под OC Linux или Unix и позволяет, например, графически изобразить решетку подгрупп группы.
Язык программирования
Символы и категории слов в GAP. GAP воспринимает следующие символы: цифры, буквы (верхний и нижний регистры), пробел, символы табуляции и новой строки, а также специальные символы:
"
'
(
)
*
+
,
-
.
/
:
;
<
=
>
~
{
\
]
^
_
{
}
#
Составленные из символов слова относятся к следующим категориям:
-
ключевые слова (зарезервированные последовательности букв нижнего регистра);
-
идентификаторы (последовательности цифр и букв, содержащие не менее одной буквы и не являющиеся ключевым словом);
-
строки (последовательности произвольных символов, заключенная в двойные кавычки);
-
целые числа (последовательности цифр);
-
операторы и ограничители в соответствии со следующим списком:
+
-
*
/
^
~
=
<>
<
<=
>
>=
:=
.
. .
->
,
;
[
]
{
}
(
)
Любая последовательность пробелов воспринимается GAP как один пробел.
Ключевые слова:
and
do
elif
else
end
fi
for
function
if
in
local
mod
not
od
or
repeat
return
then
until
while
quit
Идентификаторы состоят из букв, цифр, символов «_», и должны содержать не менее одной буквы или символа «_». При этом регистр является существенным. Примеры идентификаторов:
A
100x
LongIdentifier
Hello
_100
HELLO
Примерами выражений являются: переменные, обращения к функциям, целые числа, перестановки, строки, функции, списки, записи. С помощью операторов из них могут быть составлены более сложные выражения. Операторы разбиты на три класса:
-
операторы сравнения: « = », « <> », « <= », « in »;
-
арифметические операторы: « + », « - », « * », « / », « mod », « ^ »;
-
логические операторы: « not », « and », « or ».
Пример 1. Использование переменных и выражений.
gap>2*2;#два знака ";" подавляют вывод на экран
gap>2*2+9=Fibonacci(7) and Fibonacci(13) in Prime; true
Пример 2. Глобальные и локальные переменные.
g:= 0; # глобальная переменная g
x:=function ( a, b, c ) local y; g:=c; # c - аргумент функции x
y:=function ( y ) local d, e, f;
d:=y; # y - аргумент функции y
e:=b; # b - аргумент функции x
f:=g; # g - глобальная переменная g
return d + e + f; end; return y(a); # y - локальная переменная функции x; end;
Пример 3. Обращение к функциям. Формат: 1) function-var(); 2) function-var(arg-expr {,arg-expr} ).
gap> Fibonacci( 11 ); # обращение к функции "Fibonacci" с аргументом 11; 89
gap> G.operations.RightCosets(G,Intersection(U,V));#обращение к функции "G.operations.RightCosets", в котором второй аргумент определяется обращением к другой функции
Примеры разработки новых функций см. в приложении 2.
Сравнение выражений. Формат: left-expr = right-expr; left-expr <> right-expr. Любые объекты сравнимы между собой. Объекты различных типов всегда различны, т.е. = приведет к false, и <> - к true. Кроме того, для них определено отношение «меньше». Операторы сравнения имеют больший приоритет по сравнению с логическими операторами, но меньший по сравнению с арифметическими. Например, a*b = c and d интерпретируется как ((a*b)=c) and d).
Пример 4. Сравнение, левая часть которого является выражением.
gap> 2 * 2 + 9 = Fibonacci(7); true
Использование арифметических операторов. Формат: + right-expr; - right-expr; left-expr + right-expr; left-expr - right-expr; left-expr * right-expr; left-expr / right-expr; left-expr mod right-expr; left-expr ^ right-expr. Значение зависит от типа операндов. Mod определен только для целых и рациональных чисел. Для элемента группы ^ означает возведение в степень, если правый операнд - целое число, а если он также элемент группы, то сопряжение с его помощью. Приоритет операторов (по убыванию):
1) ^; 2) унарные «+» и «-»; 3) *, /, mod; 4) «+» и «-».
-2 ^ -2 * 3 + 1 означает (-(2 ^ (-2)) * 3) + 1.
Арифметические операторы имеют наивысший приоритет по сравнению с операторами сравнения и логическими операторами.
Командами в GAP называются: присваивания, вызовы процедур, структуры if, while, repeat, for, а также команда return. Все команды заканчиваются знаком « ; ».
Пример 5. Присваивания. Формат var := expr.
gap> S6 := rec( size := 720 );S6; rec( size := 720 )
gap> S6.generators := [ (1,2), (1,2,3,4,5) ];S6; rec( size := 720, generators := [ (1,2), (1,2,3,4,5) ] )
gap> S6.generators[2] := (1,2,3,4,5,6);S6; rec( size := 720, generators := [ (1,2), (1,2,3,4,5,6) ] )
Различие между процедурами и функциями введено для удобства, GAP же их не различает. Функция возвращает значение, но не производит побочных эффектов. Процедура не возвращает никакого значения, но производит какое-либо действие (например, процедуры Print, Append, Sort). Формат вызова процедуры: procedure -var (); procedure-var ( arg - expr {, arg-expr} ).
Функции. Формат: function ( [ arg-ident {, arg-ident} ] )
[ local loc-ident {, loc-ident} ; ]
Statements
end
Пример 6. Функция, определяющая n-е число Фибоначчи.
Итеративное определение функции
gap> fib := function ( n )
> local f1, f2, f3, i;
> f1 := 1; f2 := 1;
> for i in [3..n] do
> f3 := f1 + f2; f1 := f2; f2 := f3;
> od;
> return f2;
> end;
gap> List( [1..10], fib );
[ 1, 1, 2, 3, 5, 8, 13, 21, 34, 55 ]
Рекурсивное определение функции
gap> fib := function ( n )
> if n < 3 then
> return 1;
> else
> return fib(n-1) + fib(n-2);
> fi;
> end;
gap> List( [1..10], fib );
[ 1, 1, 2, 3, 5, 8, 13, 21, 34, 55 ]
Рекурсивная версия требует 2 * fib(n)-1 шагов для вычисления fib(n), тогда как итеративная требует только n-2 шага. Обе, однако, не являются оптимальными, так как библиотечная функция Fibonacci требует порядка Log(n) шагов.
Команда IF. Формат: if bool-expr1 then statements1
{ elif bool-expr2 then statements2 }
[ else statements3 ]
fi;
При этом частей elif может быть произвольное количество или ни одной. Часть else также может отсутствовать.
Пример 7.
gap> i := 10;
gap> if 0 < i then s := 1; elif i < 0 then s := -1; else s := 0; fi;
gap> s; 1 # знак i
Цикл WHILE. Формат: while bool-expr do statements od. Последовательность команд statements выполняется, пока истинно условие bool-expr. При этом сначала проверяется условие, а затем, если оно истинно, выполняются команды. Если уже при первом обращении условие ложно, то последовательность команд statements не выполнится ни разу.
Пример 8.
gap> i := 0; s := 0;
gap> while s <= 200 do i := i + 1; s := s + i^2; od;
gap> s; 204
Цикл REPEAT. Формат: repeat statements until bool - expr. Последовательность команд statements выполняется, пока истинно условие bool - expr. При этом сначала выполняются команды, а затем проверяется условие. Таким образом, при любом начальном значении условия набор команд statements выполнится, по крайней мере, один раз.
Пример 9. Вычисление наименьшей суммы квадратов первых n последовательных натуральных чисел, превышающей 200.
gap> i := 0; s := 0;
gap> repeat i := i + 1; s := s + i^2; until s > 200;
gap> s; 204
Цикл FOR. Формат: for simple-var in list-expr do statements od. При этом последовательность команд statements выполняется для каждого элемента из списка list-expr. Список list часто является последовательностью. Цикл for эквивалентен циклу while.
Пример 10.
gap> s := 0;
gap> for i in [1..100] do s := s + i; od;
gap> s; 5050
Команда RETURN. Формат: return; return expr. Первая форма прерывает выполнение внутренней (при вызове одной функции из другой) функции и передает управление вызывающей функции, не возвращая при этом никакого значения. Вторая, кроме того, возвращает значение выражения expr.
Специальные объекты
Список является заключенным в квадратные скобки набором объектов, разделенных запятыми. Он может состоять из объектов различных типов, являться частью другого списка или самого себя. Например, список из первых десяти простых чисел можно задать следующим образом:
Пример 11. Задание списка первых десяти простых чисел.
gap> primes:=[2, 3, 5, 7, 11, 13, 17, 19, 23, 29]; [ 2, 3, 5, 7, 11, 13, 17, 19, 23, 29 ]
Добавить числа можно при помощи функций Append, Add, указать отдельный элемент - по его номеру в списке. Функция Length определяет длину списка.
Пример 12. Создание пустого списка и задание его элемента.
gap> lll[1]:= 2; Error, Variable: 'lll' must have a value
gap> lll:= [];
gap> lll[1]:= 2; 2
Функция Position возвращает номер первого элемента списка, имеющего заданное значение. Если в списке нет элемента с заданным значением, функция возвращает false.
Пример 13. Определение содержания в списке элемента с заданным номером при помощи функции IsBound.
gap> k:= [ , 2, 3, , 5, , 7, , , , 11 ];
gap> IsBound(k[7]); IsBound(k[4]); IsBound(k[20]); true false false
Строки являются частным случаем списков, и печатаются без разделителей.
Пример 14. Различные варианты задания строк и операций над ними.
gap>s1:=['H','a','l','l','o','','w','o','r','l','d','.']; "Hallo world."
gap>s2 := "Hallo world."; "Hallo world."
gap>s1 = s2; true
gap> s2[7]; 'w'
Пример 15. Извлечение и изменение подмножеств списка при помощи оператора { }:
gap> sl := lll{ [ 1, 2, 3 ] }; [ true, "This is a String", [ 4, 5, 6 ] ]
gap> sl{ [ 2, 3 ] } := [ "New String", false ]; [ "New String", false ]
gap> sl; [ true, "New String", false ]
Для изучения способов управления сложными структурами данных в GAP важно понимать различия между тождественными и равными объектами.
Множества в GAP - это списки специального вида. Элементы множества расположены последовательно (т.е. не содержат пробелов, как, например, список [2,3,5,,,,,,,,31,37,41]), упорядочены (порядок сортировки GAP определяет самостоятельно) и встречаются в списке только один раз. Множества, как и списки, могут содержать объекты различных типов. Проверить, является ли объект множеством, можно с помощью функции IsSet. Для каждого списка существует соответствующее ему множество, получаемое с помощью функции Set.
Пример 16.
gap> fruits:=["apple", "strawberry", "cherry", "plum", "apple"];
gap> IsSet(fruits); false
gap> fruits:= Set(fruits); [ "apple", "cherry", "plum", "strawberry" ]
При этом исходный список fruits был изменен. Для проверки принадлежности объекта множеству используется оператор in. Добавить к множеству новый элемент можно с помощью функции AddSet. Пересечение, объединение и разность множеств определяются с помощью функций Intersection, Union и Difference. При этом аргументы могут быть обычными списками, тогда как результат всегда будет являться множеством.
Пример 17. Нахождение объединения и разности заданных множеств.
gap> breakfast:= ["tea", "apple", "egg"]; [ "tea", "apple", "egg" ]
gap> Intersection(breakfast, fruits); [ "apple" ]
gap> Difference(breakfast,fruits); [ "egg ", "tea" ]
Те же операции над множествами производят функции IntersectSet, UniteSet и RemoveSet, но они не возвращают результат, а заменяют им первый аргумент.
Пример 18. Вектор - список элементов, принадлежащих общему полю, не содержащий пробелов.
gap> v:= [3, 6, 2, 5/2]; [ 3, 6, 2, 5/2 ]
gap> IsVector(v); true
Векторы умножаются на скаляры из любого поля, содержащего данное. Умножение двух векторов равной длины дает их скалярное произведение.
Пример 19. Матрица - список векторов одинаковой длины, не содержащий пробелов.
gap> m:= [[1, -1, 1],[2, 0, -1], [1, 1, 1]]; [ [ 1, -1, 1 ], [ 2, 0, -1 ], [ 1, 1, 1 ] ]
gap> m[2][1]; 2
Матрицы можно умножать на скаляры, векторы и другие матрицы (при соответствии размеров). Умножение вектора на матрицу приводит к линейной комбинации строк матрицы, тогда как умножение матрицы на вектор приводит к линейной комбинации ее столбцов. В последнем случае вектор рассматривается как вектор-столбец.
Пример 20. Извлечение подматриц.
gap> sm := m{ [ 1, 2 ] }{ [ 3, 4 ] }; [ [ 3, 4 ], [ 7, 8 ] ]
gap> sm{ [ 1, 2 ] }{ [2] } := [[1],[-1]]; [ [ 1 ], [ -1 ] ]
gap> sm; [ [ 3, 1 ], [ 7, -1 ] ]
Первая пара скобок указывает выбранные строки, вторая - столбцы.
Другой способ создания новых структур данных - записи. Как и списки, записи - это наборы других объектов, называемых компонентами, или полями, обращение к которым происходит не по номеру, а по имени.
Пример 21.
gap> date:= rec(year:=1992, month:="Jan", day:=13); rec( year := 1992, month := "Jan", day := 13 )
Изначально запись определяется как разделенный запятыми список присваиваний значений ее полям. Для обращения к значению соответствующего поля записи необходимо указать имя записи и имя поля, разделив их точкой. Определив запись, в дальнейшем можно добавлять к ней новые поля.
gap> date.year; 1992
gap>date.time:=rec(hour:=19,minute:=23,second:=12); rec( hour:=19, minute := 23, second := 12 )
gap> date; rec( year:=1992, month:="Jan", day:=13, time:=rec( hour:=19, minute:=23, second:=12))
Большинство сложных структур, с которыми работает GAP, являются именно записями (например, группы, групповые кольца, таблицы характеров). GAP имеет множество стандартных функций (аргументы которых являются записями), которые изменяют значения существующих полей или добавляют новые поля к своим аргументам. Так, функция Size вычисляет размер (порядок) своего аргумента (например, группы) и сохраняет найденное значение в поле size. При последующем обращении к этой функции вместо ее вычисления будет использовано сохраненное ее значение. Для определения, является ли объект записью, применяется функция IsRecord.
Пример 22. Получение структуры записи при помощи функции RecFields.
gap> RecFields(date); [ "year", "month", "day", "time"].
Другим специальным видом списков являются целочисленные конечные арифметические прогрессии. Они описываются первым, вторым и последним элементами, разделенными соответственно запятой или двумя точками, и заключенными в квадратные скобки. Если прогрессия состоит из последовательных чисел, второй элемент может быть опущен.
Пример 23.
gap>[1..999999]; #натуральные числа от 1 до 999999; [ 1 .. 999999 ]
gap>[1,2..999999];#эквивалентно предыдущей команде; [ 1 .. 999999 ]
gap>[1,3..999999]; # здесь шаг равен 2; [ 1, 3 .. 999999 ]
gap> Length( last ); 500000
gap> [ 999999, 999997 .. 1 ]; [ 999999, 999997 .. 1 ]
Задачи теории групп, решаемые в GAP
Система GAP даёт возможность решать задачи представления групп в различных формах: группы подстановок, матричные группы, группы, заданные порождающими элементами и определяющими соотношениями, а также: вычисление их мультипликативных групп, задание подгрупп групп, порожденных конкретными обратимыми элементами групповой алгебры. Задача задания групп может быть решена при помощи непосредственного обращения к библиотечным функциям (например, симметрическая и знакопеременная группы, группа диэдра, циклическая группа и др.).
При помощи функций для работы с группами реализуются задачи определения порядка группы, вычисления классов сопряженных элементов, центра и коммутанта группы, верхнего и нижнего центрального рядов, ряда коммутантов, Силовских подгрупп, максимальных подгрупп, нормальных подгрупп, решеток подгрупп, групп автоморфизмов, и т. д. Для ряда конечных групп доступно определение их типа изоморфизма [3].
Теория представлений групп также входит в область применения системы GAP. Здесь решаются задачи вычисления таблиц характеров конкретных групп, действий над характерами и интерактивного построения таблиц характеров, определения теоретико-групповых свойств на основании свойств таблицы характеров группы. Модулярные представления групп (т.е. представления над полем, характеристика которого делит порядок группы) также исследуются в GAP.
В системе могут быть определены векторные пространства над всеми доступными полями и модули над всеми доступными кольцами. Имеются алгоритмы для вычисления структуры конечномерных алгебр Ли, которые могут быть, например, заданы структурными константами или порождающими элементами, вычисления различных их Лиевских подалгебр и идеалов [4].
Имеются алгоритмы и функции для решения задач, связанных с базисами Гребнера, алгебраическими расширениями полей, группами Галуа, таблицами характеров, векторными пространствами, целочисленными матрицами; вычислениями минимальных нормальных подгрупп конечной группы и цоколя конечной группы; определения принадлежности заданной группы подстановок к симметрической или знакопеременной группе в их естественном представлении и др..
С помощью встроенных алгоритмов реализуются задачи вычисления неприводимых представлений и их характеров, вычисления нормализаторов и сопряженных подгрупп в симметрических группах подстановок, вычисления системы представителей смежных классов в группах подстановок; разложения подстановки в произведение порождающих элементов, возвращающего существенно более короткие слова (например, длины около 100 для группы кубика Рубика); а также действий со списками, многочленами, матрицами и матричными группами, расширениями конечных групп, конечномерных алгебр.
В библиотеку конечных групп входят такие как: группы порядков p4, p5, p6 для произвольных простых p; группы, порядок которых свободен от квадратов; группы, порядок которых свободен от кубов и не превышает 50000. Имеется функция StructureDescription для решения задач вычисления структурных описаний конечных групп.
Пример 24. Получение структурного описания конечных групп.
gap> l := AllSmallGroups( Size, 8 );
gap> List( l, StructureDescription ); [ "C8", "C4 x C2", "D8", "Q8", "C2 x C2 x C2" ]
Среди других областей - задачи теории графов и автоморфизмов, теории кодирования, теории полугрупп, кристаллография, химия, спектроскопия, ядерная физика, квантовая теория поля и т. д..
ЗАКЛЮЧЕНИЕ
По итогам исследования можно сделать следующие выводы.
-
К несомненным достоинствам системы следует отнести ее компактность: как показали наши исследования, для первоначальной работы достаточно версии системы объемом до 400 Мб. Так как пакеты расширений достаточно независимы друг от друга, ученым-исследователям, занимающимся задачами их конкретной области теории групп, не обязательно устанавливать все обновляющиеся пакеты расширений. Система не является программно ориентированной, разработчик в равной степени занимаются модификацией имеющихся версий для платформ Windows, Linux/Unix.
-
С помощью системы начинают решать задачи теории групп ранее внесенных в список нерешенных или нерешаемых, причем авторами таких решений являются молодые ученые-исследователи .
-
Система имеет специфическую динамичную структуру: ядро системы и пакеты расширений, однако из-за статуса системы (свободная распространяемость и открытость) и ядро, и пакеты постоянно модифицируются, вследствие чего алгоритм решения каждой конкретной задачи существенно привязан к версии системы. Все обновления ядра и пакетов системы перед опубликованием их для пользователей проходят предварительную экспертизу в экспертном Совете GAP.
-
Решение задач бывает затруднено по причине отсутствия адаптированной справочной информации на русском языке. Система встроенной справки работает нестандартно: при вызове помощи система дает не комментарии, а список ссылок на электронные пособия или на дополнительные пакеты расширений.
-
Для решения большинства задач встроенными алгоритмами требуются предварительные представления групп группами подстановок, однако некоторые группы таких представлений не имеют.
-
Многие встроенные алгоритмы и функции имеют «скрытые» особенности, проявляющиеся, например, в специфике вывода результата .
-
В отличие от многих универсальных специализированных систем (Mathematica, Maple, MathCAD, Derive, MatLAB), СКМ GAP «узкоспецифическая», вследствие чего затруднено или практически нереализовано выполнение некоторых вычислительных процедур (вычисление значений тригонометрических функций, извлечение корней и др.).
Тем не менее, система имеет свою аудиторию, ее признание российскими исследователями очевидно, что подтверждается внесением самой системы и публикаций о ней на сайт exponenta.ru, который занимает среди специализированных сайтов, посвященных научным исследованиям, особое место. Основная проблематика сайта - применение разнообразных математических систем в образовании и научных исследованиях. Его разделы содержат методические рекомендации по применению специализированных математических систем, банки решенных математических задач в таких системах, конкурсы публикаций по применению систем, Интернет - классы по обучению работы в системах, рекламную информацию фирм-разработчиков. Впервые информация на русском языке по системе GAP была размещена именно на этом сайте, здесь же находятся постоянно обновляемые версии свободно распространяемых программ, в том числе и GAP.
Многие решения задач теории групп бывают затруднены вследствие громоздкости вычислений (наличие большого количества элементов в группе), хотя идейное решение задачи бывает очевидным, техническая реализация может быть выполнена с ошибками. Достаточно быстрое решение задач позволяет проверять выдвигаемые гипотезы без значительных затрат времени, тем не менее некоторые проблемы теории групп остаются открытыми.
Система GAP может быть использована в процессе обучения в высшей школе в целях повышения мотивации изучения отдельных вопросов (теории групп), при изучении конкретных дисциплин (теория чисел, элементы абстрактной и компьютерной алгебры, числовые системы). Встроенные алгоритмы могут быть использованы для контроля результата аналитически решенных задач в индивидуальной и самостоятельной работе, для написания курсовых и дипломных проектов.
Изучение системы GAP очень важно в высшей школе по идейным соображениям: в системе реализована алгоритмизация абстрактных областей научного знания, к которым относится теория групп, что относится к сфере интеллектуализации программного обеспечения (при выполнении исследования интеллектуализация проявлялась, например, в получении решении одной и той же задачи в разной форме), т. е. система «самостоятельно» выбирала алгоритмы решения из нескольких возможных.
В последнее время наблюдается значительная активность исследователей по использованию системы GAP.
Таким образом, система GAP занимает свое заслуженное место в ряду систем компьютерной математики.
Список использованных источников:
-
Кормилицына, Т. В. Решение задач теории групп в системе компьютерной алгебры GAP / Т. В. Кормилицына, С. М. Миронова // Организация проблемного обучения в школе и вузе / Межвузовский сборник научно-методических трудов. Вып. 3 / Мордов. гос. пед. ин-т - Саранск, 2008. - С. 147 - 149.
-
Кормилицына, Т. В. Проблемы применения свободно распространяемого программного обеспечения при обучении математике в высшей школе / Т. В. Кормилицына, С. М. Миронова // Интеграция информационных систем в образовании / Труды V Международной конференции г. Псков, 27-29 марта 2008 года. С. 32 - 35.
-
Кормилицына, Т. В. Проблема применения систем символьной математики в высшей школе / Т. В. Кормилицына, С. М. Миронова, С. Н. Соколова. // Информационные технологии в науке, образовании и производстве / Труды III Международной научно-технической конференции г. Орел, 24-25 апреля 2008 года. С. 50 - 55.
-
The GAP Group, GAP - Groups, Algorithms, and Programming, Version 4.3. - 2002. - 144 p.
-
http://www.gap-system.org/
-
-
http://www.gap-system.org/Download/index.html.
-
http://www.gap-system.org/Download/Updates/gap4r4p10.html