martes, 9 de abril de 2013

Las sumas de cubos nos llevan a los triangulares pitagóricos.


No es la primera vez que en este blog se desarrollan ideas que han nacido a partir de las entradas de otros autores que seguimos habitualmente. En este caso partiremos de una serie de igualdades publicadas por Benjamin Vitale en el mes de de febrero.

http://benvitalenum3ers.wordpress.com/2013/02/21/sum-of-the-cubes-of-consecutive-odd-numbers-is-a-square/

En esa entrada y en otras anteriores y posteriores propone igualdades de estos tipos:

333^3 + 334^3 + 335^3 + 336^3 + 337^3 + 338^3 + 339^3 = 265559616 = 16296^2
1^3 + 2^3 + 3^3 + 4^3 + 5^3 = 225 = 15^2
1^3 + 3^3 + 5^3 + 7^3 + 9^3 = 1225 = 35^2

En todas ellas una suma de cubos equivale a un cuadrado. Unas comienzan en 1^3 y otras en números mayores, y una de ellas sólo se refiere a números impares. Como ya tocamos un tema parecido en nuestra entrada sobre “Cubos y gnomones” (ver http://hojaynumeros.blogspot.com.es/2009/10/cubos-y-gnomones-1.html y las tres siguientes) nos ha apetecido ampliar un poco el tema

Suma de cubos de los primeros números naturales

Es el caso más sencillo y que ya tratamos en nuestra entrada citada:

La suma de los cubos de los n primeros números naturales equivale al cuadrado del enésimo número triangular Tn 







Puedes demostrarlo por inducción. Si no sabes cómo, aquí te darán una buena idea: http://diccio-mates.blogspot.com.es/2009/09/induccion-induccion-completa.html

Luego en estas circunstancias la propiedad de que una suma de cubos coincida con un cuadrado se cumple siempre

Suma general de cubos consecutivos

Si el comienzo de la suma no es la unidad, como en el ejemplo de Ben Vitale

333^3 + 334^3 + 335^3 + 336^3 + 337^3 + 338^3 + 339^3 = 265559616 = 16296^2

la fórmula anterior tiene una fácil adaptación:






Por tanto, si la diferencia entre esos dos números triangulares es un cuadrado, habremos obtenido un criterio para buscar todos los casos posibles.

El segundo miembro de la igualdad no invita a que intentemos igualarlo a un cuadrado y desarrollarlo algebraicamente (ahí tienes un reto), por lo que intentaremos búsquedas:

Encontrar todas las sumas de cubos consecutivos cuyo resultado sea un cuadrado, equivale a confeccionar la lista de todos los pares de números triangulares que formen parte de una misma terna pitagórica.

La razón es que su diferencia de cuadrados deberá dar otro cuadrado. Por eso forman una terna pitagórica. Con la anterior fórmula podemos programar búsquedas que nos devuelvan los casos deseados. Lo haremos en primer lugar para un número fijo de sumandos y después pasaremos al caso general. Excluimos del estudio los casos que comienzan por cero, que confundirían en el número de sumandos.

Número de sumandos prefijado

Si el número de sumandos está prefijado podemos usar un código similar al siguiente (lo expresamos en el Basic de Excel, que también vale para OOBasic, y se traduce fácilmente):

K=6 número de sumandos menos una unidad. Aquí estaríamos buscando siete sumandos
For i = inicio To final Extremos de la búsqueda
a = i * (i - 1) / 2 Triangular anterior a la suma
b = (i+k) * (i+k + 1) / 2 Triangular al final de la suma
c = Sqr(b ^ 2 - a ^ 2) Tercer lado
If c = Int(c) Then msgbox(a) Si es pitagórica se muestra el comienzo de la suma
Next i

En PARI tampoco es difícil. En cada pasada se puede cambiar el valor de k, que debe coincidir con el número de sumandos menos uno, que aquí hemos fijado en 4, así como los extremos en 1 y 1000

{for(i=1,1000,k=4;a=i*(i-1)/2;b=(i+k)*(i+k+1)/2;if(issquare(b*b-a*a),print(i)))}

Con este código obtenemos los valores iniciales para las sumas de cubos consecutivos que dan como resultado un cuadrado. En el caso del ejemplo, está preparado para cinco sumandos.

Con la hoja de cálculo o con PARI se obtienen los mismos resultados propuestos por Ben Vitale. Así que no vamos a repetir información y pasaremos al caso general.

Número de sumandos libre

Deberemos sustituir la asignación de un valor a K por un bucle. Buscaremos valores N de números triangulares que hagan de hipotenusa y para cada uno de ellos, recorreremos los valores de K menores que N para que sean catetos. Nos detendremos en N-2, porque hay que recordar que el segundo triangular es el previo a la suma.

En el Basic de las hojas de cálculo el código, fácilmente trasladable a otros lenguajes, puede ser:

For i = 5 To 400 No necesitamos más ejemplos por ahora
a = i *(i+ 1)  / 2 Creamos el triangular que hará de hipotenusa
For k = 1 To i – 2 Buscamos el cateto triangular
b = k * (k + 1) / 2
c = Sqr(a ^ 2 - b ^ 2) Calculamos el otro cateto
If c = Int(c) Then Si es cuadrado perfecto, hemos encontrado una solución
Msgbox(k + 1) Número de sumandos
Msgbox(i - k )  Inicio de la suma
Msgbox(c) Base del cuadrado buscado
End If
Next k
Next i

Con un código similar, pero que crea una tabla, hemos confeccionado ésta:



Ahí aparecen los casos particulares con los que comenzamos la entrada. Por ejemplo, 23 de inicio, con 3 sumandos se ha de engendrar el cuadrado de 204.

23^3+24^3+25^3 =204^2  Compruébalo. Aquí hemos usado nuestra querida hoja de cálculo:


En la tabla se nos ofrecen casos de hasta 291 sumandos, que no comprobaremos, pero probemos con otra fila: 25, 15 y 720, es decir, 15 sumandos a partir del 25 deberán engendrar el cuadrado de 720. Aquí lo tienes:


Con esto hemos encontrado los primeros ejemplos del caso general. Podemos ordenar la tabla según el número de sumandos, o según el inicio, y así ver mejor la evolución de las soluciones.

Si prefieres probar con PARI, usa un código similar a este:

{for(i=1,10^3,for(k=1,i-2,a=i*(i+1)/2;b=k*(k+1)/2;if(issquare(a*a-b*b),write("final.txt",k+1," ",i-k))))}

Hipotenusas triangulares

Si cambiamos las salidas del código, podemos confeccionar una tabla con las ternas pitagóricas en las que una hipotenusa y un cateto son ambos triangulares:

Esta es la sucesión de hipotenusas de este tipo:

10, 45, 136, 325, 435, 595, 630, 666, 780, 1225, 2080, 2145, 3321, 5050, 5565, 5886, 6216, 7381, 7503, 9316, 10440, 11026, 11175, 12246, 13530, 14196, 14365, 14535, 15753, 16653, 18915, 19306, 24310, 25425, 32896, 33670, 39060,…

Puedes usar PARI

{for(i=1,10^3,k=1;v=1;a=i*(i+1)/2;while(k<i&&v,b=k*(k+1)/2;if(issquare(a*a-b*b),v=0;write1("final.txt",a,", "));k+=1))}

Esta sucesión la hemos publicado en http://oeis.org/A213188

De la misma forma, se pueden encontrar los catetos triangulares con hipotenusa también triangular:

6, 36, 91, 120, 210, 253, 300, 378, 528, 630, 1176, 2016, 2346, 3003, 3240, 3828, 4560, 4656, 4950, 5460, 6105, 6903, 7140, 7260, 8778, 10296, 11628, 13530, 14028, 14196, 15400, 17766, 19110, 23220, 23436, 24310, 25200, 26796, 32640, 34980, 41616…http://oeis.org/A213189

El código PARI adecuado es

{for(i=1,10^3,k=i+1;v=1;a=i*(i+1)/2;while(k<i*i&&v,b=k*(k+1)/2;if(issquare(b*b-a*a),v=0;write1("final.txt",a,", "));k+=1))}

En la siguiente entrada veremos las sumas de cubos de impares. Aquí ya no caben.