Source: https://pensamientosylibros.wordpress.com/category/matematicas/
Timestamp: 2017-08-23 17:22:31+00:00

Document:
Matemáticas | Pensamientos y Libros
Pensamientos y Libros
Utilizar Latex en documentos Docbook
Filed under: Computación,Edición,Linux,Matemáticas — Toni Cebrián @ 19:40
El formato XML ha sido una gran idea. Un formato sencillo y fácilmente extensible utilizado para describir datos con multitud de aplicaciones. Yo por ejemplo lo utilizo para redactar estos artículos utilizando el esquema publicado de Docbook, luego los convierto a HTML utilizando unas hojas de estilo en formato XSL y finalmente las subo a esta web. Es una solución muy flexible y que me evita tener que andar pensando en formatos y tipos de letras, simplemente hay que escribir contenido. Sin embargo viene con un peaje a pagar, el tener que lidiar con una sintaxis farragosa cuando hay que escribir el XML “a pelo” situación que aparece a menudo cuando queremos escribir ecuaciones y fórmulas matemáticas para la web utilizando el formato MathML. En este artículo voy a explicar cómo podemos ahorrarnos parte de la farragosa tarea de escribir matemáticas en un documento Docbook utilizando el truco de escribir las matemáticas en Latex dentro del documento y utilizar un filtro que nos convierta ese Latex a MathML antes de hacer cualquier conversión.
Lo primero es bajarse el software que nos hará la conversión de Latex a MathML desde la página de itexToMML. Existen versiones para Mac y para Linux. En lo que sigue del artículo me referiré a la instalación en Linux. Descomprimimos el tar.gz que contiene los binarios y los fuentes del programa.
El programa utiliza el flujo de entrada al programa y traduce todos los entornos matemáticos Latex a su equivalente MathML. Para ilustrarlo creamos el fichero Docbook de ejemplo que se muestra en el siguiente listado.
<?xml version="1.0" encoding="UTF-8"?><section version="5.0" xmlns="http://docbook.org/ns/docbook"         xmlns:xlink="http://www.w3.org/1999/xlink"xmlns:xi="http://www.w3.org/2001/XInclude"
<title>La función más famosa</title>
<para>La función que aquí mostramos, $E=mc^2$, se ha convertido en un
icono cultural aunque muy pocos comprendan su verdadero significado.</para>
A continuación lo que hay que hacer es filtrar este flujo de texto con nuestro programa itex2MML para que convierta las funciones latex en su equivalente MathML. En línea de comandos hacemos:cat Ejemplo.xml | itex2MML > Exemplo-procesado.xmly el archivo original queda convertido en el que puede verse en el siguiente listado.
<?xml version="1.0" encoding="UTF-8"?><section version="5.0" xmlns="http://docbook.org/ns/docbook"xmlns:xlink="http://www.w3.org/1999/xlink"
<title>La función más famosa</title>  <para>La función que aquí mostramos, <math xmlns='http://www.w3.org/1998/Math/MathML' display='inline'><mi>E</mi><mo>=</mo><msup><mi>mc</mi> <mn>2 </mn></msup></math>, se ha convertido en un
Una vez tenemos la fórmula convertida a MathML lo que tenemos es un documento Docbook bien formado y lo único que nos queda es aplicarle las hojas de estilo y las transformaciones necesarias para obtener nuestros PDFs o páginas html. El resultado puede verse en el siguiente párrafo.La función que aquí mostramos,
E = mc 2 , se ha convertido en un icono cultural aunque muy pocos comprendan su verdadero significado.
Es importante que en las transformaciones a XHTML el fichero destino no tenga extensión .html pues en dicho caso las fórmulas no se muestran correctamente. Utilizar la extensión xhtml o xml para visualizar el contenido correctamente.
WordPress elimina el contenido específico de MathML al guardar el post así que estoy tratando de pensar cómo rodear y solucionar este problema.
Configurar Firefox para que pueda renderizar MathML en Linux
Filed under: Computación,Edición,Linux,Matemáticas — Toni Cebrián @ 23:35
Para poder visualizar MathML al utilizar el navegador Firefox en Linux es necesario previamente haber instalado las fuentes que permitan hacer el renderizado necesario. Para ello, seguimos los siguientes pasos:
En Ubuntu Gutsy el navegador está compilado con soporte para Xft (se comprueba poniendo about:buildconfig en la dirección y comprobando que tiene el –enable-xft como opción de compilación) así que descargamos las fuentes que se encuentran http://www.mozilla.org/projects/mathml/fonts/bakoma/texcm-ttf.zip y en http://support.wolfram.com/mathematica/systems/windows/general/files/MathFonts_TrueType_41.exe.
Las fuentes hay que descomprimirlas y guardarlas en ~/.fonts (crear el directorio si no existe). Las fuentes Mathematica pese a ser un fichero .exe se pueden descomprimir normalmente con el comando unzip MathFonts_TrueType_41.exe
Aún nos faltará una última fuente que no está disponible fácilmente. Si tienes algún sistema Windows a mano copia la fuente Symbol.ttf que se encuentra en el directorio c:\windows\Fonts en nuestro directorio de fuentes ~/.fonts
Ya por último para comprobar que todo funciona reinicia el navegador y ya tienes todas las fuentes instaladas. Para comprobarlo utiliza la página de prueba de http://www.w3.org/Math/XSL/pmathml2.xml
Todos estos pasos parece que no habrá que hacerlos en el futuro pues se están preparando unas fuentes que serán de libre distribución y vendrán incorporadas en nuestras distribuciones linux. Más información en http://www.mozilla.org/projects/mathml/fonts/
Instalando JAGS para estimación Bayesiana.
Filed under: Estadística Bayesiana,Matemáticas — Toni Cebrián @ 12:03
Comprobando que todo está en orden y funciona
Ultimamente he estado leyendo los trabajos de Radford M. Neal y de David J.C. MacKay acerca de las Redes Neuronales Bayesianas y de los Procesos Gaussianos y me ha picado la curiosidad sobre la estimación bayesiana. También han servido para avivar el gusanillo bayesiano el libro Scientific Reasoning: The Bayesian Approach que leí hace poco y el que pretendo leerme en breve Probability Theory: The Logic of Science.
Con todo me puse a investigar cómo podía ponerme a trastear con esto de la inferencia bayesiana en Linux y encontré el programita JAGS para inferencia bayesiana utilizando el método Monte Carlo utilizando Cadenas de Markov (MCCM). Con eso y con la amable ayuda de su autor, Martyn Plummer, he conseguido tener funcionando el invento. Espero que este sea el primer artículo donde vaya contando mis experiencias al respecto.
Lo primero que tenemos que hacer es instalar en nuestra máquina Linux las librerías de desarrollo y los paquetes de los que depende JAGS. Para ello instalamos los siguientes paquetes:
$> urpmi gcc-gfortran
$> urpmi libblas1.1-devel
$> urpmi liblapack3-devel
descargarnos el software de su página web, JAGS. Nos descargamos la última versión que exista, en nuestro caso la 0.97.1. De nuevo como usuario sin privilegios de root descomprimimos el software, configuramos las dependencias, compilamos e instalamos JAGS.
$> tar xvfz JAGS-0.97.tar.gz
Ya tenemos instalado JAGS y nos queremos poner manos a la obra. Aunque JAGS puede funcionar de forma autónoma nos será mucho más fácil utilizarlo dentro del paquete estadístico R así que nos lo instalamos también:
$> urpmi R-base
Para poder utilizar el paquete rjags es preciso que previamente estén instalados en el entorno de R los paquetes coda y lattice. La forma más cómoda es que estos paquetes se instalen como root de forma que estén disponibles para el resto de usuarios (que me perdonen los seguidores de la seguridad paranoica). Desde R aquellos paquetes que estén en algún repositorio de CRAN se instalan de forma muy fácil. Primero se selecciona el espejo de CRAN desde donde descargar los paquetes y después con el comando de instalar él sólo hará la instalación:
Selección: 45
> install.packages("coda")
En el cuadro anterior se han omitido los mensajes intermedios.
En este momento simplemente escribiendo el siguiente comando en el entorno R y comprobando que no se produce ningún mensaje de error tenemos el entorno configurado y listo para usar.
> library(rjags)
Para ilustrar su funcionamiento realizaremos un pequeño ejemplo. Mediante Perl implementamos un pequeño generador de números aleatorios binarios. El comando utilizado puede verse más abajo.
$> perl -e 'for($i=0;$i<1000;$i+=1){print int(rand()+.5);print "n"}' | grep 1 | wc -l
que nos genera un listado de unos y ceros generados teóricamente por una distribución de Bernoulli de parámetro p=0.5 que después utilizaremos para obtener el número de 1s obtenidos. Lo que pretendemos hacer en este ejemplo práctico es tratar de estimar p desde un punto de vista Bayesiano y poder sacar conclusiones sobre la calidad de la generación de números aleatorios con el procedimiento anterior.
Ejecutando la línea de Perl me sale un valor de 529 para el experimento (cada ejecución dará un valor distinto). Por tanto sólo nos queda crear el modelo con la syntaxis BUGS,
phi ~ dunif(0,1);
y ~ dbin(phi,N);
y crear un archivo con los datos necesarios para el problema.
datos <- list(y=529,N=1000)
Después únicamente nos queda arrancar R, cargar la libreria rjags y empezar a interrogar al modelo.
>library(rjags)
loading JAGS modules
basefunctions
baserngs
basesamplers
> source("binario.dat")
> modelo <- jags.model("binario.bugs",datos)
Checking graph
Graph Size: 5>  modelo$update(1000)
Updating 1000
---------------------------------------| 1000
**************************************** 100%
> x <- model.samples(modelo, variable.names=c("phi"),n.iter=1000)
> summary(x$phi)
Min.   :0.4847
1st Qu.:0.5172
Median :0.5284
Mean   :0.5285
3rd Qu.:0.5400
Max.   :0.5812
donde puede verse que el valor más probable está en torno a 0.52, para el parámetro p.
Sin embargo, en nuestra estimación hemos utilizado una distribución uniforme en el rango de posibles valores de p. Esto no es una hipótesis muy realista pues tenemos que pensar que los programadores que hicieron la función rand() de Perl, tienen los conocimientos de programación y estadística suficientes como para esperar que en la implementación que hicieran el valor de p no difiera mucho de 0.5. Podemos probar a cambiar la distribución inicial de p para que su densidad inicial sea una distribución Normal concentrada en torno a 0.5 y por ejemplo su desviación estándar, sigma, valga 0.05, lo que nos asegura que el 68% de la masa de la función de densidad estará en el intervalo [0.45,0,55].
Creamos el nuevo modelo especificando una distribución normal y teniendo en cuenta que el parámetro tau de la distribución normal se llama precisión y viene dado por 1/sqrt(sigma), donde sqrt es la función raíz cuadrada. Por tanto el nuevo modelo será:
phi ~ dnorm(0.5,400) T(0,1);
Es importante para los cálculos de JAGS que se especifique que el valor de phi debe truncarse a un valor entre 0 y 1 para que pueda considerarse un valor legal como parámetro de la distribución binomial. Esto lo hemos hecho añadiendo detrás de la distribución el parámetro de truncamiento, T(0,1).
Como antes, seguimos el proceso de compilar, actualizar e interrogar al model y como paso final obtenemos una representación gráfica de los datos obtenidos como estimación del parámetro phi.
> m <- jags.model("binario-normal.bugs",datos)Compiling model graph
Graph Size: 7> m$update(1000)
> x <- model.samples(m,variable.name=c("phi"),n.iter=1000)
> xfig()
> densityplot(x$phi)
> dev.close()
Filed under: Libros,Matemáticas,Psicología matemática — Toni Cebrián @ 17:52
La elección de este libro no es más que mi continuación de búsqueda de libros que me permitan poder estudiar con mayor facilidad matemáticas. Sigo buscando el libro perfecto de Psicología Matemática pero mientras lo encuentro en este tipo de libros voy encontrando pequeños diamantes que me permiten ir confeccionando una mini teoría de lo que debe ser la preparación psicológica para estudiar matemáticas con éxito.
El contenido del libro puede ser descrito como los experimentos que ha realizado el autor para tratar de dilucidar las estrategias de resolución de problemas matemáticos. Los sujetos que usa mayoritariamente han sido estudiantes de primeros cursos de ciencias matemáticas. El libro contiene multitud de problemas que proponía a alumnos suyos para su resolución pero que de alguna forma eran ligeramente diferentes a los que había visto en las clases. Mediante estos problemas y tras analizar los protocolos de resolución el autor justifica sus puntos de vista en cuanto a una teoría abstracta de resolución de problemas matemáticos.
El libro resulta interesante en cuanto a las conclusiones del autor sobre la resolución de los problemas, pero llega un momento en que resulta cargante el enésimo problema expuesto junto con la transcripción de los protocolos de resolución y su análisis posterior. No he llegado a leer el libro por completo pues los últimos capítulos ya me cansaban y solía pasar la parte central de los mismos sin leer hasta llegar a las conclusiones de cada uno de los capítulos.
El libro tiene un marcado carácter experimental y su audiencia ideal sería alguien que estuviera embarcado en el estudio de la resolución de problemas matemáticos. Sin embargo para alguien como yo que se acerca al libro para adquirir recetas y consejos se hace muy pesado pasar por todos los procedimientos experimentales y tratar de separar la paja de la chicha.
El libro contiene una teoría descriptiva de los elementos que constituyen la infraestructura para un análisis de las habilidades necesarias en la resolución de problemas matemáticos. Este análisis se basa en 4 categorías de “herramientas”:
RecursosSon los conocimientos de que dispone el matemático. Aquí se incluye cualquier teorema que conozca, relaciones entre figuras geométricas, etc…
HeurísticasSon estrategias de resolución de problemas de carácter general. Son procedimientos que se aplican a familias de problemas más generales.
ControlLa ejecución de cualquier problema conlleva unas restricciones de tiempo y de capacidad de cálculo. Ser capaz de balancear correctamente cómo se asignan los recursos a la hora de resolver el problema permite tener un tasa de éxito más elevada en la resolución de problemas. Aquí los atributos básicos de un buen control es ser capaz de elicitar la información relevante y poder elegir los procedimientos con una mayor probabilidad de éxito.
Sistemas de creenciasAquí básicamente lo que se pretende es contrastar la actitud que presentan los sujetos hacia las matemáticas con respecto a los resultados en la resolución de problemas.
Sinceramente me cansé de leerlo y no lo terminé. Creo que el libro hace una buena clasificación de los elementos cognitivos que hacen que alguien sea un buen resolvedor de problemas matemáticos y me hubiera gustado que lo hubiera expuesto con más extensión en un plano teórico, pero la verdad es que me canse con tanta descripción de los experimentos y tanta transcripción de las conversaciones con sus estudiantes mientras éstos resolvían los problemas. El perfil del lector que creo que buscaba era el de un psicólogo que quiera hacer experimentación para dilucidar cuales son las características básicas de la resolución de problemas matemáticos pero a mi, que lo que me interesa ahora mismo es un manual de autoayuda matemática, lo que me ha parecido es que prometía mucho y lo mató el nivel de detalle.
Filed under: Libros,Matemáticas,Psicología matemática — Toni Cebrián @ 18:36
Desarrollo de la creatividad a través de los procesos matemáticos
Estrategias de pensamiento matemático
La actividad subconsciente
Empeñado como estoy en seguir aprendiendo de la psicología de las matemáticas, aquí tengo otro libro que descubrí en un descanso de estudio en la biblioteca. El autor, Miguel de Guzmán, tenía otros títulos de divulgación matemática y parece tener una producción bastante extensa.
En la contraportada se nos asegura que el libro es una propuesta para mejorar los procesos de pensamiento de cualquier persona mediante las recetas que en él se proponen. Aquí debo decir que a mi entender esto es una treta de mercadotecnia porque si bien el libro consta de lo que enuncia, lo hace desde un punto de vista puramente matemático. Si alguien quisiera trasladarlo a otras facetas del pensamiento, debería hacer la doble tarea de trabajar y comprender los procesos a nivel matemático, extraer los patrones comunes a todo proceso de pensamiento y luego trasladarlo a su campo particular.
Sin embargo como a nosotros lo que nos interesa es justamente la parte matemática de los procesos de pensamiento, estamos más que encantados.
La estructura del libro está compuesta de una serie de pequeños capítulos con una breve (a veces brevísima) introducción teórica del concepto a desarrollar y una serie de ejercicios o juegos matemáticos que pretenden hacer ver el concepto en cuestión. Debo reconocer que no he hecho ni uno sólo de los problemas (cosa de la que no estoy orgulloso), pero es que siempre tengo otros libros apretando y muchos de los conceptos ya eran conocidos por mi y otros incluso los dominaba. Aún así el libro a mi entender es muy valioso como diccionario práctico de heurísticas. ¿Y qué quiere eso decir? Pues que si eres capaz de conocer y comprender todos los métodos que se presentan tendrás mucho adelantado en la resolución de problemas matemáticos.
Paso ahora a enumerar las partes más generales de que está formado el libro:
En esta parte el autor se encarga de repasar los distintos tipos de bloqueos (afectivos, cognitivos, culturales, …) que nos pueden impedir ser capaces de resolver problemas. Todos ellos, cada uno afectando a su área concreta, tienen en común que nos anclan de alguna forma a un espacio de soluciones subóptimas. Si por ejemplo, me desagrada el álgebra eso hace que no le dedique el pequeño esfuerzo extra que requeriría con los conocimientos que poseo para resolver el problema. Ese sería un bloqueo de tipo afectivo. Tener dificultades en la percepción y formulación del problema podrían ser bloqueos de tipo cognitivo, mientras que el tipo de bloqueos culturales podría venir dado si la “comunidad” matemática a la que pertenecemos considera que cierto problema no se presta a tal o cual estrategia de resolución, lo que nos haría no abordarlo “porque otros así lo han dicho”.
En todos los casos, la estrategia para superarlos es embarcarse en tareas de “salir del pozo”, esto es tratar de salir del mínimo local en el espacio de estrategias de resolución de problemas en el que hemos caído. Así, el autor propone, hacer sesiones de lluvia de ideas, abordar el problema desde otro punto de vista, etc….
Esta tal vez sea la parte más genérica y la que más fácilmente sea trasladable a otros ámbitos no matemáticos. En ella se sitúa al proceso de pensamiento como un objeto mental que debe ser analizado, evaluado y modificado si es necesario. Claramente se adscribe a la máxima de si no se puede medir, no se puede cambiar. Me recuerda también al PSP (Personal Software Proccess) en informática, un proceso dirigido a medir todas las fases del desarrollo software para identificar aquellas prácticas que están haciendo que programes de una manera ineficiente.
Básicamente se centra en la especificación de cómo recoger por escrito el protocolo utilizado en la resolución de problemas. Cada cierto tiempo y en función de unas marcas temporales, se pide que escribas qué estás haciendo, cuáles son tus pensamientos, tu actitud hacia el problema, …. etc. Este volcado no ha de ser filtrado por ningún pensamiento ni se debe estilizar, se debe volcar todo lo que estés pensando en ese momento. Una vez que has resuelto (o no) el problema, comienza una fase de análisis en la que se trata de identificar aquellas lagunas en tu conocimiento, aquellas salidas en falso, todo aquello que sea susceptible de ser mejorado y corregido. El objetivo es no estar viciado por procedimientos que bajo una atenta mirada crítica son claramente ineficientes.
Esta parte sería la especialización de la parte anterior. Aquí nos estamos enfrentando ya específicamente a problemas matemáticos. Si la sección anterior podíamos denominarla como la exposición de las meta heurísticas que deben guiar cualquier proceso de pensamiento, en esta parte lo que se va a introducir es un compendio de heurísticas matemáticas que resultan útiles en la resolución de problemas.
Esta parte por ser una descripción de heurísticas casi que lo mejor es exponerlas y comentarlas brevemente:
Lo primero es familiarizarse con el problema, conocer los símbolos que lo definen, visualizar la meta que nos piden, ver cómo podemos manipular el problema, las acciones que realizamos sobre él cómo transforman el problema, etc…
Comenzar a explorar el espacio de estrategias de resolución, realmente consiste en comenzar a manipular el problema y ver si se ajusta a alguna estrategia bien conocida, hay alguna regularidad con respecto a los enteros, presentan los símbolos algún patrón cuando vamos buscando la solución, etc…
Comenzar a explorar con una versión reducida del problema. Un problema más reducido y que te permita tener bajo control todos los símbolos del problema hace que puedas ver cuál es el patrón común de comportamiento sin perderte en los detalles de mero cálculo mecánico.
Experimenta con el problema. Al jugar con el problema puede que se pongan en marcha otro tipo de inteligencias al servicio de la resolución. Por ejemplo, la inteligencia visual podría sugerir una solución en un problema geométrico. Esta solución no tiene por qué ser correcta pero da un punto de partida para trabajar.
Crear figuras, diagramas. Esto ayuda en la resolución del problema pues se pueden intuir soluciones echando mano de la inteligencia espacial y visual.
Escoger un lenguaje adecuado. Gran parte del trabajo matemático es la reorganización de símbolos para el “descubrimiento” de nuevos teoremas y proposiciones. Un buen lenguaje que tenga la granularidad adecuada al problema que estamos tratando permite que no tengamos que dedicar recursos innecesarios a la sobremanipulación de símbolos. Por poner un ejemplo, sumar 77+11 es inmediato en notación decimal, pero ya no lo es al utilizar notación binaria 1001101 + 1011 pues cuanto menos hay que acarrear bits en las sumas intermedias.
Buscar un problema semejante. Si reconocemos los patrones de funcionamiento en el otro problema podremos trasladarlo al que nos ocupa. Algún día me gustaría saber suficiente de Teoría de las categorías para ser capaz de hacer esto automáticamente.
Mediante la inducción lo que se trata es de hacer claro un patrón que es función de una sucesión de números naturales. Si es verdad en n y lo es en n+1 podemos extraer la regla general pues siempre será cierto.
Suponer que no o reducción al absurdo. Consiste en comenzar a desarrollar el problema suponiendo que la solución es incorrecta hasta llegar al punto en que se llega a algún tipo de contradicción.
Una vez familiarizado con el problema y evaluadas las posibles estrategias de actuación llega el momento de llevarlas a cabo. Es importante que la realización de la resolución de un problema se acometa hasta el final (y el final puede no incluir la resolución) ya que para poder manipular el proceso como un objeto sujeto a mejora, dicho proceso debe haberse producido y registrado para su posterior mejora.
Esta parte puede que sea de las más interesantes del libro pero a la vez de las más breves e imprecisas. Comienza enumerando situaciones y sucesos de grandes pensadores matemáticos en los que la intuición o una iluminación repentina les sirvió de base para el descubrimiento de alguna verdad o proposición matemática. A continuación sigue un ejercicio especulativo de por qué puede que se den este tipo de descubrimientos “inconscientes”. Básicamente se argumenta que nuestra mente cuando no está bajo la supervisión de la conciencia, meditando, fantaseando o en sueños, se dedica a jugar desbocadamente con los conceptos que tiene en mente, y que de uno de estos juegos puede emerger una solución o posible pista que luego habrá que elaborar y mejorar.
Queda sin embargo demasiado abierta la parte en la que trata de sacar consecuencias prácticas a todo este trabajo subconsciente.
Han pasado un par de semanas desde que leí el libro y el recuerdo que me queda es el de un libro interesante y cuyo contenido es un catálogo de heurísticas matemáticas. Aunque en algunos momentos trata de salirse de este tema y darle un matiz más genérico la verdad es que realmente es un libro de mates. Por tanto aunque no te ayudará a pensar mejor si que te ayudará a pensar mejor matemáticamente y es por ello que recomiendo el libro a todo aquel interesado en el tema.
Esqueleto de un proyecto con CMake
Conversión de la codificación de los archivos de texto
Pequeñas perlas de la consola
ancechu en Como eliminar los márgenes bla…
paupaupau en Como eliminar los márgenes bla…

References: resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución 
 resolución