Tag Archive: matematicas


Cómo instalar Cantor en Ubuntu Karmic

Cantor és una aplicación científica/educativa creada para el escritorio KDE (aunque puede funcionar fuera de éste). Su objetivo es aglutinar y simplificar el uso de otro software matemático, como Sage, Maxima o KAlgebra. El principal problema para usar Cantor ahora mismo es que casi ninguna distribución de Linux actual lo ha incorporado en sus repositorios oficiales ya que es muy nuevo (será lanzado dentro de la versión 4.4 del escritorio KDE).

Por suerte han creado un repositorio PPA en Launchpad, así que “solo” tendremos que añadir el repositorio a la lista de repositorios e instalar cantor. Ahí van los comandos:

sudo add-apt-repository ppa:kubuntu-ppa/beta
sudo aptitude update
#Este paso no es estrictamente necerario, pero lo recomiendo: aptitude safe-upgrade
sudo aptitude install cantor

Cuando he dicho “solo” ha sido porque aparecerán algunos problemas. Resulta que cantor depende de muchos paquetes de KDE4.4, del que solo hemos visto sus versiones RC hasta el momento, y que tampoco ha sido incorporado en ningún repositorio oficial de ninguna distribución. Ésto conlleva que al instalar Cantor, deberemos actualizar multitud de paquetes y en algun momento aparecerán conflictos por resolver (bueno, solo si tenéis alguna aplicación de KDE instalada previamente claro). No puedo dar una explicación estandar para resolver esos problemas, pues cada uno se encontrará con problemas de dependencias diferentes en función al software que tenga o no tenga instalado en su sistema, en todo caso creo que el problema no es demasiado grave (al menos para los experimentados):

Saludos!

Algunos tips para SAGE

Como es con la práctica con la que se aprende, a lo largo del tiempo usando SAGE+Maxima (para evitar el uso de Maple) he ido aprendiendo algunos truquillos que (os?) pueden resultar interesantes (bien, me lo parecen a mi, y eso es suficiente :) ).

  • Visualización de resultados: SAGE puede funcionar de dos formas distintas, dentro de la línea de comandos y como aplicación web (invocando el comando notebook() dentro de la línea de comandos se inicia un servidor al que se puede acceder desde cualquier navegador convencional). No es difícil imaginar que dentro del modo línea de comandos sería prácticamente imposible visualizar ciertos resultados de forma cómoda, precisamente por eso implementaron el modo web… pero aun así nos podemos encontrar con sorpresas desagradables. Por defecto los resultados se mostrarán solo con carácteres ascii y consecuentemente pueden ser de difícil legibilidad. Hay un comando llamado latex() que transforma la entrada en una salida escrita en formato LaTeX, el problema es que para visualizar eso necesitamos pasarlo a un compilador de LaTeX y transformarlo, el proceso en sí es demasiado pesado y lento.

    La solución viene de la mano de jsMath, que son unas librerías que sirven para visualizar textos matemáticos en páginas web. En Debian y Ubuntu se pueden instalar desde aptitude o apt, yo recomiendo instalar dos paquetes: jsmath y ttf-jsmath. Una vez instaladas sólo habrá que marcar el checkbox Typeset que podemos encontrar en la parte superior de la página web que genera SAGE para trabajar, con ésto obtendremos salidas bien formateadas y con un aspecto agradable :)   .

  • Trabajar con polinomios sobre diferentes cuerpos: Dependiendo del cuerpo sobre el que trabajemos los polinomios se pueden descomponer de diferentes maneras y cuando se evaluan sobre un elemento del cuerpo pueden dar resultados diferentes. Por lo general la gente trabaja sobre el cuerpo de los números reales, otros trabajan sobre los complejos, y otros sobre los racionales, esos casos son los más usuales para los no matemáticos, pero muchos otros nos encontramos con la necesidad de trabajar con otros cuerpos que nos pueden resultar mucho menos intuitivos a la hora de realizar los cálculos. ¿Y como indicamos a SAGE que estamos trabajando con un cuerpo u otro? Ejecutando el siguiente comando, a partir de ese momento estaremos trabajando con el cuerpo indicado:
    R.<x>=cuerpo[]
    donde cuerpo es el cuerpo que queramos (y sea construible dentro de SAGE), para los racionales usamos QQ, para los reales RR, y para los complejos CC, y x es la variable que usaremos para el polinomio. Nosotros podemos construir otros cuerpos, de momento yo sólo he aprendido a construir cuerpos finitos (hay teoremas de isomorfismo que me aseguran que los que construyo son los únicos finitos). Para construir cuerpos finitos utilizaremos el comando:
    NombreQueLeQueramosDarAlCuerpo=FG(número)
    donde número és la cantidad de elementos que tendrá el cuerpo. Podemos probar las diferencias usando, por ejemplo, el comando factor sobre una expresión polinómica, de esta forma:
    factor(x^8-1)
  • Información extra que os pueda interesar: Dado que SAGE es muy extenso y yo he explicado muy pocas cosas, para los que no tengan mucha experiencia o por el contrario, quieran profundizar aun más, os enlazo algunos documentos:

Espero que a alguien le pueda servir ésto :) . Saludos!

En realidad el título debería ser “Resolver sistemas de EDOs de primer orden con coeficientes constantes con Maxima“, pero obviamente era demasiado largo. Lo que escribiré aquí se puede encontrar en la ayuda de Maxima (no sé donde está exactamente si se quiere acceder a pelo a los archivos, pero es accesible fácilmente desde la interfaz wxMaxima), pero creo que puede ser interesante explicar como se ejecutan cálculos como éstos para aquellos que no conozcan demasiado este programa.

Como ya he indicado en el título, hago referencia a EDOs con coeficientes constantes porque Maxima (almenos con al versión instalada en Ubuntu Jaunty 9.04) tiene algunas dificultades para trabajar con ecuaciones más complejas, en todo caso puede ser muy útil tener una herramienta como ésta a mano si no se dispone de otras como Maple (mi caso, por ejemplo).

Entonces, para resolver las siguientes ecuaciones relacionadas con el típico problema de los tanques interconectados entre los que fluyen líquidos (aquí luciré el nuevo plugin para mostrar latex en WordPress :D ):

 \begin{cases} \dot{QA_{T}}(t) = 3 + \frac{4}{100}QB_{T}(t) - \frac{5+8}{100}QA_{T}(t) \\ \\ \dot{QB_{T}}(t) = 3 + \frac{5}{100}QA_{T}(t) - \frac{4+9}{100}QB_{T}(t) \\ \\  QA_{T}(0) = 0 \\ \\ QB_{T}(0) = 0 \end{cases}

Lo haremos con los siguientes comandos:

 eq1: 'diff(x(t), t) = (-13/100)*x(t) + (4/100)*y(t) + 3;
 eq2: 'diff(y(t), t) = (5/100)*x(t) + (-13/100)*y(t) + 3;
 atvalue(x(t), t=0, 0);
 atvalue(y(t), t=0, 0);
 desolve([eq1, eq2], [x(t), y(t)]);

En las primeras dos líneas definimos las dos ecuaciones diferenciales (les damos nombre poniendo el nombre seguido de dos puntos y seguidamente la ecuación). En las siguientes dos líneas se escriben las restricciones que tienen que satisfacer las soluciones (que, no lo olvidemos, son funciones). Y por último se le passa un array con las ecuaciones a la función dsolve, así como un array con el nombre de las funciones que queremos encontrar. Ésto es todo amigos, espero que os sirva ;) .

A muchos nos duele a veces tener que resolver según que cálculos a mano por lo tediosa que se vuelve al tarea. Es por eso que acudimos a herramientas como Maple, Matlab o el realmente admirable Mathematica (todas ellas privativas) para que nos simplifiquen los cálculos y poder dedicar ese tiempo a ver alguna serie friki por internet. El problema es que tenemos que pagar por ellas, hacer el piratilla o racanear licencias a nuestra universidad, lo que no siempre resulta algo grato.

Otro problema añadido (si queremos hacer demostraciones matemáticas con ellos y realmente nos importa que tengan cierta validez científica) es que dado que el código de dichos programas es cerrado, una parte de la demostración no es accesible a nadie, es decir, nadie puede verificar realmente que todas las operaciones que ha hecho internamente el programa en cuestión sean realmente correctas (porque no se puede ver su código), en todo caso se tiene que volver a hacer a mano y comparar, con lo que no se gana absolutamente nada. A esto tenemos que añadir que las demostraciones tampoco son accesibles a casi nadie que no tenga una capacidad adquisitiva concreta pues para comprobar que el programa da esos resultados concretos necesita tenerlo, y para ello debe pagar una licencia. Es decir, no es una buena idea usar software privativo para crear conocimiento científico.

¿Y qué soluciones hay? Pues de todo un poco, tenemos Octave, Maxima y… nuestra gran estrella: SAGE. SAGE és una pieza de software genial que nos permite hacer casi de todo, funciona en la línea de comandos, pero también tiene una interfaz web que va a las mil maravillas. Podemos encontrarlo en su página oficial http://www.sagemath.org en su versión más reciente (En los repos de Ubuntu y Debian está algo anticuado). Yo particularmente utilizo una mezcla entre Maxima y SAGE, dentro de poco podremos usar un nuevo programa llamado Cantor (de KDE) que viene a ser una interfaz que aglutinará el uso de Maxima, R, SAGE y KAlgebra, la estoy esperando con ilusión.

Contando sudokus

El otro día me estaba aburriendo (como casi siempre) y se me ocurrió una pregunta que a la mayoría de los mortales les parecerá carente de importancia… la verdad es que yo todavía no he conseguido encontrar ningún motivo para considerarla importante, pero la curiosidad (y sobretodo la dificultad de hallar la respuesta) puede más conmigo que la “importancia” de la cuestión.

La pregunta es:
¿Como se puede calcular la cantidad de n-sudokus que existen?

Para intentar responder a ésto lo primero que deberíamos hacer es definir el término n-sudoku. Daré una definición informal que nos servirá para nuestros propósitos.

Definición:
Un n-sudoku es una matriz de números naturales cuadrada con n² filas y columnas que cumple las siguientes restricciones:

  1. Los únicos números válidos van del 1 al n².
  2. En una fila no se puede repetir ningún número
  3. En una columna no se puede repetir ningún número
  4. Si dividimos la matriz en n² submatrices cuadradas disjuntas (sólo hay una forma de hacerlo), en ninguna de ellas se puede repetir ningún número.

Es claro que el 3-sudoku es el sudoku que todo el mundo conoce.

Antes de continuar tengo que aclarar una cosa: No he conseguido ninguna respuesta satisfactoria, parece que para cada número natural n mayor o igual que 2 tenemos que aplicar cálculos especializados en ese caso concreto. Yo por mi parte he hecho el cálculo para el caso más sencillo, el 2-sudoku, que en breve os presento :) .

Lo que haré para calcular la cantidad de 2-sudokus que existen es ir rellenando cada casilla de un 2-sudoku con la cantidad de números que podría poner si ya hubiera puesto los anteriores números, la primera secuencia os resultará familiar, que es la cantidad de formas en que podemos ordenas 4 números sin repetición en 4 posiciones distintas (Aviso, iré rellenando una matriz, pero no lo confundamos con el hecho de ir resolviendo un sudoku, porque no lo estoy haciendo).

4 3 2 1
? ? ? ?
? ? ? ?
? ? ? ?

Para rellenar la siguiente fila tendremos que hacer algunas observaciones pero sigue siendo muy sencillo:

4 3 2 1
2 1 2 1
? ? ? ?
? ? ? ?

El primer 2 viene dado porque ya se han eliminado dos posibilidades en la primera submatriz, el siguiente 1 viene dado porque sólo se puede rellenar de una sola forma la última casilla de la primera submatriz. En los siguientes números también tenemos 2 y 1 pero tenemos que analizarlo con un poco más de cuidado. Podríamos pensar que ese 2 en realidad es un 1 porque tenemos más restricciones que antes (la fila superior, la submatriz y los elementos de la misma fila que hay en la izquierda). El caso es que tenemos suerte, y los elementos que podemos poner en las casillas (2,3) y (2,4) son los mismos que hay en las casillas (1, 1) y (1, 2) aunque podrían tener otro orden, por lo que sólo tenemos 2 y 1 opciones respectivamente.

4 3 2 1
2 1 2 1
2 2 ? ?
1 1 ? ?

La casilla (3, 1) la rellenamos con un 2 porque solo tiene las restricciones de la columna a la que pertenece (a la que de momento sólo hemos asignado 2 números), automáticamente vemos que a la casilla (4, 1) sólo le queda 1 opción. La casilla (3,2) también tiene dos opciones disponibles, otra vez podría parecer que tiene más restricciones que las de la columna a la que pertenece, pero si observamos bien, veremos que los elemenos que pertenecen a su misma submatriz son los mismos que la estan restringiendo en su columna, por lo que de 4 opciones seguirá pudiendo escoger 2. Obviamente a la casilla (4,2) sólo le queda una opción (o por las restricciones de la columna, o por las de la submatriz).

Ahora es cuando nos encontramos con el problema que por lo visto aparece más veces en el caso de los 3-sudokus. En el caso de la casilla (3,3) no tenemos una cantidad fija de números que podamos poner habiendo fijado los anteriores… a priori parece que esa cantidad depende de la configuración de los números que hayamos escrito anteriormente (mientras construíamos el sudoku, no lo confundamos con los números que hemos anotado nosotros para contar). Pondré dos ejemplos de 2-sudokus para mostrar lo que estoy diciendo.

1 2 3 4
3 4 1 2
2 1 4 ?
4 3 ? ?
2
4 3 1
1 3 2 4
3 2 ? ?
4 1 ? ?

En el caso del primer 2-sudoku resuelto vemos que en la casilla (3, 3) solo podemos poner un número, el 4. En el segundo caso tenemos dos posibilidades para la posición (3, 3), podríamos poner o bien un 1 o bien un 4, pero ojo, lo que a priori parecía un sudoku resoluble ahora se muestra como algo sin solución. Como bien podemos ver, si en la casilla (3, 3) ponemos un 1 o un 4, el que no hayamos puesto se tendrá que poner en una de las 3 casillas vacías que nos quedan… ¡pero en ninguna se puede poner porque las restricciones no lo permiten!

No voy a demostrarlo formalmente, pero es facil ver que no se puede dar el caso en que la casilla (3, 3) pueda tener dos opciones, porque siempre nos encotraremos con el mismo problema, que habrá un número imposible de escribir si se quieren seguir las restricciones.

Por lo que la matriz que usabamos para contar nos quedará así (las casillas restantes a parte de las (3, 3) obviamente solo tendran una opción posible dadas las restricciones).

4 3 2 1
2 1 2 1
2 2 1 1
1 1 1 1

Ahora solo tenemos que multiplicar los números que hemos obtenido y obtendremos la cantidad de 2-sudokus existentes una cota superior de los sudokus existentes (tendríamos que eliminar las configuraciones que no nos permitían encontrar solución, como la que he mostrado para ejemplificar).
4·3·2·1 · 2·1·2·1 · 2·2·1·1 · 1·1·1·1 = 384

Así pues deberíamos calcular cuantas veces puede ocurrir esta situación y restarle ese número a 384. Las submatrices azul y verde determinan los valores de la submatriz naranja, por lo que sólo hace falta contar cuantas configuraciones pueden tener las matrices azules y verdes manteniendo esa configuración que transformaba el sudoku en irresoluble. Para la casilla (1, 3) (submatriz verde, esquina superior izquierda) podemos poner 4 números, para la casilla (2, 3) (esquina inferior izquierda de la submatriz verde) podemos poner 3 números, para lo que queda de verde sólo nos quedan dos opciones. Para la fila superior de la submatriz azul tenemos dos posibles órdenaciones, podría parecer que lo mismo pasa para la fila inferior, pero resulta que no es así, pues una de las dos posibles ordenaciones sería incompatible también con una ordenación correcta para la submatriz naranja.

Lo que nos da una cantidad de 4·3·2·2 = 48 , con lo que tenemos (ahora sí) que el número de 2-sudokus existentes es 384-48 = 336 .

Para acabar, algunos apuntes. El problema que hemos tenido con la casilla (3, 3) ha sido relativamente sencillo de resolver, pero  se puede dar el caso en el que realmente no se pueda contar la cantidad de números que se pueden poner en una casilla sabiendo que se han escrito los anteriores, puede que la configuración de los números haga variar dicho número. Y parece que realmente es lo que pasa en los casos en los que n es superior o igual a 3.

Por lo visto la cosa es mas complicada de lo que a primera vista parecía, pues la primera solución encontrada para contar el número de 3-sudokus posibles se halló en 2005 por Bertram Felgenhauer y Frazer Jarvis. Para ello contaron con razonamientos lógicos parecidos a los que yo he hecho para este caso más sencillo (obviamente los suyos debieron ser mucho más sofisticados) pero tambien necesitaron que un ordendor estuviera haciendo cálculos por fuerza bruta unas cuantas horas. La cosa no parece fácil. Así pues la pregunta que me hice sigue sin resolver.

Para los que sientan curiosidad por este tipo de juegos, hay que decir que se pueden llegar a complicar mucho, y de muchas formas distintas. Una es aumentar el tamaño del n-sudoku, es decir, aumentar la n. Otra es hacer que las submatrices no sean cuadradas, sino rectangulares.. para eso podríamos definir el concepto (m,n)-sudoku, habría n·m números diferentes, y n·m submatrices no cuadradas de tamaño n·m. Es claro que los n-sudokus son un caso particular de los (m,n)-sudokus, y si ya es complicada la pregunta para el caso particular… no quiero imaginar como sería en éste.

Pero todavía nos estamos quedando cortos, la cosa se podría complicar más aun si las regiones que hemos usado para las restricciones no fueran submatrices sino conjuntos conexos pero no necesariamente con una distribución tan uniforme y regular como la de los rectángulos o cuadrados. En el artículo de Sudoku de la wikipedia podemos ver un ejemplo, se llaman sudokus nonominos y son la rehostia de complicados.

Ale, si os aburrís tenéis algo más en qué pensar, ahora parece que este juego ya no se reduce solo a intentar rellenar huecos :p .

Enlaces adicionales:

Videoteca: Geometría en 4 dimensiones

Gracias a mi compi Mohamed me entero de que en clase de geometría la profesora escribió en la pizarra la url de una página con vídeos sobre geometría en 2, 3 y 4 dimensiones… son bastante interesantes, aunque no tengan un gran nivel técnico y la voz del narrador le de a uno ganas de dormir.. pero ya lo sabéis, yo siempre me duermo cuando alguien me intenta enseñar algo, xD.

http://www.dimensions-math.org/Dim_reg_ES.htm

Disfrutadlo :)

Números: 3

  • En el antiguo testamento (judío… y de paso cristiano) … identificaron el número 3 con… π !!! (esto es una muestra más de la inteligencia de nuestros religiosos)
  • Pero se ve que es un número que REALMENTE GUSTA A LOS RELIGIOSOS… porque… ¿qué me decís de la Santísima Trinidad? (que no entienden ni ellos… xD)
  • Es el número de lados de un triángulo.
  • Es el número de dimensiones del espacio en el que vivimos.
  • Es el máximo número de fallos que puedes hacer si quieres aprovar el exámen teórico del carnet de conducir (coches) en España.. xD .
  • 3 es el primer número natural n (en orden creciente) tal que si a, b y c son números naturales, entonces la ecuación an=bn+cn no tiene ninguna combinación de a, b y c. (Último teorema de Fermat).
  • Si representamos los números naturales con la base numérica usual (10) entonces se cumple que si un número es múltiple de 3 y sumamos sus cifras, el resultado también es múltiple de 3. Ejemplos:
    • 12 : 1+2=3=1·3
    • 33 : 3+3=6=2·3
    • 24 : 2+4=6=2·3
    • 72 : 7+2=9=3·3
  • Es un mal número para una relación amorosa.
  • Los tréboles tienen… ?¿ hojas .
  • Es el número de años que llevo estudiando en la universidad.
  • Es el número de propiedades que tiene que cumplir una relación para ser una relación de equivalencia. (Reflexividad, simetría y transitividad).
  • No estoy muy inspirado… porfaaaaaa… más propiedaadeeeees!!!

Números: 2

El número 2:

  • Es el número primo más pequeño que existe.
  • Es el único número primo par (sí, no hacía falta que lo dijera, xD)
  • Es la base numérica que usan la mayoría de computadores actuales pare realizar sus cálculos y almacenar datos.
  • Es el único número número natural tal que todos los números reales (positivos) se pueden expresar como una suma de algunas de sus potencias con exponente entero (apareciendo una única vez cada potencia, si es que aparece como sumando).
  • Es el número de dimensiones del plano.
  • 22=2·2=2+2 (És el único número que elevado a él mismo, multiplicado por él mismo, y sumado con él mismo produce el mismo resultado).
  • Es el tercer término de la sucesión de Fibonacci .
  • El cuerpo más pequeño contiene 2 elementos.

Números: 1

Vamos a ver que tiene de “especial” el número 1 (por perder un poco el tiempo):

  • Cualquier número multiplicado por él es igual a él mismo: a·1=a .
  • Su inverso es él mismo, o equivalentemente, cualquier número dividido entre él es él mismo: a/1 = a .
  • Cualquier número elevado a 1 es él mismo : a1=a .
  • Es el número de dimensiones de una recta .
  • Sea Φ un ángulo cualquiera, entonces 1 es igual a sin2(Φ)+cos2(Φ) .
  • Se conjetura (conjetura de Collatz) que si se aplican los siguientes pasos a un número natural, siempre se llegará al número 1:
  • Si se tiene un número par, entonces lo dividimos entre 2: 2·a ⟿ a .
  • Si se tiene un número impar, entonces lo multiplicamos por 3 y le sumamos 1: a ⟿ 3·a+1 .
  • Al resultado le volvemos a aplicar el mismo procedimiento, finalmente llegaremos al número 1!
  • Es uno de los 4 números que aparece en la “fórmula de Dios” (caso particular de la fórmula de Euler): eπi=-1 .
  • Todos los números naturales se pueden expresar como una suma finita de unos.
  • Es el único natural no divisible por ningún número primo.
  • Es el único número real x de la forma x=(x+1)(x-1) (la demostración es muy sencilla, pero entretenida también).
  • El conjunto más pequeño (el vacío) tiene 1 subconjunto.

Ale, ya me he cansado, si tenéis más ideas (y no os da pereza) podéis comentarlas :) .

Números: 0

Como veo que a lo largo de muchísimo tiempo he escrito poquísimas entradas en mi blog, he buscado una excusa para escribir como mínimo un post al día. La excusa es dedicarle una entrada cada día a un número natural. Hoy se la dedicaré al 0 (que para unos es natural, y para otros simplemente se queda en entero).

Por qué es especial el número 0 (Por si hay algún matemático leyendo… nos restringiremos a los números reales… por si acaso, jeje):

  • Cualquier número sumado a él se queda igual: a+0=a .
  • Cualquier número multiplicado por él es igual a 0: a·0=0 .
  • Cualquier número dividido entre él (excepto él mismo) “es infinito” : a/0=∞ (en realidad… ésto no es válido, tendríamos que hablar en términos de límites, pero da pereza).
  • Todos los números (excepto él mismo) elevados a 0, son iguales a 1: a0=1 .
  • Es la dimensión de un punto (en cualquier espacio Rn).
  • Es el número de neuronas que le quedó a George Bush hijo después de perder la única que tenía en un tropiezo que tuvo estando borracho.
  • Los romanos, la mayoría de sus contemporáneos y las culturas anteriores no lo conocían.
  • Desgraciadamente, es el número de veces que he ganado la lotería.
  • Peor aún, es el número de veces que practicaré sexo durante el día de hoy.
  • Es el número de chicas que hay en mi harén.

Pues nada, se me ocurren muchas otras paridas, aunque creo que ya es suficiente con estas. Si alguien tiene en su cabeza alguna propiedad interesante sobre el número 0, que lo deje en un comentario :) .

Hasta otra ;) .

Powered by WordPress | Theme: Motion by 85ideas.