11 votos

Forma real de aprender álgebra algorítmica / computacional / computacional

De fondo

Yo tengo experiencia en resumen álgebra conmutativa y esquema básico de la teoría como cubiertos en Atiyah/Macdonald y las notas de Ravi Vakil. Lo que no tengo absolutamente nada de fondo es la informática y la programación.

Sin embargo, me gustaría auto-aprender algunos algorítmica o de álgebra computacional. Agradecería a ver algunas recomendaciones de libros sobre estos temas.

Los libros, que yo sepa

Lo que parece ser bastante estándar, pero no muy profundo en el álgebra de lado y no de manera explícita en el lado de la implementación (que quiero aprender) es el libro de los Ideales, de las Variedades y de los Algoritmos de la Cox, Poco y O'Shea.

También sé sobre el libro de UN SINGULAR Introducción al álgebra conmutativa por Greuel y Pfister. Parece ser mucho más en profundidad en el álgebra lado --- que cubran por ejemplo álgebra conmutativa más arbitraria de la base de los anillos, no sólo de los campos --- y que está estrechamente conectado a la CAS SINGULAR.

También hay un tres tomos del libro Computacional Álgebra Conmutativa por Kreuzer y Robbiano de trabajo con el CAS de Cacao.

Además de los libros de Álgebra computacional hay libros sobre constructivo álgebra (que yo también estoy interesado en) como Álgebra Conmutativa: Métodos Constructivos por Lombardi y Quitté un Curso en la construcción de Álgebra por las Minas, Richman y Ruitenburg. Estos trabajos puramente constructiva, pero no hace explícitos los algoritmos que se pueden extraer de las pruebas.

Mis Preguntas

Es importante tener un libro se centra en uno de CAS explícitamente?

A partir de esto surgen dos preguntas más:

Que CAS debo decidir?

Hay muchas opciones aquí y yo no estoy seguro de si son, básicamente, todo el mismo o si hay diferencias importantes y que prefiere.

De dónde viene la experiencia en programación?

Supongamos que acaba de aprender acerca de las bases de Gröbner y el algoritmo de Buchberger. Yo podría implementar alguna versión del algoritmo de cálculo y bases de Gröbner de dos o tres más o menos complicadas ideales. Y entonces? ¿Es esto todo? Pasar al siguiente tema? Aunque quiero aprender para el pensamiento computacional, no es el caso que cada día me encuentro con problemas que sólo pueden ser resueltos con un ordenador. Entonces, ¿dónde los problemas a resolver y ganar experiencia?

Cómo comprobar si he escrito bien el código?

Este es, quizás, más un equipo de la ciencia de que se trate. Pero científicos de la computación probablemente tiene a la mano en los ejercicios para la universidad o para donde obtener retroalimentación. Si escribo el peor y más ineficiente código que uno puede pensar, que sigue de alguna manera funciona - ¿cómo debo saber?

8voto

Gracias por la interesante y cuidadosamente formulado la pregunta, y para los detalles en su fondo. Su situación no es infrecuente - con el crecimiento de las computacional disciplinas (biología computacional/química/física/etc., la bioinformática, las humanidades digitales, etc.) muchos investigadores han de aprender a programar en el trabajo, sin ningún entrenamiento formal durante sus estudios de grado. A continuación voy a tratar de dar algunos consejos aplicables a álgebra computacional. Después de leer el 1er dos párrafos, pensé que la respuesta sería ir más allá de la mera recomendación de un libro, y de hecho ya han anticipado algunas instrucciones adicionales en sus preguntas.

En principio, uno podría ser un investigador en algoritmos, sin hacer la programación real. Por ejemplo, se podría estudiar la complejidad de los algoritmos y su comportamiento asintótico que estará más allá de cualquier viable equipo implementaciones. Por otro lado, la programación de habilidad sería una ventaja. Puede ayudar en la comprensión de cómo presentar los algoritmos para su implementaciones prácticas, o para encontrar el peor de los casos el rendimiento de ejemplos; puede permitir a jugar con cosas para comprobar los hechos y comprender mejor la teoría, y para encontrar ejemplos y contraejemplos. Así que me apoyo mucho tu intención.

Ahora las preguntas específicas.

Es importante tener un libro se centra en uno de CAS explícitamente?

No, no lo es. Un libro dedicado a un particular CAS puede incluso no existir en un área pertinente. Los libros son sin duda importantes, pero no sólo ellos. Teórico descripciones en el libro de texto podría ser muy alto nivel y no haciendo alusión a aspectos sutiles de su aplicación práctica. Código proporcionado con los libros de texto no se puede ejecutar en la siguiente versión del software. También es importante echar un vistazo a los manuales, materiales de enseñanza, los comentarios en el código, o el propio código (siempre que el sistema es de código abierto).

Que CAS debo decidir?

Depende de su área de investigación, en el problema de la(s) que desea trabajar, y en la disponibilidad de la funcionalidad relevante en CAS apropiados. Un factor importante es el ser de código abierto. Además de la CAS, que me recomiendan para aprender al menos un lenguaje de programación de propósito general, por ejemplo Python. Tiene una gran comunidad y un montón de materiales de enseñanza disponibles. Si usted puede necesitar para aprender varios CAS, es mejor empezar a aprender con el que tiene una menor curva de aprendizaje empinada, parece más fácil de usar, tiene una comunidad activa, accesible materiales de enseñanza, etc. Usted puede desear mirar en Singular, Macaulay2, GAP, SageMath, ...

De dónde viene la experiencia en programación?

La lectura de código existente, preferiblemente corto y funciones documentadas, es útil, pero no es suficiente. Usted necesita a la realidad práctica en la escritura de su propio código. Tomar algún algoritmo y tratar de implementar desde cero. Compruebe que el resultado coincide con la teoría y/o implementación existente. De hecho, ¿por qué no tratar de implementar el algoritmo de Buchberger en Singular? Usted no tendrá que volver a poner en práctica todo lo puesto Singular suministro de usted con polinomios, por lo que se iniciará con las de nivel alto, y va a aprender mucho acerca de su funcionalidad en el proceso. Incluso si va a ser que no funciona tan bien como el Singular de uno, que sería un buen ejercicio (Nota de que la BRECHA también tiene una base de Groebner de aplicación, aunque no es un desempeño tan bueno como el Singular).

Cómo comprobar si he escrito bien el código?

Me gustaría reformular como "¿Cómo aprender a escribir un buen código" al intentar utilizar algunas de las buenas prácticas desde el principio. Usted puede encontrar algunos consejos útiles buscando los informes procedentes de diversas "¿Qué hace a un buen código de buenas" debates sobre el Software de Sostenibilidad de la página web del Instituto aquí (por ejemplo, ver aquí y allí). Recomiendo asistir a algunas de Software taller de Carpintería para aprender más acerca de estas prácticas.

Además, es útil seguir las listas de correo y Q&A sitios para la CAS de su interés, póngase en contacto con su comunidad de usuarios y desarrolladores (por ejemplo, en eventos como la BRECHA de días o SageMath días o en eventos de capacitación, tales como escuelas de formación). Si el sistema tiene un problema tracker, tal vez algunas cuestiones que están etiquetados como amigable para los recién llegados (como lo hacemos en la BRECHA de aquí) así que usted puede intentar para trabajar en ellos y, a continuación, obtener algunos comentarios.

Espero que esta ayuda - por favor, pregunte si le gustaría discutir esto más!

1voto

Dima Pasechnik Puntos 253

No hay un libro que cubre todos los aspectos de álgebra computacional, ni siquiera un libro que cubra adecuadamente más de un aspecto. Es decir, en ningún orden en particular que uno tiene aquí:

  1. Álgebra conmutativa/clásicos de la geometría algebraica
  2. Computacional teoría de grupos
  3. Computacional de la teoría de números
  4. Cálculo simbólico, por ejemplo, integración simbólica
  5. Computacional de la geometría algebraica real: momento de métodos numéricos homotopy métodos, ...
  6. ...

Todos estos temas están interconectados y algunos de ellos son muy interesantes y que participan por sí mismos, por ejemplo, 2) consta de algoritmos para la permutación de grupos, para finitely presentado los grupos, para la teoría de la representación, solubles, por grupos, de los p-grupos...

Con su fondo, me gustaría empezar con Macaulay2 y la disponible en línea libro, que le daría una idea acerca de 1).

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X