jueves, 15 de marzo de 2018

Cuadrados del tipo n(n+k) (1/3)


En enero de 2018 se publicaron en Twitter varios resultados sobre una propuesta de Republic of Math @republicofmath, uno de los cuales insertamos a continuación:



En este blog acudimos con frecuencia a la técnica de “dar vueltas” a una cuestión de la que tengamos noticia. En este caso concreto estudiaremos de forma algebraica y algorítmica la cuestión de qué números n cumplen que n(n+k) es un cuadrado para un número k dado. Por ejemplo, si k=16, existen dos números, 2 y 9, que producen un cuadrado mediante dicha expresión. En efecto:

2(2+16)=2*18=36=62; 9(9+16)=9*25=225=152

Para encontrar soluciones correspondientes a un valor de k acudiremos a búsqueda en hoja de cálculo y PARI para después abordar un estudio teórico. Es una metodología muy frecuente en este blog: comenzar con una búsqueda sin apoyo teórico y después ir buscando regularidades o fundamentaciones algebraicas.

Estudio con hoja de cálculo

Es fácil programar una función que nos indique si un número n produce un cuadrado en la expresión n(n+k) para un k dado. La que insertamos a continuación nos servirá para valores de k pequeños. En otros casos los errores de truncamiento de los cálculos nos pueden llevar a conclusiones falsas. Por eso es interesante acudir a un lenguaje de más exactitud como PARI y dar una vuelta de Álgebra a esta cuestión.

La función más simple que podemos proponer es esta:

Function escuadprod(n, k) As Boolean
‘Depende de dos variables y devuelve VERDADERO o FALSO
Dim a
a = n * (n + k) ‘Construimos el producto pedido
If a = Int(Sqr(a)) ^ 2 Then escuadprod = True Else escuadprod = False
‘Si a equivale al cuadrado de la parte entera de su raíz cuadrada, vale
End Function

Con ella y un bucle de búsqueda se pueden encontrar las soluciones para un valor de k dado. En la imagen figuran las correspondientes a k=21, que son 4, 7, 27 y 100.



Las comprobamos:

4(4+21)=4*25=100=102
7(7+21)=7*28=196=142
27(27+21)=27*48=1296=362
100(100+21)=100*121=12100=1102

¿Se podrán encontrar más? Lo veremos en el estudio algebraico.

Para mayor velocidad y exactitud trasladamos vuestra función a PARI (lo puedes realizar fácilmente con otro lenguaje). Este sería el listado para k=21.

escp(n,k)=issquare(n*(n+k))
k=21;for(i=1,10000,if(escp(i,k),print(i)))

Hemos acotado la búsqueda en 10000, pero para valores de k superiores deberíamos ampliar la búsqueda. Ya trataremos esto más adelante.

El resultado es:



Coinciden las soluciones 4, 7, 27 y 100.

Estudio algebraico

Llamemos m2 al cuadrado que debe producir el producto n(n+k).
En ese caso se cumplirá: n(n+k)=m2

Resolviendo la ecuación de segundo grado resultante:



El radicando ha de ser un cuadrado perfecto, llamémosle p2, lo que nos lleva a que

p2 - 4m2 = k2
(p+2m)(p-2m)=k2

Si encontramos dos valores enteros para p y m, sustituyendo en la resolución de la ecuación:

Bastará entonces descomponer k2 en dos factores, sean A y B, e igualar:

Resultará p+2m=A, p-2m=B, p=(A+B)/2, m=(A-B)/4

Deberemos buscar entonces A y B de forma que su diferencia sea múltiplo de 4 y distinto de cero, para evitar la solución cero.

Veamos el caso de 21. Su cuadrado 441 admite estas descomposiciones en productos:

441*1=147*3=63*7=49*9=21*21

Los cuatro primeros se diferencian en un múltiplo de 4, y nos queda:

441*1: m=(441-1)/4=110; p=(441+1)/2=221; n=(p-k)/2=(221-21)/2=100
147*3: m=(147-3)/4=36; p=(147+3)/2=75; n=(75-21)/2=27
63*7: m=(63-7)/4=14; p=(63+7)/2=35; n=(35-21)/2=7
49*9: m=(49-9)/4=10; p=(49+9)/2=29; n=(29-21)/2=4

Obtenemos las soluciones sabidas 100, 27, 7 y 4. Hemos desechado la solución cero, que se obtendría de 21*21.

Hemos deducido que el valor de p equivale a p=(A+B)/2, siendo A y B factores de k2, luego p<=k2/2, y, por tanto, el valor buscado n=(p-k)/2, tendrá como amplia cota k2/4:



Podíamos ajustar más, pero no es necesario. Por ejemplo, para el caso k=2018, PARI nos da la solución (por cierto, única) de n=508032, ya publicada en Twitter



Esta solución cumple 508032<20182/4=1018081

Por tanto, en PARI deberíamos buscar hasta esa cantidad:

escp(n,k)=issquare(n*(n+k))
k=2018;for(i=1,1018081,if(escp(i,k),print(i)))

Obtendríamos la misma solución única:



¿Por qué es única?

Seguimos el proceso algebraico:

20182=4072324=4072324*1=2036162*2=1018081*4=4036*1009=2018*2018

El único par válido es 2036162*2, luego p=(2036162+2)/2=1018082 y n=(1018082-2018)/2=508032

Es única la solución 508032

Terminamos esta entrada con una consideración:

Si n convierte n(n+k) en un cuadrado, es decir, es solución para un k dado, el número rn será solución para rk.

Es una propiedad muy importante, que se justifica en estas simples igualdades:
Si n(n+k)=m2, entonces rn(rn+rk)=(rm)2

En la siguiente entrada estudiaremos casos particulares y usaremos esta propiedad.

No hay comentarios: