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:
Caso general
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 esto finalizamos las búsquedas