9 votos

Qué sistema de álgebra computacional debo utilizar para resolver grandes sistemas de ecuaciones lineales dispersos sobre un campo?

Esto está relacionado con Noé reciente de la pregunta acerca de la solución cuadráticas en un campo de número, pero se trata de una más temprana y más fácil el paso.

Supongamos que tengo un enorme sistema de ecuaciones lineales, decir ~10^6 ecuaciones en ~10^4 variables, y tengo algo de conocimiento externo que sugiere que hay un pequeño espacio de la solución, ~100 dimensiones. Por otra parte, las ecuaciones son escasos; de hecho, la forma en que me producen las ecuaciones me da un límite superior en el número de variables que aparecen en cada ecuación, ~10. (Estos números provienen de la última instancia de nuestro problema, pero esperamos que quieren probar incluso más cosas más adelante.) Finalmente, todos los coeficientes son en algún campo de número.

Que sistema de álgebra computacional debo utilizar para resolver este tipo de sistema? Todo el mundo sabe su favorito CAS, pero es a menudo difícil de obtener comparaciones útiles. Una dificultad importante aquí es que incluso escribir todas las ecuaciones ocupa una gran fracción de un equipo típico de la memoria RAM disponible.

He de admitir que hasta ahora sólo he tratado de Mathematica; es excelente para la mayoría de nuestros propósitos, pero soy muy consciente de sus deficiencias, por lo tanto esta pregunta. Un anterior ligeramente más pequeño ejemplo de nuestro problema estaba dentro de Mathematica gama, pero ahora estoy teniendo problemas.

(Para el fondo, este problema es tan simple como encontrar la "baja de peso espacios" en un grafo planar de álgebra. Véase, por ejemplo, Emily Pedro tesis para obtener una explicación, o nuestro documento de seguimiento, con Noé Snyder y Stephen Bigelow.)

4voto

jeffl8n Puntos 300

Si Magma puede hacer esto, bien podría verse en Sage, que es de código abierto, muy potente y con apoyo para sparse linear algebra.

3voto

Patrick Puntos 20392

Esto suena como un problema que realmente necesita para ejecutar a través de un fuerte solver en C, y si lo quieres para extraer fácilmente los objetos que probablemente iba a ser mejor usar un Perl C-wrapper con el MPI y el Paralelo LAPACK. Voy a mirar en fácilmente accesible matriz dispersa solucionadores de problemas, que son modulares suficiente para cambiar las entradas (oy que va a ser interesante, pero voy a echar un vistazo). Honestamente a los números que la alta yo no veo ninguna de tamaño razonable equipo que matlab o mathematica puede tratar de solucionarlo.

Estará de regreso con los resultados de búsqueda de pronto.

3voto

Patrick Puntos 20392

LinBox

Puede ser muy útil, ya que contiene rutinas para campos finitos y tiene una interfaz con Maple (que es mucho más fácil de usar que LinBox como una librería en C++).

Espero que ayude!

3voto

andynormancx Puntos 234

Probablemente hace falta decir que la resolución de sistemas lineales sobre el número de campos es, probablemente, lejos de ser uno de los más importantes a nivel de usuario la funcionalidad de los principales puntos comerciales de álgebra computacional de sistemas. Dicho esto, sé que esta funcionalidad en Arce fue escrito por alguien con un interés específico en este tipo de cosas. Si usted tiene acceso a una versión más reciente de Arce, echa un vistazo a la página de ayuda: ?SolveTools,Lineal. 10^6 es bastante grande, pero aún podría ser dentro de alcance de la persona.

Mientras, yo no sé mucho acerca de cómo Mathematica hace estas cosas, yo sé que en Arce sistemas lineales dispersos son más eficientemente resueltos como polinomios (en lugar de escaso matrices) desde subyacente polinomio de la estructura de datos resulta ser adecuado a la escasa resolución de sistemas.

Si Arce no funciona (o no tiene acceso a ella), esto me parece exactamente el tipo de problema que el MAGMA podría ser la orientación.

0voto

Steven Behnke Puntos 327

Creo que aquí es alguien que hace investigaciones relacionadas con:

http://www4.ncsu.edu/~kaltofen/Bibliography/index.html

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