Hace unos años publiqué en este blog un estudio sobre las sumas de cubos cuyas bases suman cero. Lo restringí a las sumas de tres cubos.
Releyendo la
entrada he visto que le sobra mucho material y que algunos aspectos de la
cuestión no están bien explicados. Regresamos a ella para completarla y
quitarle cuestiones poco interesantes.
Comenzaba
así:
Otro estudio más que se basa en mis cálculos en
Twitter (@connumeros). El día 22/3/2020 publiqué:
22320 se puede representar mediante dos sumas de cubos
cuyas bases suman 0:
22320=(-16)^3+(-15)^3+31^3, con 31+(-15)+(-16)=0
22320 =(-60)^3+(-2)^3+62^3 y 62+(-2)+(-60)=0
No son
muchos relativamente los números que cumplen una propiedad similar.
Comenzaremos con aquellos que presenten suma de cubos cuyas bases sumen cero al
menos una vez. El primero es el 6, que se puede representar como
6=2^3+(-1)^3+(-1)^3, con 2+(-1)+(-1)=0
Función adecuada
Todo el
planteamiento del problema se basa en que N sea entero positivo, pues el caso
contrario es equivalente en su planteamiento. Para que la suma de bases sea
cero y la de cubos positiva deberá existir un cubo positivo y dos negativos,
pues en ese caso la base del positivo será la suma de las los negativos, es
decir, que el esquema de la suma sería (p+q)^3-p^3-q^3. Cualquier otro
planteamiento daría suma no nula o negativa.
Para la
búsqueda que sigue es preferible llamar p a la base del cubo positivo y a las
negativas -q y –(p-q). Cualquier otra nomenclatura también nos serviría. Así que
trabajaremos con el esquema N=p3-q3-(p-q)3,
con p>q
Si partimos
de esa igualdad, desarrollando, N=p3-q3-(p3-3p2q+3pq2-q3)=3p2q-3pq2=3pq(p-q).
Equivale a afirmar que N es el triple del producto de los valores absolutos de
las bases de los cubos
Esta
expresión 3pq(p-q) nos servirá para construir una parada en la búsqueda,
exigiendo que 3pq(p-q)<=N para cada valor de p y q y que en el caso de la
igualdad haga finalizar la búsqueda. Es más rápido así. También nos indica que
N ha de ser múltiplo de 6, ya que pq(p-q) es siempre par.
Versión para Excel
La siguiente
función actúa sobre un número natural y devuelve una cadena de texto, que puede
estar vacía o contener la primera solución que se encuentre. Este es su
listado:
Function cubossum(n)
Dim i, j, a
Dim es
Dim s$
If n Mod 6 <> 0 Then cubossum = "":
Exit Function ‘Da salida si no es múltiplo de 6
es = False ‘Parará el proceso si se encuentra solución
i = 1 ‘Contador
para la variable p
s = ""
‘Cadena de texto para el resultado
a = 0 ‘Contendrá la suma de cubos
While a <= n And Not es ‘Se para si
se llega a n o se encuentra una suma
j = 1 ‘Contador de la variable q
While j < i And Not es
a = 3 * i * j * (i - j) ‘Expresión
buscada
If a = n Then es = True: s = s + Str$(j) + Str$(i) ‘Se
encuentra solución
j = j + 1
Wend
i = i + 1
Wend
cubossum = s
End Function
Con esta función podemos organizar una búsqueda de aquellos números que presentan la descomposición buscada. Los primeros son:
Cada número encontrado viene acompañado del valor de q y el de p. Así, para 210, q=2 p=7, luego 210 = 73-23-(7-2)3 = 73-23-53 = 343-8-125 = 210
Un listado
más completo es
6, 18, 36,
48, 60, 90, 126, 144, 162, 168, 210, 216, 252, 270, 288, 330, 360, 378, 384,
396, 468, 480, 486, 540, 546, 594, 630, 720, 750, 792, 816, 858, 918, 924, 972,
990, 1008, 1026, 1140, 1152, 1170, 1260, 1296, 1344, 1386, 1404, 1518, 1530,
1560, 1620, 1638, 1656, 1680, 1728, 1800…
Hemos
publicado esta sucesión en https://oeis.org/A333821
Todo esto se
puede traducir al lenguaje PARI:
ok(n) =
{my(i=1,a=0,m=0,j);if(n%6==0,while(a<=n&&m==0,j=1;while(j<i&&m==0,a=3*i*j*(i-j);if(a==n,m=1);j+=1);i+=1));
m}
{for(p=1,2000,if(ok(p),print1(p,",
")))}
Si lo pruebas en https://pari.math.u-bordeaux.fr/gp.html obtendrás la lista de los primeros números que cumplen esta descomposición:
6, 18, 36,
48, 60, 90, 126, 144, 162, 168, 210, 216, 252, 270, 288, 330, 360, 378, 384,
396, 468, 480, 486, 540, 546, 594, 630, 720, 750, 792, 816, 858, 918, 924, 972,
990, 1008, 1026, 1140, 1152, 1170, 1260, 1296, 1344, 1386, 1404, 1518, 1530,
1560, 1620, 1638, 1656, 1680, 1728, 1800,…
Algoritmo más rápido
En el
anterior planteamiento no se aprovecha el hecho de que p, q y p-q son divisores
de N/3 y por eso en los bucles de búsqueda se prueban demasiados valores
inútiles. En la siguiente versión se consigue más velocidad, y se han añadido
al resultado todas las posibilidades de forma más clara, así como el añadido al
principio del número de soluciones, Este sería el listado de la nueva función:
Function cubossum2$(n)
Dim p, q, r, m
Dim s$
If n Mod 6 <> 0 Then cubossum2 = "NO":
Exit Function
s = " sol: "
m = 0 ‘Nuevo: contador de soluciones
For p = 2 To n / 3
If n / p = n \ p Then ‘Sólo se
admite p si es divisor
For q = 1 To p - 1
If n / q = n \ q Then ’ También q ha de ser divisor
r = p – q ‘Tercera base de cubos
‘Prueba para identificar una solución y su
incorporación
If n = 3 * p * q * r And r <= q Then m = m + 1: s =
s + " # " + ajusta(p) + "^3+(-" + ajusta(q) +
")^3+(-" + Str$(r) + ")^3"
End If
Next q
End If
Next p
s = Str$(m) + s ’Se incorpora el contador de
soluciones
cubossum2 = s
End Function
Así quedan las primeras soluciones, con más información que en la función anterior:
Ahora se perciben mejor las soluciones múltiples, que serán objeto del siguiente apartado.
Resultados múltiples
Algunos de
estos números presentan varias descomposiciones. El primero es 90, que admite
las dos sumas 90=5^3-3^3-2^3 y 90=6^3-5^3-1^3. Después le siguen estos:
Si adaptamos
a PARI obtenemos un listado más extenso:
90, 630,
720, 1170, 1260, 1386, 2430, 2640, 3024, 3060, 3168, 3366, 3570, 4446, 5040,
5760, 5940, 6210, 6300, 6930, 8910, 9360, 10080, 11088, 11250, 12480, 12870,
12960, 14490, 14742, 16380, 17010, 18018, 18270, 18810, 19440, 19890, 21120,
22140, 22320, 23310, 24192, 24480, 24570, 25344, 25740, 26928, 27360, 27720,
28560, 29700, 30870, 31590, 31920, 34020, 35568, 36630, 37296, 37422, 39330,
40320, 41328, 42120, 42840, 43056, 44460, 45408, 46080, 47250, 47520, 49680,…
Se ha usado
el código
ok(n) =
{my(p,q,r,m=0);if(n%6==0,for(p=2,n/2,if(n%p==0,for(q=1,p-1,if(n%q==0,r=p-q;if(n==3*p*q*r&&r<=q,m+=1))))));
m}
{for(p=1,30000,h=ok(p);if(h>1,print1(p,",
")))}
Destaca el 720 con tres descomposiciones:
720=10^3-6^3-4^3=12^3-10^3-2^3=16^3-15^3-1^3
El primero
con 4 es 19440:
19440=30^3+(-18)^3+(-12)^3=36^3+(-30)^3+(-6)^3=48^3+(-45)^3+(-3)^3=81^3+(-80)^3+(-1)^3
Con cinco
hemos obtenido el 55440, equivale a estas sumas:
55440=42^3+(-22)^3+(-20)^3=44^3+(-30)^3+(-14)^3=55^3+(-48)^3+(-7)^3=70^3+(-66)^3+(-4)^3=80^3+(-77)^3+(-3)^3
Lo dejamos
aquí, porque nuestros instrumentos de cálculo se ralentizan con números
grandes. En la siguiente entrada estudiaremos el caso de cuatro cubos.
No hay comentarios:
Publicar un comentario