Algèbre abstraite et programmation [fermé]

Je vais commencer à apprendre L'algèbre abstraite-groupes, anneaux, etc. Je suis intéressé de connaître n'importe quel langage de programmation, le cas échéant, qui peut m'aider à apprendre/essayer les concepts que j'apprends en théorie.

EDIT: Je ne regarde pas vraiment implémenter ce que j'apprends. Je suis intéressé de connaître n'importe quelle langue qui les supporte déjà.

24
demandé sur alfC 2009-02-24 06:28:43

11 réponses

Le texte que vous voulez ici est algèbre abstraite, une approche de calcul par Chuck Sims. L'auteur vous recommandera d'utiliser le langage de programmation APL. Le livre est épuisé, mais vous pouvez probablement trouver dans votre bibliothèque.

Il y a aussi le GAP Computer Algebra System qui est amusant à utiliser pour la théorie des groupes.

Ressources avancées:

Magma: assez sophistiqué AR, ce qui permet de traiter un large éventail de concepts à partir d'algèbre abstraite.
Macaulay 2 : utilisé pour étudier les anneaux polynomiaux, en particulier les bases de Gröbner .
singulier : utilisé pour étudier les anneaux polynomiaux.

Un fait clé dans l'étude de la théorie des groupes est que chaque groupe est isomorphe à un groupe de permutation par l'action régulière. Ainsi, la clé pour comprendre la théorie des groupes est de comprendre les groupes de permutation.

Enfin, tout langage qui prend en charge la définition de vos propres objets et la définition d'un binaire l'opérateur sur deux instances de l'objet soutiendra l'apprentissage de la théorie par la programmation.

20
répondu jason 2009-02-24 12:32:15

Peut-être un point de vue légèrement différent sur votre question, mais quand même... Le langage fonctionnel Haskell utilise des concepts de l'algèbre (en particulier la théorie des catégories) tels que les monades, les monoïdes, les flèches et autres joyaux.

En utilisant les classes de type de Haskell, vous pouvez également transformer n'importe quel objet en groupe ou en anneau, par exemple, simplement en définissant des opérations (opérateurs) sur eux. Il vous incombera toutefois de garantir que les opérations que vous définissez sont effectivement conformes aux axiomes groupe/anneau.

32
répondu Thomas 2009-02-24 04:12:07

Mathematica a beaucoup de fonctions utiles pour traiter avec des concepts d'algèbre abstraite. Malheureusement, c'est un logiciel propriétaire et très cher. Sage est une alternative libre, qui a aussi un assez bon répertoire de fonctions d'algèbre abstraite, bien que je ne l'ai pas utilisé aussi largement, donc je ne peux pas commenter beaucoup plus à ce sujet.

4
répondu Adam Rosenfield 2009-02-24 04:23:01

Si vous jouez avec des groupes, vous pouvez les visualiser à l'aide de Groupe explorer.

4
répondu huitseeker 2009-11-19 21:47:03

Toute langue avec des entiers non signés de taille fixe (par exemple. le type unsigned int dans C) est un exemple d'une telle implémentation. L'Addition avec des valeurs non signées est essentiellement la même que l'addition sur Z232 (ie. les entiers modulo 232), ce que vous apprenez probablement dans votre classe d'algèbre abstraite.

L'ajout modulaire sur un tel groupe n'est pas terriblement intéressant, cependant. Plus intéressant pourrait être l'addition modulaire sur un groupe de taille N où N a le premier facteurs autres que 2, ou taille P où P est un premier. Pour expérimenter avec de tels groupes, vous devrez peut-être implémenter de telles opérations arithmétiques vous-même (ce n'est pas difficile). Les langues avec surcharge de l'opérateur peuvent rendre l'implémentation beaucoup plus pratique à utiliser.

3
répondu Greg Hewgill 2009-02-24 04:11:46

Utilisez la langue qui a le plus de sens pour vous. L'algèbre abstraite contient beaucoup de manipulation de symboles (poussée de symboles) et de réécriture, une quantité modeste d'induction et une bonne quantité d'ennui. Pour moi, cela ressemble à la logique ou à la programmation fonctionnelle; Epigram et Agda en font un peu, et Haskell le fait dans une certaine mesure (bien que je ne sois pas d'accord que monoid soit correct, mzero et mappend OK, mconcat: mauvais). Pour l'algèbre abstraite, le meilleur langage de programmation est Definition notebook et des tonnes de papier. Bien que celui-ci devienne assez ésotérique ces jours-ci.

3
répondu 2009-03-12 13:03:02

Hmm ... désolé de le dire, mais je ne pense pas qu'il soit efficace d'apprendre un nouveau langage de programmation afin de vous aider à apprendre l'algèbre abstraite.

Oui, Les Haskellers aiment parler de théorie des catégories, mais ce n'est pas vraiment un bon point de départ.

ÉCART et co. sont utilisés pour aider grandi groupe de théoriciens à trouver de nouveaux "monstres" - ils sont de mauvais outils pour apprendre la théorie des groupes.

Peut-être que vous pouvez jeter un oeil à ceci: http://freecomputerbooks.com/mathAlgebraBooks.html - là beaucoup de livres gratuits autour de ce sujet.

3
répondu Carsten 2013-06-07 05:47:06

Il est un peu surprenant que jusqu'à présent personne n'ait mentionné CoCoA (un acronyme pour les calculs en algèbre Commutative), un lien vers le site principal: http://cocoa.dima.unige.it/ où l'on peut télécharger le plus récent CoCoA 5.0 pour les principales plates-formes (Linux, MacOS X, Windows), (un manuel utile pour CoCoA 4.7 peut également être trouvé là, pour 5.0 doit être mis à jour).
Un système d'algèbre informatique disponible gratuitement (écrit en C) en cours de développement depuis plus de 20 ans. Ses cibles sont applications professionnelles et scientifiques, parmi lesquelles les calculs de bases de Gröbner, la factorisation polynomiale, l'algèbre linéaire exacte, les fonctions de Hilbert,les idéaux toriques, etc.

Il existe de bonnes monographies comme L'algèbre Commutative computationnelle (2 vol.) par Kreutzer et Robbiano traitant du cacao: http://cocoa.dima.unige.it/kr/

Dans le domaine de l'algèbre commutative, il a des fonctionnalités plus avancées et spécialisées que Mathematica, bien que dans M il y ait brillant capacités (absentes dans CoCoA) pour l'élimination du quantificateur (utile pour traiter les systèmes d'équations polynomiales et d'inégalités): http://www.wolfram.com/learningcenter/tutorialcollection/AdvancedAlgebra/.

2
répondu Artes 2011-12-18 13:54:25

Le seul livre de langage informatique que j'ai lu qui essaie de traiter sérieusement des concepts D'algèbre abstraite est Science et ingénierie C++: une Introduction avec des Techniques avancées et des exemples par John J. Barton, Lee R. Nackman.

C'est un bon livre sur C++, bien que assez vieux.

Je ne peux pas dire si l'approche est mathématiquement correcte à 100%.

1
répondu alfC 2018-06-09 08:35:33

Dans la même veine que la réponse de Greg, les groupes ont une belle représentation sous la forme d'une multiplication matricielle, donc vous voyez souvent des exemples faits en utilisant matlab ou des outils similaires...

0
répondu dmckee 2009-02-24 03:38:06

EAAM c'est un paquet spécifique à mathematica et peut également être installé.

0
répondu Rorschach 2013-04-13 18:49:38