martes, 11 de septiembre de 2018

Suma de números oblongos consecutivos

En los cálculos sobre fechas que publicamos en Twitter (@connumeros) se dio la casualidad de que dos fechas muy cercanas se podían expresar ambas como extensas sumas de números oblongos consecutivos. Así:

Día 14/5/18

14518 es suma de siete productos de números consecutivos que a su vez son consecutivos (es decir, siete oblongos consecutivos):
14518=42×43+43×44+44×45+45×46+46×47+47×48+48×49

Día 19/5/18

Se nos vuelve a presentar la suma de productos de números consecutivos que a su vez son consecutivos (es decir, oblongos consecutivos), pero esta vez son nueve, nada menos:
19518=42×43+43×44+44×45+45×46+46×47+47×48+48×49+49×50+50×51

Esta cercanía nos animó a estudiar la propiedad con cierta extensión, para ver, como es costumbre en este blog, hasta dónde nos llevarían las exploraciones sobre un tema. Es fácil ver que, al ser los números oblongos doble de los triangulares, este problema esté muy relacionado con el de sumas de números triangulares consecutivos.

Sabemos que la suma de los n primeros números triangulares es n(n+1)(n+2)/6.
(Ver https://es.wikipedia.org/wiki/N%C3%BAmero_triangular#Suma_de_los_primeros_n%C3%BAmeros_triangulares)

De aquí se deduce que en el caso de los oblongos será n(n+1)(n+2)/3. Si en la suma no se comienza desde el primer oblongo (1*2) podremos restar esta expresión aplicada al último sumando con la correspondiente al anterior al primer sumando.

Esto nos lleva a una generación de soluciones en forma de tabla de doble entrada y otra mediante una función:

Soluciones obtenidas mediante una tabla de hoja de cálculo

En la siguiente tabla hemos situado valores de n(n+1)(n+2)/3 tanto en fila como en columna. Si restamos después unos de otros nos resultarán los números que se pueden formar mediante sumas de oblongos consecutivos. Aparecerán desordenados y repetidos. Nos valen también los de la segunda fila:


Para obtener una lista ordenada es preferible una búsqueda algorítmica mediante una función. Lo vemos:

Búsqueda mediante una función

La suma entre n(n+1) y (n+k-1)(n+k), k sumandos, sería así:

 n(n+1)+(n+1)(n+2)+…..(n+k-1)(n+k)=(n+k-1)(n+k)(n+k+1)/3-(n-1)n(n+1)/3

Hemos restado la suma de los n+k-1 primeros con la correspondiente a n-1.

 Desarrollamos y queda:

Por ejemplo, 23*24+24*25+25*26+26*27+27*28=S(23,27)=3260 equivale a
5*23^2+5^2*23+(5-1)*5*(5+1)/3=3260

Este desarrollo nos da una primera condición para que un número P pueda desarrollarse como suma de oblongos consecutivos. Proseguimos:



Despejamos n en función de P:



El discriminante



ha de ser cuadrado perfecto. Esta es la primera condición para que P sea suma de oblongos. También el resultado para n ha de ser entero positivo.

Lo vemos para P=14518 y k=7, según lo publicado en Twitter:

D=12*7^2-3*7^4+36*7*14518=3651921=1911^2, luego se cumple que D es cuadrado perfecto. Sustituimos en la expresión de n y queda:

 n=(-3*7^2+1911)/(6*7)=42, que coincide con el desarrollo publicado para 14518.

Por una casualidad, 19518 también inicia su suma de oblongos en 42:

P=18518, k=9

D=12*9^2-3*9^4+36*9*19518=6305121=2511^2
  n=(-3*9^2+2511)/(6*9)=42

Este criterio nos puede servir para ver qué números se pueden descomponer en suma de oblongos consecutivos.

Tomamos el número P y probamos los criterios anteriores para los valores de k entre 1 y el máximo valor que cumpla k*(k^2-1)<3P, que es una cota fácil de deducir de las igualdades anteriores. Para cada k exigiremos que el discriminante sea cuadrado perfecto y calcularemos n para ver si es entero positivo.

Así encontraremos todos los números que sean suma de oblongos consecutivos:

2, 6, 8, 12, 18, 20, 30, 32, 38, 40, 42, 50, 56, 62, 68, 70, 72, 90, 92, 98, 104, 110, 112, 128, 132, 148, 156, 160, 162, 166, 168, 170, 182, 200, 210, 218, 220, 232, 238, 240, 242, 260, 272, 288, 290, 306, 310, 322, 328, 330,…

Para encontrarlos se puede usar esta función, que devuelve una cadena vacía si el número no se puede descomponer, o una cadena que contiene todos los valores de n y k para los que es suma de oblongos. Podría ser esta:

Function essumaob(n) As String
Dim e$
Dim k, p, q

e$ = "" ‘Comenzamos con una cadena vacía
k = 1
While k * (k ^ 2 - 1) <= 3 * n ‘Recorremos los valores posibles de k
p = 12 * k ^ 2 - 3 * k ^ 4 + 36 * k * n ‘Se calcula el discriminante
If escuad(p) Then ‘Si es cuadrado perfecto, se sigue el proceso
q = (Sqr(p) - 3 * k ^ 2) / 6 / k ‘Encontramos el valor de n inicial en la suma
‘Si n es entero positivo, se toma nota en la cadena
If q = Abs(Int(q)) and q>0 Then e$ = e$ + Str$(q) + ", " + Str$(k) + " "
End If
k = k + 1
Wend
essumaob = e
End Function

Esta función sólo se debe aplicar a números pares, que son los únicos que pueden coincidir con una suma de oblongos. Aquí tienes algunos:



Vemos que 12 presenta n=3, k=1, ya que 12=3*4. Existen dos soluciones para 20: n=4, k=1, pues 20=4*5, y también n=1, k=3, es decir, 20=1*2+2*3+3*4

Con esta función podemos analizar cualquier otro número. Aquí tenemos la solución para los ejemplo 14518, 19518:



Se confirman las soluciones encontradas más arriba.

Si todas las soluciones las dividimos entre 2, resultarán los números que equivalen a suma de triangulares consecutivos. Los tienes publicados en http://oeis.org/A034706 con el añadido de un cero:



Relación con los números combinatorios

Es fácil ver que n(n+1)(n+2)/3 es el doble del número combinatorio C(n;3). Por tanto, las fórmulas que hemos usado en párrafos anteriores se pueden resumir en


Tomamos la diagonal del 3 en el triángulo de pascal y formamos todas las diferencias mutuas multiplicadas por 2:



Deberemos tomar los valores 2, 8, 20, 40, 70, 112, 168,…dobles de la cuarta diagonal y restar “todos con todos”. Llegaríamos a los mismos valores 2, 6, 8, 12, 18, 20, 30, 32, 38, 40, 42, 50,…

Relación con los números piramidales

La suma de triangulares consecutivos daba lugar a los números piramidales triangulares, u ortoedros (Ver nuestra entrada http://hojaynumeros.blogspot.com/2017/04/numeros-piramidales-2-tetraedros.html)

Como en este caso no los sumamos todos, sino sólo a partir de un índice, en lugar de piramidales triangulares serían “troncopiramidales”. Como también nuestros sumandos son el doble de un triangular, lo que obtenemos son “troncopiramidales de base oblonga”. En la imagen tienes representado así el número 38=2*3+3*4+4*5


¿Qué números están repetidos en el listado?

Algunos números suma de oblongos aparecen repetidos en los listados. Por ejemplo, 128=7*8+8*9=56+72 y 128=5*6+6*7+7*8=30+42+56

Para descubrir el número de soluciones que puede presentar un número P como suma de oblongos consecutivos basta modificar ESSUMAOB para que nos devuelva el número de soluciones en lugar de los valores de n y k. Sólo hay que cambiar alguna línea. Puede quedar así:

Function numsumaob(n)
Dim k, p, q, v


v = 0 ‘En lugar de una cadena devuelve el número de soluciones
k = 1
While k * (k ^ 2 - 1) <= 3 * n ‘Esta parte coincide con ESSUMAOB
p = 12 * k ^ 2 - 3 * k ^ 4 + 36 * k * n
If escuad(p) Then
q = (Sqr(p) - 3 * k ^ 2) / 6 / k
If q = Abs(Int(q)) And q > 0 Then v = v + 1 ‘Incrementa el contador de soluciones
End If
k = k + 1
Wend
numsumaob = v ‘Devuelve el número de soluciones
End Function

Con esta función podemos identificar rápidamente los primeros números que coinciden al menos dos veces con una suma de oblongos consecutivos:



Por ejemplo, 328 presenta los valores n=7, k=4 y n=2, k=8, es decir:

328=7*8+8*9+9*10+10*11
328=2*3+3*4+4*5+5*6+6*7+7*8+8*9+9*10

El primer número que admite tres desarrollos es el 4360, con los valores n=31, k=4; n=27, k=5;  n=9,  k=15

Con más soluciones no existen ejemplos menores que 500000. Se podrían buscar con instrumentos más rápidos que las hojas de cálculo.

No hay comentarios: