computer-science - programas - wolfram wikipedia
Álgebra abstracta y programación (10)
Hmm ... lamento decirlo, pero no creo que sea eficaz aprender un nuevo y elegante lenguaje de programación para ayudarte a aprender álgebra abstracta.
Sí. A los Haskellers les encanta hablar de teoría de categorías, pero este no es realmente un buen punto de partida.
GAP y co. se utilizan para ayudar a los teóricos de grupos adultos a encontrar nuevos "monstruos": son malas herramientas para aprender la teoría de grupos.
Quizás puedas echarle un vistazo a esto: http://freecomputerbooks.com/mathAlgebraBooks.html - hay muchos libros gratuitos sobre este tema.
Voy a empezar a aprender Álgebra abstracta: grupos, anillos, etc. Me interesa saber cualquier lenguaje de programación, si es que me ayuda a aprender / probar los conceptos que aprendo en teoría.
EDITAR: Realmente no estoy buscando implementar lo que aprendo. Estoy interesado en conocer cualquier idioma que ya los apoye.
Gracias.
El texto que desea aquí es Resumen de álgebra, un enfoque computacional de Chuck Sims. El autor recomendará que use el lenguaje de programación APL . El libro está agotado, pero probablemente pueda encontrarlo en su biblioteca.
También existe el Sistema de Álgebra GAP Computer que es divertido de usar para la teoría de grupos.
Recursos avanzados:
Magma : CAS bastante sofisticado que puede manejar una amplia gama de conceptos de álgebra abstracta.
Macaulay 2 : se usa para estudiar anillos polinomiales, especialmente bases de Gröbner .
SINGULAR : utilizado para estudiar anillos polinomiales.
Un hecho clave en el estudio de la teoría de grupos es que cada grupo es isomorfo a un grupo de permutación por la acción regular. Por lo tanto, la clave para entender la teoría de grupos es comprender los grupos de permutación.
Finalmente, cualquier lenguaje que soporte la definición de sus propios objetos y la definición de un operador binario en dos instancias del objeto, apoyará el aprendizaje de la teoría a través de la programación.
En una línea similar a la respuesta de Greg, los grupos tienen una buena representación en la forma de una multiplicación de matrices, por lo que a menudo se ven ejemplos de uso de herramientas de Matlab o similares ...
Tal vez una interpretación ligeramente diferente de su pregunta, pero aún así ... El lenguaje funcional Haskell usa conceptos de álgebra (particularmente la teoría de categorías) como mónadas, monoides, flechas y otras cosas.
Usando las clases de tipos de Haskell, también puedes hacer cualquier objeto en un grupo, o un anillo, por ejemplo, simplemente definiendo operaciones (operadores) sobre ellos. Sin embargo, será su responsabilidad garantizar que las operaciones que defina realmente cumplan con los axiomas de grupo / anillo.
Mathematica tiene muchas funciones útiles para tratar con conceptos en álgebra abstracta. Desafortunadamente, es un software propietario y muy caro. Sage es una alternativa gratuita, que también tiene un repertorio bastante bueno de funciones abstractas de álgebra, aunque no lo he usado de manera exhaustiva, así que no puedo comentar mucho más al respecto.
Cualquier lenguaje con enteros sin signo de tamaño fijo (por ejemplo, el tipo unsigned int
en C) es un ejemplo de dicha implementación. La suma con valores sin signo es esencialmente lo mismo que la suma sobre Z 2 32 (es decir, el número entero 2 32 ), de lo que probablemente esté aprendiendo en su clase de álgebra abstracta.
La adición modular sobre tal grupo no es terriblemente interesante, sin embargo. Más interesante podría ser la adición modular sobre un grupo de tamaño N donde N tiene factores primarios distintos de solo 2, o tamaño P donde P es un primo. Para experimentar con tales grupos, puede que tenga que implementar esas operaciones aritméticas usted mismo (no es difícil). Los idiomas con sobrecarga del operador pueden hacer que la implementación sea mucho más cómoda de usar.
Usa el lenguaje que tenga más sentido para ti. El álgebra abstracta contiene una gran cantidad de manipulación de símbolos (empujando símbolos) y reescritura, una modesta cantidad de inducción y una gran cantidad de tediosidad. Para mí eso suena como programación lógica o funcional; Epigram y Agda hacen un poco de esto, y Haskell lo hace hasta cierto punto (aunque no estoy de acuerdo en que monoid sea correcto, mzero y mappend están bien, mconcat: malo). Para el álgebra abstracta, el mejor lenguaje de programación es el cuaderno Definición y el papel toneladas. Aunque este se está volviendo bastante esotérico en estos días.
Si está jugando con grupos, puede visualizarlos usando el Explorador de grupos .
Es un poco sorprendente que hasta ahora nadie haya mencionado CoCoA (acrónimo de Computations in Comvative Algebra), un enlace al sitio principal: http://coco.dima.unige.it/, donde uno puede descargar el último CoCoA 5.0. para las principales plataformas (Linux, MacOS X, Windows), (también se puede encontrar un útil manual para CoCoA 4.7, para 5.0 se debe actualizar).
Un sistema de álgebra computarizada disponible gratuitamente (escrito en C) está siendo desarrollado por más de 20 años. Su objetivo son las aplicaciones profesionales y científicas, entre ellas los cálculos de las bases de Gröbner, la factorización polinómica, el álgebra lineal exacta, las funciones de Hilbert, los ideales tóricos, etc.
Hay buenas monografías como Computational Comvative Algebra (2 vol.) De Kreutzer y Robbiano que tratan de CoCoA: http://cocoa.dima.unige.it/kr/
En el campo del álgebra conmutativa tiene una funcionalidad más avanzada y especializada que Mathematica, aunque en M hay capacidades brillantes (ausentes en CoCoA) para la eliminación del cuantificador (útil en el tratamiento de sistemas de ecuaciones polinomiales y desigualdades): http: // www. wolfram.com/learningcenter/tutorialcollection/AdvancedAlgebra/ .
EAAM es un paquete matemático específico y se puede instalar también.