jueves, 10 de octubre de 2013

Ciclos (2) – Descomposición en ciclos


Algunas permutaciones dejan invariantes unos elementos, y a otros los van transformando cíclicamente hasta volver al primero. Así, la permutación (1,3,4,2,5,6) deja invariantes 1, 5 y 6, mientras 3 se transforma en 4, este en 2 y el 2 tiene como imagen el 3. A este tipo de permutaciones las llamaremos ciclos. Omitimos definiciones formales, porque aquí nuestro interés es práctico y de aprendizaje de las hojas de cálculo.

Llamaremos ciclo a una permutación que deja invariantes algunos elementos y somete a una rotaciones completas a los restantes. 

Representaremos un ciclo mediante los elementos que se van transformando uno en otro, omitiendo los invariantes. Así, (3,4,2) representaría a la anterior permutación. Podemos someter a los elementos 3,4,2 a una rotación en el orden y representarían el mismo ciclo: (3,4,2) = (4,2,3) = (2,3,4), pero otro tipo de alteración del orden, como (3,2,4) ya representaría un ciclo distinto. Si aplicamos reiteradamente un ciclo, cada elemento irá pasando por todas las posiciones posibles e, inversamente, por una posición dada irán pasando ordenadamente todos los elementos.

Un mismo ciclo se puede representar comenzando con cualquiera de sus elementos si se respeta el orden circular.

Un ciclo de un elemento representa un elemento invariante, y el de dos, una transposición entre dos elementos. Si el ciclo abarca la permutación completa, a esta la llamaremos cíclica.

La propiedad más importante de los ciclos es que toda permutación se puede descomponer en ciclos disjuntos de forma única salvo el orden. Según esto, la del ejemplo podemos representarla como (1,3,4,2,5,6)=(3,4,2)(1)(5)(6). Se suelen ordenar los ciclos por su magnitud, de mayor a menor.

¿Cómo descomponer una permutación en ciclos?

El procedimiento puede ser el siguiente:

Elegimos el elemento 1, y aplicamos la permutación de forma reiterada hasta que la imagen vuelva a ser 1. Como el conjunto es finito, esto se acabará logrando, con lo que ya tendremos el primer ciclo de la descomposición. Buscamos después el siguiente elemento que no pertenezca al ciclo conseguido (si hemos acabado es que la permutación estudiada se reduce a un solo ciclo, es cíclica) y efectuamos la misma operación para obtener el segundo ciclo, y así sucesivamente hasta agotar el conjunto.
Por ejemplo, la permutación (4, 2, 6, 7, 8, 9, 10, 11, 3, 1, 5) nos llevaría al siguiente proceso:
Comenzamos con el 1. Las sucesivas imágenes serían: 1 – 4 – 7 – 10 – 1. Ya tendríamos el primer ciclo (4, 7, 10, 1).

Buscamos el siguiente elemento no estudiado aún: el 2, que se transforma en sí mismo. El siguiente ciclo es, pues, (2)

Siguiente elemento libre: 3, que engendra: 3 – 6 – 9 – 3, formando el ciclo (3, 6, 9)

Por último, con 5 logramos (5, 8, 11)

Hemos terminado: (4, 2, 6, 7, 8, 9, 10, 11, 3, 1, 5) = (4, 7, 10,1) (3, 6, 9) (5, 8, 11) (2)

Como cada ciclo opera sobre elementos disjuntos, esta descomposición es un producto en Sn (ver entrada anterior del blog), en el que los ciclos son permutables y por tanto, no influye el orden.
En este proceso los ciclos que se formen serán disjuntos, pues si dos de ellos tuvieran un elemento común, al aplicar el ciclo sobre él reiteradamente se incluirían todos los elementos, y los ciclos serían en realidad uno solo.

El número de ciclos en que se descompone una permutación varía entre 1, si ella misma es cíclica, hasta n, si se trata de la permutación identidad.

Podemos conseguir que una hoja de cálculo haga lo mismo:


Lo hemos implementado en Excel y Apache OpenOffice (http://hojamat.es/sindecimales/combinatoria/herramientas/herrcomb.htm#ciclos)

Observa que ha creado una fila en la que va tomando nota de los ciclos a los que pertenece cada elemento, y después ha escrito debajo la composición de cada ciclo. Es una tarea un poco larga, por lo que sólo explicaremos los fundamentos, remitiendo después a la hoja ya confeccionada.

Proceso para encontrar los ciclos:

1) Se crean unas memorias que contendrán la información de los ciclos que se van ocupando. Al principio se inician todas a cero.

2) En cada paso del proceso se busca el primer elemento cuyo número de ciclo es 0. Se aumenta en una unidad el número del ciclo, que, por tanto, comenzará en 1. Con un procedimiento similar al usado en la anterior entrada, se aplica reiteradamente la permutación hasta completar el ciclo.

Este paso se da mientras exista un elemento con número de ciclo 0. Para cada elemento, se irá escribiendo en la hoja a qué ciclo pertenece.

3) Localizados los ciclos, se van buscando los elementos de cada uno y se escriben en filas distintas debajo del esquema. Esta parte es más informática que matemática, y la podemos omitir.

Generación aleatoria

Como la hoja de cálculo ofrecida no tiene más objetivo que el de explicar el concepto, se ha añadido la posibilidad de generar aleatoriamente una permutación para comprender mejor la descomposición en ciclos.


Orden de un ciclo

No es difícil entender que el orden de un ciclo es su longitud, ya que los elementos invariantes seguirán siéndolo aunque reiteremos y los cíclicos se irán recorriendo uno por uno y se llegará al primero cuando se recorra toda la longitud:

El orden de un ciclo coincide con su longitud

También es sencillo entender que si una permutación se descompone en ciclos, su orden será el MCM de las longitudes de los mismos.

Así, el orden de (1)(2, 3, 7)(4, 5)(6) será 6, el mcm(1, 3, 2, 1)

En la misma hoja se puede estudiar el orden de los ciclos y el de la permutación total

El orden de los ciclos aparece en la parte izquierda de los mismos










El orden total, MCM de los de los ciclos lo tendrás en la parte derecha

Transposiciones

Llamaremos transposición a un ciclo de orden 2. Todo ciclo, y en consecuencia toda permutación, se puede descomponer en transposiciones. Se comprende sólo con estudiar este desarrollo:

(a, b, c, d, e)=(a, e)(a, d)(a, c)(a, b)

Esta descomposición no es única.

Algunos cálculos

Permutaciones circulares  o cíclicas

Puede ocurrir que una permutación sea en sí misma un ciclo. La llamaremos cíclica o circular. Dentro del grupo simétrico Sn el número de permutaciones cíclicas equivale a (n-1)! Es algo muy conocido y se justifica porque para inventarte una permutación de este tipo en primer lugar has de ordenar todos los elementos, lo que puedes realizar de n! formas diferentes y una vez elegida una, esta representa n circulares idénticas, porque tienes n formas de elegir el primer elemento, luego el número es n!/n=(n-1)!
Permutaciones de n elementos que son ciclos de orden k

Deberemos elegir k elementos para el ciclo y dejar los restantes n-k fijos. El elegirlos nos supone Cn,k formas y dentro de los elegidos, (k-1)! ciclos posibles, luego el número total de ciclos de orden k será



Permutaciones reducidas

Son aquellas que no dejan fijo ningún elemento, las que en la descomposición en ciclos ninguno de ellos tiene orden 1. Son las conocidas como desarreglos (o desbarajustes) Los puedes estudiar en http://hojamat.es/sindecimales/combinatoria/teoria/teorcomb.pdf

En esa dirección hemos explicado su fórmula



jueves, 3 de octubre de 2013

Ciclos (1) Grupo simétrico


Solemos considerar las permutaciones como las distintas ordenaciones de un conjunto. Existe otro punto de vista alternativo, que es muy fructífero, y es considerarlas como  aplicaciones biyectivas del conjunto en sí mismo. Así, la permutación S=(3,2,1,4) se puede considerar derivada de (1,2,3,4) (orden principal) mediante la aplicación S(1)=3, S(2)=2, S(3)=1 y S(4)=4. Así la interpretaremos aquí.

Como la naturaleza de los elementos no influye en la teoría, imaginaremos que se trabaja siempre sobre el conjunto {1,2,3,4,…,n} y que una permutación como S=(5,1,3,2,…) se interpreta: S(1)=5, S(2)=1, S(3)=3, S(4)=2,…La escribimos así, como un conjunto de imágenes, por comodidad de escritura, pero te la puedes imaginar con los orígenes sobre ellas formando una matriz de dos filas, con lo que cae cada imagen debajo del origen

Las permutaciones se pueden componer como todas las aplicaciones, usando una de ellas  y después la otra sobre las imágenes de la primera. No es fácil verlo en este caso, por lo que usaremos un ejemplo:
Sean G=(4,2,5,3,1) y H=(1,4,3,5,2), o escribiendo orígenes:

G:







H:








La composición H*G (escribiendo de derecha a izquierda) se formaría así (hay que estar atentos):

H*G(1)=H(G(1))=H(4)=5   H*G(2)=H(G(2))=H(2)=4   H*G(3)=H(G(3))=H(5)=2
H*G(4)=H(G(4))=H(3)=3   H*G(5)=H(G(5))=H(1)=1, con lo que resultaría
H*G=(5,4,2,3,1)  Como ves, no es nada intuitivo.

Es fácil demostrar que las n! permutaciones forman grupo para esta composición, siendo la identidad E=(1,2,3,4,…, n) y el inverso la permutación que convierte las imágenes en orígenes. A este grupo lo llamaremos Grupo simétrico para {1,2,3,…, n} y lo representaremos como Sn.

¿Te apetecería comprobar composiciones de permutaciones con hoja de cálculo? Te damos unas ideas:

Puedes escribir en filas distintas, una debajo de la otra, las dos permutaciones G y H (en la imagen, filas 12 y 16) y después la composición de ambas (fila 20), que es la única que contendrá fórmulas. El resto de la hoja sólo contiene datos.

Es muy interesante estudiar qué fórmula podemos implementar en la fila 20 de la imagen. Explicaremos la primera celda, B20, y después bastará extenderla al resto de la fila. La fórmula adecuada es:

=ÍNDICE($B16:$J16;1;B12)

La función ÍNDICE elige en una lista el elemento que presenta un número de orden. En este caso la lista es la permutación H. De ahí que hayamos usado el rango $B16:$J16. Después hay que indicar la fila del rango. Como solo hay una fila, hemos escrito un 1. El siguiente parámetro es el número de orden, y aquí va a residir el truco: Hemos de elegir en H el elemento que ocupe el lugar que indica G en la misma columna. Insistimos en que esto, al principio, no es fácil. Hemos escrito en la fórmula “B12”, que es la primera imagen de G, un 6, luego deberemos ir a H y buscar el sexto elemento, un 8, y por eso en la celda B20 aparece ese 8.

Como puede que te siga costando, te ofrecemos esta hoja en la dirección

http://hojamat.es/blog/compopermu.zip

Como el grupo simétrico opera sobre un conjunto finito (cardinal n!), la aplicación reiterada de una sustitución consigo misma (potencia de la permutación) llevará a la repetición de resultados, es decir, a que dos potencias distintas sean equivalentes:

Pm=Pn

Si suponemos, por ejemplo que m<n, entonces esa igualdad, si le aplicamos la permutación inversa para simplicar, se convertiría en

Pn-m=Pk=E (identidad)

Toda permutación, aplicada un número determinado de veces, se convierte en la identidad.

El número mínimo para el que eso ocurre recibe el nombre de orden de la permutación. En los ejemplos de arriba, el orden de G es 4, y el de H es 3. Compruébalo. Esta idea nos servirá en lo que sigue.

Una propuesta: En la imagen se ha compuesto G consigo misma, y el conjunto total parece haberse dividido en tres subconjuntos, cada uno de los cuales parece que va “a su aire”, sin mezclarse con los otros. ¿Cuáles son?


En otra entrada los relacionaremos con los ciclos. Te puedes adelantar en su estudio.



viernes, 27 de septiembre de 2013

Triangulares de lado par

Esta entrada participa en la Edición 4.123105 del Carnaval de Matemáticas, cuyo anfitrión es el blog Cifras y Teclas.

Los números triangulares 3, 10, 21, 36,…que nos aparecieron en la anterior entrada (http://hojaynumeros.blogspot.com.es/2013/09/igualdad-de-sumas-de-cuadrados-con-un.html) son aquellos cuyo número de orden es par: 3=T(2)=2*3/2; 10=T(4)=4*5/2; 21=T(6)=6*7/2,…

Si aplicamos la expresión algebraica de un número triangular, la de estos será

T(2n)=2n(2n+1)/2=n(2n+1)=2n2+n

Los podemos representar como formados por filas de triángulos de 3 elementos separados por otros elementos aislados. En la imagen hemos representado el 36, es decir T(8)


Observa que está formado por 10 triángulos de tres elementos y 6 puntos aislados. Nos sugiere que un número triangular de orden par equivale al triangular de orden mitad multiplicado por 3 más su triangular anterior, es decir:

T(2n)=3T(n)+T(n-1)

Es fácil demostrarlo por inducción: T(2)=3*T(1)+T(0)=3*1+0=3; T(4)=3*T(2)+T(1)=3*3+1=10…

Probemos con T(2(n+1))=T(2n)+(2n+1)+(2n+2) por definición de número triangular. Si aceptamos la hipótesis para n, tendremos:

T(2(n+1))=3*T(n)+T(n-1)+(n+1+n+1+n+1)+n=3*T(n)+3*(n+1)+T(n-1)+n=3*T(n+1)+T(n), luego la hipótesis se cumple para n+1.

La fórmula T(2n)=3T(n)+T(n-1) es válida

Adaptamos una demostración visual contenida en http://math.berkeley.edu/~rbayer/09su-55/handouts/ProofByPicture-printable.pdf



Así se ve  mejor la relación.

En realidad, estos números son los triangulares que no pueden ser hexagonales. Se sabe que todo hexagonal es triangular, porque su expresión es H(n)=n(2n-1)=2n(2n-1)/2=T(2n-1), pero el número de orden del triangular es 2n-1, impar, luego los que no son hexagonales formarán la sucesión que estamos estudiando: 3, 10, 21, 36,…, que está contenida en http://oeis.org/A014105

Expresión como diferencia entre una suma de pares y otra de impares

En la página OEIS enlazada se destacan estas relaciones:

3=4-1
10=6+8-1-3
21=8+10+12-1-3-5
36=10+12+14+16-1-3-5-7

No se justifican, y esto es una invitación a que lo hagamos nosotros. En primer lugar generalizamos.

Llamamos a nuestra sucesión TT(n)

TT(n)=T(2n)=SP(2(n+1),n)-SI(1,n)

Con SP(2(n+1),n) deseamos expresar que se toman n números pares a partir de 2(n+1) y con SI(1,n) que se suman los primeros n impares. Lo intentamos demostrar por inducción:

TT(n+1)=TT(n)+2n+1+2n+2, como ya sabemos por los párrafos anteriores. Si usamos la hipótesis para n queda:

TT(n+1)=2(n+1)+2(n+2)+…+2(2n)-1-3-5-7…- (2n-1)+2n+1+2n+2

Para construir la nueva suma de pares hay que añadir 2(2n+1)+2(2n+2) y eliminar 2(n+1). La diferencia es 4n+2+4n+4-2n-2=6n+4, que ha de salir de los nuevos sumandos 2n+1+2n+2=4n+3, que equivalen a 6n+4-(2n+1), siendo el paréntesis el nuevo impar que habría que restar, luego la estructura de la fórmula se mantiene y es correcta.

Usamos el álgebra

TT(n)=T(2n)=n(2n+1)=2n2+n
SP(2(n+1),n)=(2(n+1)+2(2n))*n/2=3n2+n
SI(1,n)=n2 como es sabido.

Por tanto, se verifica la diferencia.

Demostración visual

Ahí te la dejamos para el caso de 36. Analízala e intenta reproducirla para otros casos:



Esta construcción sólo es posible porque el triángulo es de orden par.

Otros desarrollos

Se cumple que TT(n)=T(2n)=3+7+11+15+…(4n-1), es decir, que es la suma de impares tomados de 4 en 4 a partir de 3. Si sabes verlo ( mira sólo las bolas rojas de la figura de la  derecha), en la anterior imagen se muestra esa suma con claridad. Puedes justificarlo algebraicamente:

3+7+11+15+…(4n-1)=(3+4n-1)*n/2=(4n+2)*n/2=n(2n+1)=TT(n)

Este desarrollo se puede escribir así:

TT(n)=22-12+42-32+62-52+82-72

que es una forma elegante de terminar esta entrada.






jueves, 19 de septiembre de 2013

Igualdad de sumas de cuadrados con un escalón

Repasando algunas propiedades curiosas me encontré en hojamat.es con esta:

365=102+112+122 = 132+142

La pregunta inmediata que me surgió fue la de si existían otros números con la misma propiedad o similar. Los encontré en OEIS (http://oeis.org/) pero  no descubriré dónde por ahora, aunque los lectores experimentados sabrán hallarlos. Con esto quiero aclarar que lo que se consiga en esta entrada está ya descubierto, pero el objetivo (tan frecuente en este blog) es intentar la concurrencia de métodos y el uso de la hoja de cálculo.

Nos acercaremos al problema con el planteamiento de dos preguntas:

¿Existen más números en los que la suma de tres cuadrados consecutivos coincida con los dos siguientes?
¿Qué ocurrirá si aumentamos o disminuimos el número de cuadrados?

Es probable que hayas pensado en el 25=32+42=52, luego parece que sí existen casos similares. Lo vemos.

Acercamiento con la hoja de cálculo

Si concretamos un número de inicio n y un número de cuadrados igual a k+1 en el primer miembro y a k en el segundo, con estas sencillas líneas podemos descubrir si existen otros casos:

For i=1 to 10000 (por ejemplo)
‘calcula el primer miembro
a = 0
For l = 0 To k
a = a + (i + l) ^ 2
Next l

‘calcula el segundo miembro
b = 0
For l = k + 1 To 2 * k
b = b + (i + l) ^ 2
Next l

‘Los compara y si son iguales lo comunica
If a = b Then
Msgbox(n)
Msgbox(a)
End If
Next i

Hemos tomado como tope 10000, pero después habrá quizás que ampliar. Implementa esto como rutina en tu hoja de cálculo y descubrirás que para cada k existe una solución y sólo una.

Recogemos en una tabla los primeros resultados:



Ahora ya descubrimos que los resultados coinciden con los recogidos en http://oeis.org/A059255, pero no podemos dejarlo así, porque en la tabla aparecen números triangulares y múltiplos de 5. Algo habrá detrás. Intentamos descubrirlo.

Un poco de Álgebra

Si sospechamos que las soluciones son únicas para cada valor de k, es probable que exista una relación algebraica sencilla. En efecto, aunque los principios son algo farragosos, con paciencia algebraica llegaremos a la meta. No damos todos los detalles y te dejamos practicar:

Primera suma de cuadrados A

Suponemos que comienza en n y termina en n+k (k+1 sumandos), es decir:


Segunda suma de cuadrados B


Observa cómo lo hemos escrito, para que te aproveches de la fórmula para la suma de números naturales consecutivos.

Desarrolla cada suma separando los coeficientes de n2, de n y los independientes. Como esta tarea te puede llevar a la desesperación, usa las dos populares fórmulas:



Calcula A-B para igualarla a cero y ve encontrando los coeficientes:

De n2 te deberá resultar a=1. Es fácil verlo.

De n, si sabes usar la primera fórmula ofrecida, con algún retoque, te dará b=-2k2

El coeficiente independiente es un poco más complejo de encontrar correctamente. Puedes usar la suma de cuadrados de los primeros naturales. Deberá resultar c=-2k3-k2

Así que la ecuación para calcular n quedaría así:


Su discriminante es el cuadrado de 2k(k+1), lo que nos garantiza una solución entera. Tomamos la positiva y, efectivamente n=k(2k+1), que es el número triangular de orden 2k, como habíamos sospechado al principio.

Para cada valor de k, la igualdad de cuadrados pretendida ocurre para n=k(2k+1), el número triangular correspondiente a 2k, y es por tanto la solución única.

Hemos resuelto con rigor lo que sospechábamos tras el uso de la hoja de cálculo. Esto es imprescindible: las herramientas informáticas sólo proponen o dan pistas, pero no demuestran nada. A veces olvidamos esta limitación.

Expresión de la suma

Ahora podemos calcular el valor de las dos sumas. Sustituimos k(2k+1) en una de ellas, y sacando factor común nos resulta

A(k)=k(k+1)(2k+1)(12k2+12k+1)/6. 

Por ejemplo, para k=3 resulta 3*4*7*(12*9+12*3+1)=2030.

El problema se ha reducido a una cuestión algebraica.

Carácter de múltiplos de 5

Es fácil ver que aunque la expresión propuesta tiene denominador 6, su resultado será entero, porque ese ha sido su origen, y porque los factores k(k+1)(2k+1) garantizan un factor 2 y un 3. Estúdialo, que no es difícil de descubrir.

¿De dónde sacamos el factor 5?

Lo podemos ver mediante congruencias módulo 5. El valor de k puede presentar respecto al 5 los restos 0, 1, 2, 3 o 4.

Resto 0: En ese caso k contiene el factor 5

Resto 1: El factor 12k2+12k+1 será múltiplo de 5

Resto 2: Contamos con el factor 2k+1

Resto 3: El factor 12k2+12k+1 sería congruente con 12*9+12*3+1=108+36+1=145, múltiplo de 5

Resto 4: Nos proporciona el factor deseado el valor de k+1

En todos los casos la suma de cuadrados será un múltiplo de 5.

Hemos terminado con éxito. Nuestras sospechas tenían fundamento y la sucesión 25, 365, 2030, 7230, 19855, 45955, 94220, 176460… representa simplemente los distintos valores de un polinomio de quinto grado definido sobre los números naturales.

jueves, 12 de septiembre de 2013

Tus funciones, disponibles en todas las hojas de cálculo (2)


Procedimiento para Apache OpenOffice y LibreOffice

En la entrada anterior (http://hojaynumeros.blogspot.com.es/2013/09/tus-funciones-disponibles-en-todas-las.html) proponíamos un procedimiento para extender tus funciones a cualquier hoja de cálculo que abras. Propusimos el procedimiento de crear e instalar un complemento para Excel. Si pasamos a Apache OpenOffice o LibreOffice, la creación de complementos (extensiones) se complica, porque está orientada al uso de terceros. Como aquí sólo nos interesa que tengas disponibles tus funciones en cualquier archivo nuevo que crees para tu propio uso, desarrollaremos un método mucho más sencillo.

Usaremos el código que se presentó en la anterior entrada para descomponer un número natural en sus factores primos. Cópialo y guárdalo, porque te servirá en esta entrada.

Una vez decidido el código deberás pasarlo a Apache OpenOffice o a LibreOffice. El procedimiento es similar en ambos programas, y sólo añadiremos los detalles específicos de LibreOffice si fuera necesario.

Abre una hoja nueva. Acude al menú Herramientas y en él elige Macros, después Organizar macros y finalmente OpenOffice Basic (o LibreOffice Basic)



Observa que tu archivo aparecerá en la parte baja (en la imagen aún no tiene título). Tú has de ir a la superior, “Mis macros - Standard”. Pide crear un módulo nuevo con el botón “Nuevo” de la parte derecha. Si ya existe uno, como ocurre en la imagen, le asignará el nombre de Module 2 u otro similar.

Abre el nuevo módulo que has creado (pinchando sobre su nombre) y pégale el código que desees, como el que te ofrecimos en la anterior entrada. Acepta y cierra todo.

Ahora puede ser un buen momento para comprobar si todo va bien. Vuelve a la hoja. Escribe cualquier número entero, por ejemplo 366220 en la celda B4. En otra celda escribe =factores(B4). Si ves escrito [2,2][5,1][18311,1] es que tu función se comporta bien. La interpretación de lo que ves es que el primer número de cada corchete es el factor primo y el segundo el exponente al que está elevado. En este caso 366220=22*5*18311. No intentes cálculos con esta expresión, que tiene formato de texto.

Como has usado el contenedor “Mis macros”, todo lo que has construido hasta ahora lo encontrarás implementado en cualquier libro que abras. Prueba a hacerlo. Cierra el archivo, abre uno nuevo, y en cualquier celda escribe un número entero y aplícale la función factores (no aparecerá en ningún catálogo. Te lo tienes que aprender)

En la imagen se ha descompuesto el número 491300 en factores dentro de un archivo recién creado:



Ahora inténtalo tú.

lunes, 9 de septiembre de 2013

Tus funciones, disponibles en todas las hojas de cálculo (1)


Procedimiento para Excel

El autor de esta entrada necesita frecuentemente descomponer un número en factores primos. Como esta función no viene implementada en la hoja de cálculo, ha tenido que programarla en el Basic de Excel. El problema que surge es que sólo está disponible en la hoja que contiene el código y no en cualquier otra que se cree. Esto tiene un remedio, y es la construcción de un complemento de Excel que nos permita acceder a esa factorización cuando se abra cualquier hoja.

Complementos de Excel

Para saber de qué estamos hablando, entra en las Opciones de Excel y busca Complementos. En la ventana que se abre podrás comprobar qué complementos tienes instalados en tu equipo














(el volcado de pantalla corresponde al Excel 2007 sobre Windows XP, una querida antigüedad,
pero igual te funciona en Excel 2010)

En la imagen vemos que el autor tiene instaladas dos herramientas de análisis, el Solver y un complemento suyo titulado Micomplemento. Como habrás comprendido, los cuatro contienen funciones y rutinas que no vienen implementadas en Excel originariamente.

Crea tu propio complemento

Al final de esta entrada se ha incluido el código mínimo necesario para implementar la descomposición factorial de un número entero (dentro de los límites de Excel y del propio código, no le pidas milagros) como un regalo del autor a sus lectores.

Pasos a seguir

En primer lugar tienes que escribir tus funciones. En el caso que estamos desarrollando basta con que las copies desde el final de esta entrada. Abre un archivo nuevo y pega en él las definiciones que desees según te explicamos a continuación:

Una vez decidido el código deberás pasarlo a Excel. Para ello acude a la pestaña Programador de la cinta de opciones. Si no la tienes visible deberás activarla en Opciones de Excel – Más frecuentes.

Entras en el ámbito de programación mediante el primer botón de la ficha Programador:



Te aparecerá el acceso a las macros que utiliza tu hoja de cálculo en este momento:



A ti no te aparecerá la referencia a Micomplemento. También, si usas la versión 2010 los colores podrán cambiar, pero el contenido será el mismo.

Ahora debes crear un módulo que aloje tu código. Pide Insertar – Módulo y Excel lo hará con el nombre de Modulo 1 (salvo que tengas otro anterior).

En la hoja en blanco que aparece pega el código que habrás copiado desde esta entrada o que haya sido creado por ti:



Ahora puede ser un buen momento para comprobar si todo va bien. Guarda el archivo nuevo como Libro habilitado para macros. Vuelve a la hoja. Escribe cualquier número entero, por ejemplo 366220 en la celda B4. En otra celda escribe =factores(B4). Si ves escrito [2,2][5,1][18311,1] es que tu función se comporta bien. La interpretación de lo que ves es que el primer número de cada corchete es el factor primo y el segundo el exponente al que está elevado. En este caso 366220=22*5*18311. No intentes cálculos con esta expresión, que tiene formato de texto.

Lo que has construido hasta ahora sólo te vale para el archivo que contiene el código. Para que se active en cualquier hoja hay que convertirlo en complemento.

Instalación del complemento

Borra si acaso los cálculos efectuados y vuelve a guardar el libro como complemento de Excel. Puedes cambiarle el nombre a factores. Guíate por la imagen:



Observa que Excel te lleva a la carpeta Complementos, que es donde debe estar alojado el tuyo.
No cambies esa carpeta, que si no, no podrás instalar el complemento.

Puedes acceder a la ruta en la que está situada la carpeta:



En Office 2010 se te muestra también toda la ruta, que es distinta a la anterior:





Es interesante conocer esa ruta, por si deseas borrar el archivo.

Instalación

Ya sólo te falta instalar tu complemento. Vuelve a las opciones de Excel y busca Complementos. En la parte inferior de la ventana tendrás el botón Ir… Úsalo y descubrirás que tu trabajo está preparado ya para ser usado:



Activa la casilla de verificación que está junto al nombre Factores y pulsa Aceptar. Si todo ha ido bien, cuando abras Excel de nuevo, en el catálogo de funciones definidas por el usuario dispondrás de la función factores:



Las otras dos funciones ajusta y sacaprimos son auxiliares y no tienes por qué usarlas, ya que quizás no interpretarías bien su resultado.

Ahora define tú un complemento propio ¡Suerte!


Código en Basic


Global primo(50), expo(50)
Global numomega

Function ajusta$(a)
Dim d$
d$ = Str$(a)
While Left$(d$, 1) = " "
d$ = Right$(d$, Len(d$) - 1)
Wend
ajusta$ = d$

End Function

Public Function sacaprimos(n)
Dim f, a, e

a = n
f = 2: i = 0: numomega = 0
While f * f <= a
e = 0
While a / f = Int(a / f)
e = e + 1
a = a / f
Wend
If e > 0 Then
numomega = numomega + 1
primo(numomega) = f
expo(numomega) = e
End If
If f = 2 Then f = 3 Else f = f + 2
Wend
If a > 1 Then
numomega = numomega + 1
primo(numomega) = a
expo(numomega) = 1
End If
sacaprimos = numomega

End Function

Public Function factores(n) As String
Dim a, nn
Dim s$

'saca factores en forma de string
a = n
nn = sacaprimos(a)
s$ = ""
For i = 1 To numomega
s$ = s$ + "[" + ajusta(primo(i)) + "," + ajusta(expo(i)) + "]"
Next i
factores = s$
End Function

domingo, 23 de junio de 2013

Como en casita en ningún sitio


Esta entrada participa en el Carnaval de Matemáticas edición Edición 4,12310, cuyo anfitrión es el blog Geometría dinámica.

A partir de un número natural se pueden definir muchas funciones de variable entera. Sólo algunas de ellas tienen la propiedad de que, en valores particulares, sus cifras son una subcadena (substring) de las propias cifras del número elegido expresado en base decimal.

Ya tocamos este tema, pero con múltiplos (http://hojaynumeros.blogspot.com.es/2011/04/los-multiplos-acunan.html). Ahora lo haremos con funciones.

Por ejemplo, si sumamos las cifras de un número en el sistema decimal el resultado constituye una función de ese número. Pues bien, en algunos casos, la expresión de la suma de sus cifras está incluida en el conjunto ordenado de las cifras del número. Es lo que ocurre con el 2711, cuya suma de cifras, 11, es una subcadena de 2711. Son muchos los números que tienen esa propiedad. Aquí tienes los primos que la cumplen:

2, 3, 5, 7, 109, 139, 149, 179, 199, 911, 919, 1009, 1063, 1109, 1163, 1181, 1327, 1381, 1409, 1427, 1481, 1609, 1627, 1663, 1709, 1811, 2099, 2137, 2399, 2699, 2711,…
http://oeis.org/A052019

y en esta tienes todos los casos, primos o compuestos http://oeis.org/A052018
Puedes comprobar cualquiera de ellos.

Otros presentan una propiedad similar con una función tan sofisticada como la indicatriz de Euler (http://hojaynumeros.blogspot.com.es/2012/07/la-herencia-de-euclides-5-la-funcion.html)

1, 1320, 1640, 1768, 1996, 2640, 3960, 13200, 16400, 19984, 19996, 26400, 39600, 132000, …

Los puedes consultar en http://oeis.org/A067206 y además leer las interesantes propiedades que tienen.

En estos números sus cifras son como la gran casa que acoge a una función concreta. Hay más casos:

15, 25, 125, 1537, 3977, 11371, 38117, 110317, 117197, 123679, 143323, 146137, 179297, 197513, 316619, 390913, 397139, 399797, 485357, 779917, 797191, 990919… contienen las cifras de su mayor divisor propio (http://oeis.org/A062238)

http://oeis.org/A118669 con el radical en los no libres de cuadrados.

Y existen más curiosidades: http://oeis.org/A198298, http://oeis.org/A018834, http://oeis.org/A073175

Propiedades presentadas por este blog

Aportamos algo más: buscaremos funciones que en ciertos números estén como “en casita” dentro de sus cifras.

Suma de partes alícuotas

Existen números compuestos (en los primos esto carece de interés) en los que la suma de sus partes alícuotas (divisores de N menores que N) tienen sus cifras incluidas como cadenas en las suyas propias. Son estos:

6, 28, 121, 437, 496, 611, 1331, 1397, 8128, 10201, 14641, 27019, 40301, 40991, 41347, 41917, 45743, 47873, 49901, 51101, 67997, 76459, 97637, 99101, 99553, 99779, 120353, 133307, 133961, 134179, 153091, 161051, 165101, 165743, 166171, 182525, 186503, 190987, 193121, 357101, 357307, 359573, 360397, 418153, 464353, 924611…

Los hemos publicado en https://oeis.org/A225417. Recuerda que sólo consideramos los compuestos.

Entre ellos están los números perfectos. Razona el porqué. Todos los demás es claro que son deficientes e impares. Como el razonamiento es un poco largo, lo dejamos para el final (ver Complemento abajo) y así, si no te apetece leerlo, no te estorba para ver los siguientes.

Un código PARI para obtenerlos puede ser

indigit(a,b)={ u=Vec(Str(a));v=Vec(Str(b));indi=0;la=#u;lb=#v;i=1;while(i<=la-lb+1&&indi==0,d=0;for(x=1,lb,if(v[x]==u[i+x-1],d+=1));indi=(d==lb) ;i+=1);return(indi)} 
{ for(i=4,10^7,if(indigit(i,sigma(i,1)-i)&&isprime(i)==0,print(i)))}

Se presentan casos espectaculares, como 161051, cuya suma de partes alícuotas es 16105, y 182525 con suma 82525

Suma de factores primos con repetición

Hemos experimentado con nuestra querida función SOPFR (logaritmo entero: http://hojaynumeros.blogspot.com.es/2009/11/logaritmo-entero-1.html, suma de factores primos con repetición). Como en el caso de los números primos la propiedad es trivial (¿por qué?), hemos buscado la propiedad sólo para compuestos y los primeros son estos:

4, 18, 144, 150, 168, 175, 198, 220, 230, 242, 246, 255, 322, 366, 444, 624, 1166, 1243, 1323, 1330, 1331, 1462, 1480, 1530, 1992, 2187, 2230, 2240, 2406, 2436, 2625, 2650, 2673, 2730, 2744, 2808, 2925, 3024, 3125, 3182, 3264, 3286, 3366, 3388, 3420, 3484, 3591…

Un caso notable es el de 1330 y 1331, ambos con el mismo valor de SOPFR. En efecto, 1330=2*5*7*19, con suma 33 y 1331=11*11*11 con igual suma.

Una subsucesión de este ejemplo la tienes en http://oeis.org/A143992

Suma de factores primos sin repetición

Con la función afín a la anterior SOPF (suma de los factores primos sin repetir) también existen números que poseen la propiedad

Son estos

25, 32, 54, 98, 125, 126, 128, 140, 196, 230, 243, 246, 255, 256, 315, 322, 348, 366, 392, 512, 520, 576, 625, 810, 828, 896, 1024, 1029, 1060, 1080, 1152, 1166…

Es fácil comprender que tienen menos interés porque en la potencias de primos resulta más fácil su cumplimiento. Los hemos incorporado a OEIS: https://oeis.org/A225418

Se obtienen con el código PARI

indigit(a,b)={ u=Vec(Str(a));v=Vec(Str(b));indi=0;la=#u;lb=#v;i=1;while(i<=la-lb+1&&indi==0,d=0;for(x=1,lb,if(v[x]==u[i+x-1],d+=1));indi=(d==lb) ;i+=1);return(indi)} 
sopf(n)= { local(f, s=0); f=factor(n); for(i=1, matsize(f)[1], s+=f[i, 1]); return(s) } 
{ for(i=2,10^5,if(indigit(i,sopf(i))&&isprime(i)==0,print(i)))}

Destaca el caso de 1243, cuyos divisores primos son 111 y 13, y su suma sopf(1243)=111+13=124, que sólo se diferencia del número en un 3.

Función TAU

La función TAU cuenta el número de divisores de un número. También ella puede ser una subcadena. Lo es en muchos ejemplos, por lo que es menos interesante

Aquí tienes un listado de los primeros:

2, 14, 23, 29, 34, 46, 63, 68, 74, 76, 78, 88, 94, 116, 126, 127, 128, 134, 138, 141, 142, 143, 145, 146, 164, 168, 180, 182, 184, 186, 189, 194, 196, 211, 214, 216, 223, 227, 229, 233, 236, 238, 239, 241, 247, 248, 249, 251, 254, 257, 258, 261, 263, 268, 269, 271, 274, 277, 281, 282

PARI para obtenerlos:

indigit(a,b)={ u=Vec(Str(a));v=Vec(Str(b));indi=0;la=#u;lb=#v;i=1;while(i<=la-lb+1&&indi==0,d=0;for(x=1,lb,if(v[x]==u[i+x-1],d+=1));indi=(d==lb) ;i+=1);return(indi)} 
{ for(i=1,1000,if(indigit(i,sigma(i,0)),print(i)))}

Otros casos de menos interés

Los ejemplos que presentaremos a continuación como simples curiosidades provienen de listados mayores, en los que abundan los casos triviales. Con eso se aumentan excesivamente los números y se llega a hacer aburrido. Hemos preferido presentar los destacados.

Con divisores de cierto tipo

En casi todos los casos aparecen demasiadas soluciones, con muchos casos triviales que le quitan interés. Destacamos algunos:

* 11371 contiene a su mayor divisor impar propio, 137
* Si a 22742 le suprimes las cifras extremas se convierte en su mayor divisor par propio, 274.
* Igual le ocurre a 31218 con su mayor divisor cuadrado 121. También 36250 se convertiría en 625.
* Si a 11300 le suprimos las cifras extremas se convierte en su suma de divisores cuadrados: 130=100+25+4+1
* 5145 contiene a la suma de sus divisores triangulares: 145=105+21+15+3+1
* Por último, 1584 contiene a la suma de sus divisores que pertenecen a la sucesión de Fibonacci: 158=144+8+3+2+1

Esto hay que tomarlo como un pasatiempo sin mayor interés.

Otros ejemplos:

La parte cuadrada de un número o la parte libre (http://hojaynumeros.blogspot.com.es/2011/05/parte-cuadrada-y-parte-libre.html)

Con la parte cuadrada tienes dos ejemplos sencillos pero no triviales: 9225 contiene a su parte cuadrada 225, porque 9225=15^2*41, y 10625=5^4*17 contiene a su parte cuadrada 625. Intenta otros ejemplos.

Con la parte libre podemos destacar como menos triviales 2835, que contiene a su parte libre 35 (comprueba que es así) o el número 2772=2^2-3^2*7*11 que contiene a 77=7*11

Bigomega cuenta los divisores primos con repetición. Con bigomega destacamos estos:



Se ha adjuntado la factorización (cada primo con su exponente) para que los compruebes.

Adjuntamos ahora la demostración anunciada:

Complemento

Si un número aloja a una función suya como substring, la relación entre sus valores está limitada por unas desigualdades fáciles de obtener. Si ambos números son iguales, en el caso de las partes alícuotas resultaría un número perfecto. Dejamos ese caso.

Si los números no son iguales, sino que la relación de substring es estricta, las cifras alojadas pueden ser las primeras, como cuando 2187 aloja a su función SOPFR 21, estar en el interior rodeadas por otras cifras, como 1331 con sopfr(1331)=33, o bien al final, como ocurre con la función phi: phi(1768)=768.
Veamos los tres casos, en los que llamamos A al número total y B a las cifras alojadas. Su cociente A/B es el que vamos a acotar.

 (a) Al principio

Si las cifras están al  principio, A=B*10^k+C, siendo C un número de k cifras. El cociente pedido sería: A/B=10^k+C/b, luego A/B>=10^k. En el más desfavorable de los casos A sería más de diez veces mayor que B

(b) En el interior

Entonces A=D*10^m+B*10^n+C, siendo C un número de n cifras. Así quedaría
A/B=D*10^m/B+10^n+C/B>=10^n
También, en el caso más desfavorable, A/B>=10

(c) Al final

En ese caso A=C*10^h+B, con B<C*10^h, luego A/B ha de ser mayor que 2. Por ejemplo, el caso más desfavorable con tres cifras sería 1999/999=2,001001

¿Qué sacamos de todo esto? Pues que en el caso de las partes alícuotas el número ha de ser deficiente (si no es perfecto), pues su abundancia es B/A<1/2. Ahora bien, no puede ser par, porque en estos casos el mayor divisor propio M de N es N/2, con lo que tendríamos que la suma de partes alicuotas sería mayor que N/2 y por tanto la abundancia sería mayor que 1/2 en contra de lo demostrado mediante cifras:

Los elementos de la sucesión, o son perfectos o son deficientes impares.