El algoritmo PSLQ e identificación de números

El algoritmo PSLQ se usa para resolver aproximadamente ecuaciones con coeficientes enteros $latex a_i$ de la forma

$$ \sum_i a_i x_i = 0$$

donde, obviamente, no todos los $latex a_i$ son cero. Aproximadamente significa que la solución se busca dentro de un cierto nivel de tolerancia.

No existe, que yo sepa, una implementación en R. Pero sí en Python, usando librerías que permiten utilizar números de precisión arbitraria, como [mpmath](https://code.google.com/p/mpmath/). Veamos un ejemplo:

from mpmath import *
pslq([-1, pi], tol=0.01)
# [22, 7]

La respuesta obtenida significa que

$$ | -22 + 7 \pi | < 0.01, $$

es decir, que la fracción 22/7 aproxima el valor de $latex \pi$ con un error inferior al 1 %.

Y esta es sólo una de las posibilidades que ofrece el algoritmo PSLQ y más en general, la librería mpmath. Muchas de las que encuentro más sorprendentes están recogidas en el capítulo Number identification de la documentación de mpmath.