martes, 23 de abril de 2024

Hipotenusas de cuaternas pitagóricas

Una cuaterna pitagórica es la expresión algebraica del teorema de Pitágoras en tres dimensiones, es decir, un conjunto de cuatro números enteros positivos a, b, c y d que cumplen:

Para estudiar bien este concepto, basta visitar, por ejemplo.

https://es.wikipedia.org/wiki/Cuaterna_pitag%C3%B3rica

https://mathworld.wolfram.com/PythagoreanQuadruple.html

En estas páginas y otras similares se encuentran todas las propiedades interesantes de estas cuaternas. Aquí nos centraremos en la hipotenusa d. Más concretamente, dado un número N cualquiera, nos interesarán las posibilidades de expresarlo como N2=a2+b2+c2.

No distinguiremos entre las cuaternas primitivas y las que no lo son, ni usaremos la generalización a números enteros. Nuestro interés será más algorítmico que algebraico. Por eso, recorreremos algunas herramientas para ver sus posibilidades, sacando de cada una las propiedades oportunas.

Uso de la herramienta Cartesius

Este problema, por su carácter combinatorio implícito, es abordable con nuestra herramienta Cartesius, que produce todos los productos cartesianos de varios conjuntos sometidos a ciertas condiciones. En este caso, los conjuntos son tres, formados por los primeros cuadrados, para representar a a2, b2 y c2, y la condición es que su suma coincida con N2. Lo explicaremos con un ejemplo, el de N=35.

Para resolver la cuestión emplearemos las siguientes condiciones:


Las estudiamos una a una:

xtotal=3

Indica que combinaremos tres conjuntos. Aquí serían a2, b2 y c2

xt=1..1224

Damos una cota a cada conjunto de 352-1=1224, para evitar ceros

xt=filtro(cuadrado)

Cada conjunto se restringirá a los cuadrados

suma=1225

La suma deberá ser 352

Creciente

Se exigen soluciones con los términos crecientes para evitar repeticiones.

Con el botón Iniciar, o el Reiterar de la siguiente hoja “Producto” obtenemos todas las soluciones.

Resultan cinco posibilidades, pero expresadas como cuadrados. Como las hojas de cálculo te permiten retoques posteriores, bastará usar la función RAIZ para encontrar sus bases, los valores de a, b y c. Incluso se pueden cambiar los rótulos y los fondos:

Hay que advertir, antes de seguir, que en un equipo informático doméstico estos cálculos pueden tardar, en esta época en la que deseamos respuestas rápidas. Todo lo que implique desarrollos combinatorios se ralentizará inevitablemente.

Cartesius es una herramienta potente y de resultados claros, aunque la redacción de las condiciones puede resultar compleja. Por eso existe una Guía para su uso en

http://www.hojamat.es/sindecimales/combinatoria/herramientas/cartesius.pdf

Si deseamos más versatilidad, como efectuar el recuento de las soluciones, expresarlas en modo texto o aplicarles un Buscador, es preferible acudir, como hemos decidido tantas veces, a la construcción de una función en VBasic, para su uso en Excel y Calc.

Función de búsqueda

Function espitag3(n) As String ‘Da como solución un texto
Dim k, p, d, k1, p1, d1, cuenta
Dim s$

s = "" ‘Contenedor de la solución
cuenta = 0 ‘Número de soluciones
k = 1: p = 3 ‘Variables para formar cuadrados
While k <= n * n / 2
d = n * n – k ‘N^2 menos el primer cuadrado
k1 = 1: p1 = 3 ’Inicio del segundo cuadrado
While k1 <= d / 2
d1 = d - k1
If escuad(d1) And d1 >= k1 And k1 >= k Then ‘Hay solución
s = s + " ## " + Str$(Sqr(k)) + "^2+" + Str$(Sqr(k1)) + "^2+" + Str$(Sqr(d1)) + "^2 " ‘Añade una solución
cuenta = cuenta + 1’Incrementa la cuenta
End If
k1 = k1 + p1: p1 = p1 + 2 ‘Avanza el primer cuadrado
Wend
k = k + p: p = p + 2 ‘Avanza el segundo cuadrado
Wend
If s = "" Then s = "NO"
espitag3 = Str$(cuenta) + " : " + s
End Function

Hay que explicar que los dos primeros sumandos cuadrados se generan sumando números impares. Para ello se usa la variable k para contenerlos, y la variable p para los incrementos. Así, para iniciar el primer cuadrado declaramos k=1,p=3, con lo que el primero es 1^2 y el segundo 1+3=2^2. Terminado de analizar un cuadrado, k se incrementa en p, k=k+p, y p se incrementa en 2 para seguir con los impares.

Al final del proceso se inserta la cuenta de soluciones al principio del texto.

Aplicamos esta función al 35:


Obtenemos que son cinco soluciones, y se presentan ya en forma de suma por si las deseamos copiar en otras celdas. Como era de esperar, coinciden con las cinco obtenidas con Cartesius.

El que la suma figure en primer lugar nos permite búsquedas de números con un número determinado de descomposiciones pitagóricas de este tipo. Por ejemplo, en esta tabla figuran aquellos números que admiten dos descomposiciones:


Algoritmo en PARI

Podemos traducir todo al lenguaje PARI. No es fácil de entender el código, que presenta una ventaja, además de funcionar más rápidamente, y es que imprime también las bases de los cuadrados, pero el resultado de la función es la cuenta de las descomposiciones, lo que facilita las búsquedas. En las siguientes líneas puedes consultar el programa creado para encontrar números con descomposición única:

pitag3(n)={my(k=1,p=3,cuenta=0,d,k1,p1,d1);while(k<=n*n/2,d=n*n-k;k1=1;p1=3;while(k1<=d/2,d1=d-K1;if(issquare(d1)&&d1>=k1&&k1>=k,print(sqrtint(k),", ",sqrtint(k1),", ",sqrtint(d1));cuenta+=1);k1=k1+p1;p1=p1+2);k=k+p;p=p+2);cuenta}

for(i=1,1000,if(pitag3(i)==1,print1(i,", ")))

Obtendremos el resultado


En https://oeis.org/A152829 figuran esos números que sólo admiten una solución. Contiene una conjetura de Colin Baker de que, a partir del 13, se cumple que a(n)=2a(n-3). Se puede comprobar en el listado: 26=2*13, 28=2*14, 48=2*24,…

Lo curioso es que en nuestra sucesión de dos descomposiciones también se puede enunciar la misma conjetura:

11, 17, 22, 25, 34, 44, 50, 68, 88, 100,…

En ella 34=2*17, 44=2*22,…

Lo que llama la atención no es que sea el doble, que algo similar ocurre en las ternas pitagóricas, en las que se pueden multiplicar todos los sumandos por un mismo factor, sino que no se interpongan otras soluciones entre un elemento y su doble, además de los dos de la conjetura.

¿Ocurrirá también con los que presentan tres soluciones? Lo vemos:


Efectivamente, ocurre, pero con un salto de cinco en lugar de tres: 30=2*15, 36=2*18,…, es decir, a(n)=2a(n-5)





No hay comentarios: