martes, 18 de febrero de 2025

Regresos 14 – (2) Bases de cuatro cubos con suma cero

 En la anterior entrada estudiamos las sumas de cubos cuyas bases suman cero. En esta otra ampliaremos el estudio a cuatro cubos.         

Sumas con cuatro cubos

Algunas consideraciones relativas a las sumas de tres cubos cuyas bases suman cero son válidas para el caso de las sumas de cuatro cubos. La más importante es la de que el número que equivale a la suma de cubos ha de ser múltiplo de 6.

Distinguiremos dos casos, según sean los signos de las bases de los cubos.


Dos positivos y dos negativos

Si el esquema de los cuatro cubos es el de dos positivos y dos negativos, se puede intentar un estudio algebraico no muy complicado. Llamamos k a la suma de las dos bases positivas, y a ellas, p y k-p. Igualmente, podemos llamar –r y r-k a las negativas. Quedaría, pues, el valor de N como

N=p3+(k-p)3-r3-(k-r)3

N=p3+k3-p3-3k2p+3kp2-r3-k3+r3+3k2r-3kr2

N=-3k2p+3kp2+3k2r-3kr2=3k2(r-p)+3k(p2-r2)=3k(k(r-p)+(p-r)(p+r))

N=3k(p-r)(p+r-k)

Llegaríamos a una situación similar a la del caso de tres cubos, pero con un parámetro más. Por ejemplo:

30=6^3+4^3-5^3-5^3, y p=6, k=10, k-p=4, r=5 y k-r=5

30=3*10*(6-5)*(6+5-10)=30*1*1=30

30 también es igual a 43+13-33-23, y queda

30=3*5*(4-2)(4+2-5)=3*5*2*1=30

Esto abre camino a una función similar a la usada para tres cubos, pero con tres bucles de búsqueda en lugar de dos. El número N también ha de ser múltiplo de 6, porque k(p-r)(p+r-k) siempre es par.

Podemos usar esta función:

Function cubossum4$(n)
Dim p, q, r, k
Dim s$

s = ""
If n Mod 6 <> 0 Then cubossum4 = "NO": Exit Function
For k = 2 To n / 2
If n / k = n \ k Then
For p = 1 To k / 2 - 1
q = k - p
For r = 1 To k / 2
If n = 3 * k * (p - r) * (p + r - k) Then s = s + " # " + ajusta(p) + "^3+" + ajusta(q) + "^3-" + Str$(r) + "^3-" + Str$(k - r) + "^3"
Next r
Next p
End If
Next k
If s = "" Then s = "NO"
cubossum4 = s
End Function

No necesita comentarios, porque es similar a las anteriores.

Con ella conseguimos un listado de soluciones, todas ellas con dos cubos positivos y dos negativos:


Un cubo positivo y tres negativos

El otro caso de cuatro cubos presentaría este otro esquema

N=(p+q+r)3-p3-q3-r3

Esto obliga a que N sea par, pues así es para todos los juegos de paridad de p, q y r.

También es múltiplo de tres, ya que desarrollando esa diferencia llegamos a

N=3x2y+3x2z+3xy2+6xyz+3xz2+3y2z+3yz2

En este caso no es seguro que algún parámetro sea divisor de N, por lo que la búsqueda recorrerá más números. Sí ocurrirá que x, y, z serán menores que N/3.

Podemos usar esta función:

Function cubossum3(n)

Dim i, j, k

Dim s$

s = ""

If n Mod 6 <> 0 Then cubossum3 = "NO": Exit Function

For i = 1 To n / 3

For j = 1 To i

For k = 1 To j

If (i + j + k) ^ 3 - i ^ 3 - j ^ 3 - k ^ 3 = n Then

s = s + "## " + Str$(i + j + k) + "^3-" + Str$(i) + "^3-" + Str$(j) + "^3-" + Str$(k) + "^3"

End If

Next k

Next j

Next i

If s = "" Then cubossum3 = "NO" Else cubossum3 = s

End Function

 

También en este caso dispondremos de bastantes resultados:



Hemos avanzado en la tabla hasta descubrir soluciones múltiples.

 

Caso general

 Si no nos apetece el estudio algebraico, podemos usar tan solo que las bases sean, en valor absoluto, menores que N/3

Buscaremos tres cubos de base entera cuya suma se aproxime a N. A las tres bases de esa suma le añadiremos otra que con ellas forme suma cero. Si los cuatro cubos suman N, habremos resuelto la búsqueda. Parece lento, pero no es tanto como se podría esperar.

 

Function cubossum0(n)

Dim i, j, k, h

Dim s$

 

s = ""

If n Mod 6 <> 0 Then cubossum0 = "NO": Exit Function

'Usamos tres bucles para las tres primeras bases i, j y k

For i = -n / 3 To n / 3

For j = i To n / 3

For k = j To n / 3

h = -i - j - k 'h será la cuarta base para suma nula

If i ^ 3 + j ^ 3 + k ^ 3 + h ^ 3 = n And h >= k Then 'Se cumple la condición

s = s + "# " + Str$(i) + ", " + Str$(j) + ", " + Str$(k) + ", " + Str$(h)

End If

Next k

Next j

Next i

If s = "" Then cubossum0 = "NO" Else cubossum0 = s

End Function

 Con esta función obtenemos todas las soluciones al problema, las más frecuentes, del tipo de dos cubos positivos y dos negativos, el resto, como el 108, con un solo cubo positivo e, incluso, casos de tres cubos, cuando uno de ellos resulte nulo. Estos son los primeros resultados:

 


Con esto finalizamos las búsquedas

 

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.