Подтвердить что ты не робот

Абстрактная алгебра и программирование

Я собираюсь начать изучать абстрактные алгебра-группы, кольца и т.д. Мне интересно знать любой язык программирования, если вообще, что может помочь мне узнать/попробовать концепции, которые я изучаю в теории.

EDIT: Я действительно не смотрю на реализацию, что я узнаю. Мне интересно знать любой язык, который уже поддерживает их.

Спасибо.

4b9b3361

Ответ 1

Текст, который вы хотите здесь, представляет собой абстрактную алгебру, вычислительный подход Чака Симса. Автор порекомендует вам использовать язык программирования APL. Книга не печатается, но вы, вероятно, можете найти ее в своей библиотеке.

Существует также GAP Computer Algebra System, которая очень удобна для теории групп.

Дополнительные ресурсы:

Magma: довольно сложный CAS, который может обрабатывать широкий спектр понятий из абстрактной алгебры.
Macaulay 2: используется для изучения полиномиальных колец, особенно Основы Gröbner.
SINGULAR: используется для изучения полиномиальных колец.

Ключевым фактом в изучении теории групп является то, что каждая группа изоморфна группе перестановок

Ответ 2

Может быть, немного другое отношение к вашему вопросу, но все же... Функциональный язык Haskell использует понятия из алгебры (в частности, теории категорий), такие как монады, моноиды, стрелки и многое другое.

Используя классные классы Haskell, вы также можете сделать любой объект в группе или в кольце, например, просто определяя на них операции (операторы). Однако гарантирование того, что операции, которые вы определяете, действительно соответствуют аксиомам группы/кольца, будет вашей ответственностью.

Ответ 3

Mathematica имеет множество полезных функций для работы с понятиями в абстрактной алгебре. К сожалению, это проприетарное программное обеспечение и очень дорого. Sage - это бесплатная альтернатива, которая также имеет довольно хороший репертуар абстрактных функций алгебры, хотя я не использовал ее так широко, Я больше не могу комментировать его.

Ответ 5

Любой язык с целыми числами без знака фиксированного размера (например, тип unsigned int на C) является примером такой реализации. Дополнение с неподписанными значениями по существу совпадает с добавлением над Z 2 32 (т.е. Целые числа по модулю 2 32), которые вы, вероятно, изучаете в вашем абстрактном классе алгебры.

Модульное дополнение к такой группе не очень интересно. Более интересным может быть модульное дополнение над группой размера N, где N имеет простые множители, отличные от двух, или размер P, где P - простое число. Чтобы экспериментировать с такими группами, вам, возможно, придется выполнять такие арифметические операции самостоятельно (это не сложно). Языки с перегрузкой оператора могут сделать реализацию намного удобнее в использовании.

Ответ 6

Используйте язык, который вам больше всего подходит. Абстрактная алгебра содержит много манипуляций с символами (нажатие символов) и переписывание, небольшое количество индукции и достаточное количество утомительности. Для меня это звучит как логическое или функциональное программирование; Epigram и Agda делают это немного, и Haskell в некоторой степени (хотя я не согласен с тем, что моноид правильный, mzero и mappend okay, mconcat: bad). Для абстрактной алгебры лучшим языком программирования является блокнот и тонны бумаги. Хотя в наши дни этот человек становится эзотерическим.

Ответ 7

Хм... извините, но я не думаю, что это полезно, чтобы выучить какой-то фантастический новый язык программирования, чтобы помочь вам научиться абстрактной алгебре.

Да Haskellers любят говорить теорию категории, но это не очень хорошая отправная точка.

GAP и co. используются, чтобы помочь взрослым групповым теоретикам найти новых "монстров" - они являются плохими инструментами для изучения теории групп.

Возможно, вы можете взглянуть на это: http://freecomputerbooks.com/mathAlgebraBooks.html - в этой теме есть много бесплатных книг.

Ответ 8

Немного удивительно, что до сих пор никто не упомянул CoCoA (аббревиатура Computations in Commutative Algebra), ссылку на основной сайт: http://cocoa.dima.unige.it/, где можно загрузить новейшие версии CoCoA 5.0 для основных платформ (Linux, MacOS X, Windows) (здесь можно найти полезное руководство для CoCoA 4.7, для 5.0 обновляется).
Свободно доступная система компьютерной алгебры (написанная на C), разработанная более 20 лет. Его целью является профессиональное, научное применение, в том числе вычисления базисов Грёбнера, полиномиальная факторизация, точная линейная алгебра, функции Гильберта, торические идеалы и т.д.

Есть хорошие монографии, такие как Computational Commutative Algebra (2 vol.) от Kreutzer и Robbiano, имеющих дело с CoCoA: http://cocoa.dima.unige.it/kr/

В области коммутативной алгебры он обладает более продвинутой и специализированной функциональностью, чем Mathematica, хотя в M имеются блестящие возможности (отсутствующие в CoCoA) для элиминации квантора (полезно при работе с системами полиномиальных уравнений и неравенств): http://www.wolfram.com/learningcenter/tutorialcollection/AdvancedAlgebra/.

Ответ 9

В аналогичном ключе с ответом Грега, группы имеют хорошее представление в виде матричного умножения, поэтому вы часто видите примеры, выполненные с использованием matlab или подобных инструментов...

Ответ 10

EAAM его математический пакет и может быть установлен также.