martes, 4 de febrero de 2025

Regresos 14 – (1) Bases de tres cubos con suma cero

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: