lunes, 20 de enero de 2020

Multipoligonal


Recordemos que los números poligonales son aquellos que pueden organizar sus unidades en forma gráfica de polígono 

Ya han aparecido varias veces en este blog. Llamamos dimensión k a su número de lados y orden n al número de unidades por lado. Su expresión algebraica es


Con nuestra calculadora de números figurados puedes calcularlos fácilmente.


Por ejemplo, el número octogonal de orden 3 será igual a 21, ya que

P8,3 = 3*(3*6-4)/2 = 3*14/2 = 21

Gráficamente:


El problema que abordaremos en esta entrada es el de clasificar aquellos números poligonales que lo son tomando distintos órdenes y dimensiones. Por ejemplo, el número 36 se puede representar con cuatro lados y también con trece:


En efecto:

P4,6 = 6*(6*2-0)/2 = 6*6 = 36
P13,3 = 3*(3*11-9)/2 =3*24/2 = 36

¿De cuántas formas poligonales se puede expresar un número? 

Es evidente que todos ellos son poligonales de orden 2, incluso los primos, ya que es posible ordenar las unidades sobre un perímetro de n lados. Buscamos ahora aquellos que admitan varias representaciones.

Comenzaremos con una búsqueda ordenada. Nuestra costumbre es usar una función en Basic de Excel o Calc. Podría ser esta:

Function mpolig$(n)
Dim i
Dim s$

If n < 3 Then mpolig = "NO": Exit Function
s$ = ""
For i = 3 To n
If espoligonal(n, i) Then s$ = s$ + " #" + Str$(i) + ", " + Str$(quepoligonal(n, i))
Next i
mpolig = s
End Function

Esta función es de tipo texto, para poder añadir todos los tipos de poligonal que admite un número. Comienza desechando los números inferiores a 3. Después aplica un criterio, espoligonal, para ver si es poligonal o no. Si lo es, aplica la función quepoligonal, que encuentra el orden y dimensión. Si todo va bien, añade el nuevo polígono a la serie.

Estas dos funciones, espoligonal y quepoligonal, son algo teóricas, por lo que las añadimos a un Apéndice.

Por ejemplo, si aplicamos esta función al número 15, resultan tres formas de ser poligonal, y se presentan de esta forma:

MPOLIG(15)= # 3,  5 # 6,  3 # 15,  2

Significa que 15 puede ser un número triangular de lado 5, o bien hexagonal de lado 3, o, por último, un polígono de 15 lados. A partir de ahora no consideraremos esos polígonos formados por tantos lados como indique el número. Gráficamente:



Es fácil ver que las tres estructuras están compuestas por 15 unidades.
El primer número que presenta cuatro modalidades de poligonal es el 36:

MPOLIG(36)= # 3,  8 # 4,  6 # 13,  3 # 36,  2

Puede presentar 3, 4, 13 y 36 lados.

A estos números les podemos denominar multipoligonales. En el extremo opuesto figuran aquellos números que solo admiten forma de polígono simple, con lados de una unidad. Entre ellos están los primos y otros que no lo son, como el 38, que no admite ninguna otra forma poligonal salvo la trivial de un polígono de 38 lados. Este tipo de números está recogido en http://oeis.org/A090467.

Es fácil transformar la función mpolig en otra que simplemente cuente las soluciones de los distintos tipos de poligonal que admite un número. Quedaría así:

Function npolig(n)
Dim i, p

If n < 3 Then npolig = 0: Exit Function
p = 0
For i = 3 To n
If espoligonal(n, i) Then p = p + 1
Next i
npolig = p
End Function

Su funcionamiento es fácil de entender. Por ejemplo, con ella podemos listar los números que admiten cuatro representaciones como poligonales. Los primeros son:


En la primera columna figuran los números y en la segunda el número 4 y los distintos tipos de poligonal que admiten.

Los listados de los números con un número dado de tipos de poligonal están todos publicados en sus casos más sencillos. Por ejemplo, los anteriores figuran en http://oeis.org/A195528

Números con dos tipos determinados de poligonal

Para saber si un número es de dos tipos determinados basta usar esta función:

Function doblepolig(n, p, q) As Boolean
If espoligonal(n, p) And espoligonal(n, q) Then doblepolig = True Else doblepolig = False
End Function

Es sencilla de entender, ya que exige que sea poligonal de tipo p y también de tipo q, que son los parámetros que acompañan a n.

No vamos a recorrer todos los casos, ya que los valores del número de lados aumentan muy pronto, y se hacen inabordables.

Por ejemplo, con hoja de cálculo solo podemos obtener de forma razonable dos números que son heptagonales y cuadrados, el 81 y el 5929. El siguiente, 2307361, necesita más tiempo de cálculo, y no digamos los que siguen: 12328771225, 4797839017609, 350709705290025, 25635978392186449, 9976444135331412025,…

Un caso concreto

(Complemento con uso de técnicas algo más avanzadas)

¿Qué números son hexagonales y también cuadrados?

Si los buscamos con la función doblepolig y parámetros 4 y 6, nos resulta el número 1225, pero el siguiente 1413721, ya necesita unos minutos de proceso. Intentamos una aproximación algebraica:

Un número cuadrado de orden n tiene como fórmula n2, y un hexagonal de orden m, m(2m-1). Igualamos:

Sería n2=2m2-m

Multiplico por 2:

2n2=4m2-2m

Completo un binomio al cuadrado:

2n2=(2m)2-2*2m*1/2+(1/2)2-(1/2)2
2n2=(2m-1/2)2-(1/2)2

Multiplico por 4

8n2=(4m-1)2-1
(4m-1)2-8n2=1

Llamando x=8m-1 e y=n, logramos el planteo de una ecuación de Pell: x2-8y2=1

Acudimos a nuestra herramienta 

Rellenamos los parámetros 8, RAIZ(8) y 1 y obtenemos las soluciones:



Al pasar de X a n, deberemos desechar las soluciones no enteras. Aplicamos a X la función (X+1)/8 para volver a n:



Nos quedamos con las soluciones enteras. La primera es Y=N=35 y X=25. 

Vemos que, efectivamente, se cumple que el cuadrado de 35, 1225, coincide con el hexagonal de 25, 2*252-25=1250-25=1225.

Veamos la segunda solución entera:

Y=N=1189, X=841, con lo que 11892=1413721=2*8412-841

De igual forma obtendríamos la tercera, 403912=1631432881
(Puedes comprobarlo en http://oeis.org/A046177)

Recurrencia

Esta parte la desarrollaremos sin justificar.

En una ecuación de Pell de parámetro 8, las soluciones se obtienen a partir de las primeras X=3, Y=1 mediante las recurrencias

Xn+1=3Xn+8Yn  y  Yn+1=Xn+3Yn

Puedes comprobarlo en la tabla de más arriba.

Como las soluciones enteras aparecen cada dos pasos, las recurrencias quedarán

Xn+2=3(3Xn+8Yn)+8(Xn+3Yn)=17Xn+48Yn
Yn+2=3Xn+8Yn+3*(Xn+3Yn)=6Xn+17Yn

Así, de x=99, y=35, obtenemos:

X=17*99+48*35=3363
Y=6*99+17*35=1189

Estas serían las siguientes soluciones. Reiterando, obtendríamos todas las demás:

X=17*3363+48*1189=114243
Y=6*3363+17*1189=40391

Este ha sido un ejemplo concreto, sin demasiada dificultad algebraica. Las demás coincidencias entre dos tipos se resuelven de forma similar, pero quizás con un desarrollo más complejo.



Apéndice

Función espoligonal
Devuelve VERDADERO o FALSO
Function espoligonal(n, k) As Boolean
Dim d
Dim e As Boolean

e = False
d = (k - 4) ^ 2 + 8 * n * (k - 2)
If escuad(d) Then
If esentero((k - 4 + Sqr(d)) / 2 / (k - 2)) Then e = True
End If
espoligonal = e
End Function

Función quepoligonal

Encuentra la dimensión de un número como poligonal

Function quepoligonal(n, k)
Dim d
d = Sqr((k - 4) ^ 2 + 8 * n * (k - 2))
If d <> Int(d) Then quepoligonal = 0 Else quepoligonal = (k - 4 + d) / (2 * k - 4)
End Function



No hay comentarios: