Hoy en día un amigo y yo mismo ocurrió con la cuestión de la computación en las particiones de números, es decir: dado un número$n$, ¿cuál es el número de $p(n)$ era de las diferentes formas de escritura $n$ como una suma no cero enteros (donde los desplazamientos de los dos términos en la suma cuenta como un único camino)?
No sabemos de ninguna de las fórmulas para ello. Actualmente estoy tratando de escribir un bruteforce (computacional) planteamiento del problema, pero yo quería preguntarle sobre otro más sofisticada forma de atacar el problema (todavía con un ordenador).
Es bien conocido que $$\sum_{n=0}^\infty p(n)x^n = \prod_{k=1}^\infty\frac{1}{1-x^k}$$ La idea que tenemos es la de proceder de la siguiente manera:
- $\log\left(\prod_{k=1}^\infty\frac{1}{1-x^k}\right) = -\sum_{k=1}^\infty\log(1-x^k) = -\sum_{k=1}^N\log(1-x^k) + O(x^{N+1})$ cuando se utilizó la expansión de Taylor de $\log$ $1$ para obtener el término de error.
- $\prod_{k=1}^\infty\frac{1}{1-x^k}\approx \exp\left(\sum_{k=1}^N\log(1-x^k)\right) =: F(x)$ con algún término de error.
- Evaluar $F$ algunos $x$ cerca de cero (por lo que los términos de orden superior no son relevantes) y el uso polyfit (mínimos cuadrados) para obtener el coeficiente de $x^n$, es decir,$p(n)$.
Ahora mis preguntas son las siguientes:
- Sería este método (o algo similar)?
- ¿Cuál sería el término de error en el punto (2.) parecen?
- Cómo elegir a $N$ y los puntos de $x$ donde evaluamos $F$ en el paso (3.) de manera que el error es menor que decir $0.1$ en la final? Observe que la pregunta anterior está estrechamente relacionado con éste.
- ¿Cuál sería la complejidad del algoritmo resultante?
- ¿Cómo son las $p(n)$ calculado normalmente?
Gracias de antemano por la ayuda.