12 votos

Sistema de álgebra computacional para simplificar la enorme funciones racionales (del orden de 100 Mbytes)

Tengo una enorme racional en función de tres variables (que es del orden de ~100Mbytes si se vierte en un archivo de texto) que creo que pueden ser idéntica a cero. Desafortunadamente, ninguno de los Mathematica ni de Arce logró simplificar la expresión a cero.

He sustituido un conjunto aleatorio de tres números enteros a la función racional y de hecho se evalúa a cero; pero sólo por curiosidad, me gustaría usar un sistema algebraico por computadora para simplificar. Que sistema de álgebra computacional debo usar? He oído hablar de Magma, Macaulay2, singular, GAP, sage para la lista de unos pocos. Cuál es el más adecuado para simplificar una gran expresión racional?


En caso de que usted desea para tratar de simplificar las expresiones de ti, que me dejó disponible en dos notaciones, Mathematica notación y Arce notación. Descomprimir el archivo y hacer

<<"big.mathematica"

o

read("big.maple")

desde el shell interactivo. Esta carga expresiones llamado gauge y cft, tanto en las funciones racionales de a1, a2 y b. Cada uno de los cuales es distinto de cero, pero creo gauge=cft. Así que usted debe ser capaz de simplificar gauge-cft a cero. La relación viene de una cadena de dualidad, ver, por ejemplo, en este documento, M. Taki.

15voto

Robert Christie Puntos 7323

Mathematica puede demostrar que gauge-cft es exactamente cero.

Para llevar a cabo la prueba observar que la expresión de gauge es mucho menor que el cft. Por lo tanto, nosotros en primera normalizar gauge uso de Together, y luego se multiplica cft por el denominador:

enter image description here

9voto

wsb3383 Puntos 1336

Altamente recursivo expresiones racionales es mejor factor. Aquí está una Arce programa que lo hace en 3 minutos sobre un Core i7 2600, sugerido por Mike Monagan:

rec := proc(a) option remember;
  if type(a,{`*`,`+`}) then
    factor(map(rec, a));
  elif type(a,`^`) then
    rec(op(1,a))^op(2,a);
  else a;
  end if;
end proc:

read "big.maple":
CodeTools:-Usage(rec(gauge - cft));  # returns zero
memory used=24.06GiB, alloc change=276.79MiB, cpu time=3.53m, real time=3.00m

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