jueves, 26 de mayo de 2022

Regresos 4: Doblado pitagórico

Ampliamos en esta entrada el contenido de otra similar publicada en este blog en el año 2010:

https://hojaynumeros.blogspot.com/2010/10/1-7-17-23-31-41-47-49-71-73-79-89-97.html

Si tomamos un segmento de longitud 31 cm. y lo doblamos por cierto punto en forma de ángulo recto, podemos completar un triángulo rectángulo cuya hipotenusa tiene medida entera. No es difícil averiguar por dónde se puede doblar: basta hacerlo con un segmento de medida 7, con lo que el otro trozo mediría 24 y la hipotenusa 25, pues 72+242=252

Existen otros números con la misma propiedad: 7, descompuesto en 3 y 4, 23, doblado por 8 y 15, y otros muchos.

Además de 7, 23 o 31, ¿qué otros números tienen la propiedad de engendrar un triángulo rectángulo de medidas enteras con un simple “doblado”?

Podríamos extender el tipo de doblado a conseguir una hipotenusa y un cateto, o bien, con dos dobleces, conseguir los tres lados, que es lo que se efectuó en la Antigüedad para conseguir un ángulo recto con un doblado 3+4+5=12.

Comenzamos:

Doblado en dos catetos

Para poder estudiar simultáneamente varios casos, asignaremos una función a cada uno. Usaremos, siguiendo una metodología reciente en este blog, funciones que nos devuelvan los resultados en forma de string, para poder ver las soluciones, y no un simple SÍ o NO. En este primer caso usaremos esta función:

Function doblado$(n)

Dim i, j, k, m

Dim s$

 

m = 0

s = ""

For i = 1 To n / 2 ‘Llegamos a n/2 buscando un cateto

j = n – i ‘El otro posible cateto

k = i ^ 2 + j ^ 2 ‘Vemos si forman terna pitagórica

If escuad(k) Then m = m + 1: s = s + " ##" + Str$(i) + " " + Str$(j) + " " + Str$(Sqr(k)) ‘En caso afirmativo, incorporamos a la solución

Next i

If s = "" Then s = "NO" Else s = Str$(m) + s ‘Añadimos número de soluciones

doblado = s

End function

Si recorremos con esta función los primeros números, obtendremos las primeras soluciones, que ya publicamos en la entrada de hace doce años:

Como era de esperar, este listado ya está publicado en http://oeis.org/A118905:

7, 14, 17, 21, 23, 28, 31, 34, 35, 41, 42, 46, 47, 49, 51, 56, 62, 63, 68, 69, 70, 71, 73, 77, 79, 82, 84, 85, 89, 91, 92, 93, 94, 97, 98, 102, 103, 105, 112, 113, 115, 119, 123, 124, 126, 127, 133, 136, 137, 138, 140, 141, 142, 146, 147, 151, 153, 154, 155, 158, 161, 164, 167, 168, 170, 175, 178, 182, 184, 186, 187, 188

Hemos observado que el número 49 admite dos soluciones, (9, 40, 41) y (21, 28, 35). La primera terna es primitiva, pero la segunda no.

Podemos extraer los primeros números que presentan dos o más soluciones:



El máximo de soluciones de la tabla anterior ha sido 4, pero existen números con más ternas posibles. Por ejemplo, los números 833, 1127, 1519 y 1666 presentan siete.

Aquí deberemos parar un poco. Observando la tabla, es fácil ver que muchas ternas no son primitivas. Si solo nos interesan estas, en la función de más arriba, además de exigir que k = i ^ 2 + j ^ 2 sea un cuadrado, deberemos añadir que estos lados sean primos entre sí, o que su MCD sea 1. Podría quedar así:

Function doblado$(n)

Dim i, j, k, m, p

Dim s$

m = 0

s = ""

For i = 1 To n / 2

j = n - i

k = i ^ 2 + j ^ 2

If escuad(k) Then

p = Sqr(k)

If mcd(i, mcd(j, p)) = 1 Then m = m + 1: s = s + " ##" + Str$(i) + " " + Str$(j) + " " + Str$(p)

End If

Next i

If s = "" Then s = "NO" Else s = Str$(m) + s

doblado = s

End Function

Con esta modificación, obtenemos un listado más restringido:



También estas soluciones están ya publicadas en http://oeis.org/A120681 con distinto orden. En esa misma página se remite a una prueba de que los factores de los números de la lista (la mayoría son primos) tienen factores primos del tipo 8k+1 o 8k-1 (el desarrollo está en http://oeis.org/A001132)

La razón de esta propiedad es que estos números, al ser suma de catetos en una terna primitiva, se pueden escribir de la forma u2-v2+2uv, con u y v primos entre sí y uno de ellos par (ver, por ejemplo Wikipedia). Esto los convierte en soluciones de (u+v)2-2v2=k, es decir una ecuación del tipo x2-2y2=k.

La consideración anterior los convierte también en soluciones de diferencia de catetos, porque u2-v2-2uv=(u-v)2-2v2=2x2-y2, es decir, la misma ecuación. Este hecho se refleja en

http://oeis.org/A058529.

Podemos hacer explícita esta equivalencia. Si una suma de catetos proviene de dos valores u y v, su equivalente como diferencia se basa en los valores u+2v, v. Es fácil verlo:

Suma de catetos: (u+v)2-2v2

Diferencia equivalente: (u+2v-v)2-2v2

Es fácil verificarlo con dos ejemplos:

7 es suma de catetos en la terna (3, 4, 5), que corresponde a u=2, v=1. Los valores para que sea diferencia son u+2v=4 y v=1, que forman la terna (2*4*1, 42-12, 42+12,)=(8, 15, 17), en la que la diferencia de catetos es también 7.

Otro ejemplo: En la terna (5, 12, 13), u=3 y v=2 con suma de catetos 17

El equivalente es (7-2)2-2*2*2=17, que es diferencia de catetos en la terna (72-22, 2*7*2, 72+22)=(45, 28, 53), y 45-28=17.

Doblado en hipotenusa y cateto

En lugar de exigir una suma de catetos podemos estar interesados en suma de hipotenusa y un cateto. Para ello bastará cambiar algún signo en los códigos de Excel y PARI y modificar las cotas de los datos. Puede quedar de esta forma:

Function doblado$(n)

Dim i, j, k, m, p

Dim s$

m = 0

s = ""

For i = 1 To n

j = n - i

If j < i And j > 0 Then ‘Acotamos el cateto

k = i ^ 2 - j ^ 2 ‘En lugar de sumar, restamos

If escuad(k) Then

p = Sqr(k)

If mcd(i, mcd(j, p)) = 1 Then m = m + 1: s = s + " ##" + Str$(i) + " " + Str$(j) + " " + Str$(p) ‘Seguimos buscando primitivas

End If

End If

Next i

If s = "" Then s = "NO" Else s = Str$(m) + s

doblado = s

End Function

Al hacer uso del MCD indicamos que deseamos soluciones sobre ternas primitivas. Buscamos números con esta función y los primeros que encontramos son estos:


A primera vista comprobamos que existen muchas más soluciones múltiples. En la imagen ya aparece la primera con 6, el 169.

Otro hecho que se descubre es que todas las soluciones son  cuadrados o dobles de un cuadrado. La razón es sencilla, ya que al sumar una hipotenusa y un cateto en una terna primitiva, podemos encontrarnos con dos posibilidades:

Sumar u2+v2+2uv: En ese caso obtendríamos el cuadrado (u+v)2

Sumar u2+v2+u2-v2, lo que os llevaría a 2u2, el doble de un cuadrado.

Este razonamiento nos llevaría a pensar, como en el caso de los dos catetos, que estos números también serán diferencias entre hipotenusas y catetos, y en efecto, u2+v2-2uv es un cuadrado y u2+v2-u2+v2 el doble de un cuadrado. Esta propiedad se refleja en http://oeis.org/A096033

Doblado en tres lados

El número que consideremos se podrá descomponer en tres lados, es decir, de forma que sea el perímetro de un triángulo rectángulo. Hay varias formas de plantearlo, pero por seguir los métodos de búsqueda anteriores, ampliamos las funciones usadas para que admitan una variable más. La función doblado quedaría así:

Function doblado$(n)

Dim i, j, k, m

Dim s$

m = 0

s = ""

For i = 1 To n - 2 'Llegamos a n-2 buscando la hipotenusa

For j = 1 To i - 1 'Primer cateto

If j < i Then

k = n - i - j 'El otro posible cateto

If i ^ 2 = j ^ 2 + k ^ 2 And k < j And k > 0 Then m = m + 1: s = s + " ##" + Str$(i) + " " + Str$(j) + " " + Str$(k) 'En caso afirmativo, incorporamos a la solución

End If

Next j

Next i

If s = "" Then s = "NO" Else s = Str$(m) + s 'Añadimos número de soluciones

doblado = s

End Function

En este caso, la búsqueda nos devolvería estos primeros resultados:


 Las soluciones se han publicado en  http://oeis.org/A010814

Si incorporamos la condición de que los tres lados, catetos e hipotenusa, sean primos entre sí, obtendremos las soluciones para ternas primitivas, que serán iguales a las anteriores o divisores de ellas, pues es sabido que el perímetro de una terna siempre es múltiplo de otro correspondiente a una primitiva. Lo hemos efectuado así, resultando:

Están publicados en http://oeis.org/A024364

Según los párrafos anteriores, la expresión de estos resultados vendrá dada por u2+v2+u2-v2+2uv=2u2+2uv=2u(u+v), donde u y u+v son primos entre sí. Por ello, si u es par, o lo es u+v, la solución será un número múltiplo de 4, y solo de 2 en caso contrario.

Por ejemplo, en la terna (5, 4, 3), u=2, v=1, u2+v2=5, u2-v2=3 y 2uv=4, el perímetro es 12=5+4+3, y es múltiplo de 4 por ser u par.

Sin embargo, en la terna (13, 12, 5), u=3, v=2, u2+v2=13, u2-v2=5 y 2uv=12. En este caso, u es impar, y u+v también, lo que significa que el perímetro 30 es múltiplo de 2, pero no de 4.

A la vista de los resultados podría parecer que cada solución se corresponde con una sola terna primitiva, pero no es así, pues, por ejemplo, 1716 se corresponde con dos:

1716=725+627+364 y 725^2=627^2+364^2; MCD(725, 627, 364)=1

1716=773+748+195 y 773^2=748^2+195^2; MCD(773, 748, 195)=1

Se puede detectar esto mediante un algoritmo en PARI, similar a este:

for(u=2,30,for(v=1,29,if(gcd(u,v)==1&&(u+v)%2==1&&u>v,write("final.txt",2*u*(u+v)))))

Engendra las soluciones buscando los valores de u y v adecuados.

Vuelca la solución en un archivo, al que hemos dado el nombre de “final.txt”. Las soluciones se escribirán en columna, pero desordenadas. Habrá que copiarlas en una hoja de cálculo, ordenar la columna y detectar los duplicados. Es otra forma de actuar.



 

No hay comentarios: