Bienvenido al blog del noroeste de Mesopotamia! Aquí hablamos de todo:
Política, Dios, ciencia y tecnología, fe, Linux, Latex, Fails,etc.
Siéntase libre de comentar los artículos!

martes, 9 de octubre de 2012

Acelerar los gráficos en la TI-89 Titanium

Por razones académicas debo graficar bastante con la TI-89 titanium (en adelante la llamaré TI89T y V200 para la Voyage) y la verdad es que se hace lento. Incluso graficar cosas sencillas requiere de un laaaaaaaaaaaargo tiempo para que el programa de gráficos de la calculadora, llamado extrañamente "y= editor", sea capaz de mostrar lo que andamos buscando.

Debo reconocer que graficar en la calculadora es un tema que no domino completamente, porque a veces no logro dar bien con los márgenes, por lo que no puedo visualizar correctamente lo que quiero graficar o el modo de ángulo está mal ingresado, etc. Pero considero que para gráficas más sencillas es más rápido usar la TI89T que encender un computador, iniciar matlab, esperar que cargue, y blablablablabla.

Bueno, vamos a lo nuestro. Existen 3 factores que permitirán acelerar los gráficos en la calculadora. Estos son:

miércoles, 3 de octubre de 2012

Liberan a criminal que baleó a barrista de Colo-Colo

Seguramente una de la cosas que más irritación e indignación le causa al ser humano es la injusticia. Por esta se ha derramado sangre, se ha protestado, marchado, y un largo etc. Sin embargo, pequeñas faltas de criterio (que quizás pueden ser groseramente grandes) y una incorrecta aplicación del concepto compasión, pueden llevar a que la supuesta balanza de la justicia simplemente se cargue hacia un lado o peor aún, se rompa, tal como aparece en la foto del artículo.

sábado, 29 de septiembre de 2012

[LaTeX] Poner un caracter sobre otro en LaTeX

Primero que todo quiero disculparme con ustedes, mis estimados lectores, porque no he tenido chance de publicar en el blog como lo hacía antes. Lamentablemente, cada día las responsabilidades aumentan y el tiempo disminuye. Tengo todas las ganas de volver a publicar artículos y cosas útiles nuevamente.
Bueno, para dejar de lado este tiempo de silencio, quiero compartir con ustedes algo bastante útil a la hora de escribir matemáticas avanzadas en \( \LaTeX\). Se trata de insertar un caracter exactamente bajo (o sobre) otro.
Quizás alguien podría preguntarse: ¿para qué necesito esto? Bueno, la respuesta apunta justamente a escribir matemáticas avanzadas en forma correcta. Por ejemplo, supongamos que tenemos una suma de elementos cuyo subíndice está condicionado. ¿Cómo hacemos esto?

viernes, 16 de marzo de 2012

[How to] Comunicar Simulink y Matlab a través de una interfaz gráfica o a través del intérprete de órdenes

Seguramente muchos de mis estimados lectores han simulado alguna vez un sistema en Simulink, y lo más posible es que sientan que Simulink es una herramienta separada de Matlab, aislada que es poco sociable y que no se comunica con nadie.


Lo anterior no es cierto. Matlab permite, a través de su intérprete de órdenes, ajustar parámetros de bloques de un sistema hecho en Simulink, cargar sistemas, abrirlos sin la necesidad de abrir Simulink directamente y un laaaaaaaaaaaaaaaaaaaaargo etc. Solamente es cosa de tener un poquito de paciencia y darse el tiempo de probar como hacer estas cosas. Vayamos al grano.


Existen 4 instrucciones que son la base de cualquier ajuste por medio de la línea de comandos de Matlab.
  1. open_system('Nombre_del_sistema') : Esta instrucción abre el diagrama de bloques del sistema sin la necesidad de abrir Simulink directamente.
  2. load_system('Nombre_del_sistema') : Esta instrucción carga los datos necesarios del diagrama de bloques del sistema. Si se quiere establecer comunicación entre Matlab y Simulink es necesaria una de éstas 2 instrucciones.
  3. save_system : Guarda los cambios realizados en el sistema, ya sea por medio de la configuración de cada bloque o por medio de el intérprete de órdenes de Matlab. También se puede guardar la configuración de un sistema específico a través de save_system('Nombre_del_sistema').
  4. close_system : Cierra la ventana del diagrama de bloques del sistema en caso de haber sido abierta, o elimina los datos cargados por medio de load_system.
Ejecutando cualquiera de las primeras 2 instrucciones se tiene acceso a los datos del sistema hecho en Simulink. El acceso a cada bloque del diagrama del sistema se efectúa de una manera similar a como funcionan los directorios en Linux. Por ejemplo: Supongamos que el modelo del sistema se llama Prueba.mdl que contiene un escalón (Step) y un Scope (osciloscopio), entonces:


open_system('Prueba') %Abre el diagrama de bloques en la ventana correspondiente.
open_system('Prueba/Step') %Abre el diálogo de configuración del bloque escalón.
open_system('Prueba/Subsystem') %Abre el diagrama de bloques del subsistema en la ventana correspondiente, si existe. ETC,ETC.


Quizás ahora se preguntarán cómo ajustar los parámetros de algún bloque en particular. Cada bloque tiene un conjunto (GRANDE) de propiedades a través de las cuales se puede configurar cualquier aspecto del bloque. En este sentido existen 2 instrucciones básicas para su configuración:
  1. set_param('Nombre_del_sistema','Propiedad','Valor') : Esta instrucción permite ajustar una propiedad cualquiera de un bloque en particular. Si por ejemplo, se desea  mo-dificar el valor de una ganancia la instrucción que se debe emplear sería set_param('Nombre_Del_Sistema/Gain','Gain','Valor'), asumiendo que el nombre de la ganancia es Gain. Siempre el valor de la propiedad es un string y en caso de no saber las propiedades de cada bloque...
  2. get_param('Nombre_Del_Sistema','Propiedad') : Esta instrucción permite obtener el valor de una propiedad específica. En caso de no conocer las propiedades de un bloque se puede hacer lo siguiente: get_param('Nombre_del_sistema','ObjectParameters') y aparece una estructura de datos con todas las propiedades que posee el bloque o el sistema en estudio.
Ejemplo: Si queremos modificar el valor final del escalón se puede hacer de la siguiente manera:


load_system('Prueba'); %Carga los datos del modelo. Es fundamental.%
set_param('Prueba/Step','After','4.345'); %El valor final del escalón es 4.345%
save_system; %Si no se ejecuta esta instrucción es como no guardar ls cambios.%


Es importante mencionar que lo anteriormente expuesto sirve de igual manera, tanto en el intérprete de órdenes de Matlab o en una interfaz gráfica construida en GUIDE. Por ejemplo, si se tiene una interfaz gráfica se puede modificar la misma propiedad anterior a través de una caja de texto como sigue:


%asumimos que el modelo fue cargado cuando se levantó la interfaz%
function edit1_Callback(hObject,eventdata,handles)
%Comentarios... blabla%
set_param('Prueba/Step','After',get(hObject,'string'));
save_system;
%...%


La instrucción get(hObject,'string') devuelve el contenido de texto que fue ingresado en la caja edit1. También se puede reemplazar hObject por handles.edit1.


Espero que les sirva, abrazo.

martes, 6 de marzo de 2012

Cambio en el trazado de la línea 6 del Metro de Santiago

El Metro de Santiago ha anunciado un cambio para el recorrido de la futura línea 6, el que involucra una modificación en la primera parte del trayecto. Originalmente, la línea 6 estaba diseñada para conectar Pedro Aguirre Cerda, con la comuna de Providencia, sin embargo, después de la modificación la futura línea 6 comunicará la comuna de Cerrillos con Providencia. El resto del trazado permanecerá intacto.

Se puede ver la diferencia entre el trazado original y el trazado nuevo acontinuación:






Respecto del cambio, la conexión con la estación del MetroTren se mantiene hasta el momento, incluyendo la futura conexión con el MeliTren (que intentará conectar Santiago con Melipilla más adelante).

Links:

jueves, 26 de enero de 2012

Sangría y espacio entre párrafos en LaTeX

Si has pasado por algún profesor fuera de la media en la universidad, que se caracteriza por ser más exigente que los demás, seguramente cuando te pida trabajos te exigirá formatos especiales para el sangrado y el espaciado entre párrafos.

La verdad es que no tengo idea como configurar esto en Libre/OpenOffice o MsOffice. Hasta ahora, el espacio entre párrafos lo ajusto manualmente a través de la tecla enter y el sangrado a través de la tecla tab. Sin embargo, ¿qué sucede si aquel profesor nos pide, por ejemplo, 2cm de sangría y 0.5cm de espacio entre párrafos?

En LaTeX la solución es sencilla. Simplemente se deben ajustar las longitudes asociadas a la sangría y espacio entre párrafos como sigue:

\setlength{\parindent}{2cm}
\setlength{\parskip}{\baselineskip} 

La primera instrucción hace que la sangría de cada párrafo (\parindent) sea de 2 cm, mientras que la longitud \baselineskip es una medida que indica la separación entre párrafos (\parskip). Sin duda, tanto la sangría como la separación entre párrafos puede tener cualquier longitud. Cuidado, porque la calidad visual y estética de los documentos tiene mucha relación con estas longitudes. Ambas instrucciones deben ser puestas en el preámbulo del documento, es decir, antes de \begin{document}. 

Bonus Track: Interlineado

El interlineado es algo que también piden mucho en la universidad. Personalmente, después de descubrir que el interlineado mayor a 1 hace que la estétitca del documento decaiga drásticamente, me manifiesto en contra de utilizarla, especialmente si se trata de una tesis o un trabajo importante. De todos modos, para manejar el interlineado se debe hacer lo siguiente:

\renewcommand{\baselinestretch}{1.5}

Espero que les sirva. Un abrazo!

jueves, 19 de enero de 2012

[DENUNCIA] PEDÓFILOS EN FACEBOOK!

DENUNCIA A LOS PEDÓFILOS!!

El link al final corresponde al de un pedófilo!!!

Links:
    http://www.facebook.com/?ref=tn_tnmn#!/profile.php?id=100001772277307&sk=info

miércoles, 18 de enero de 2012

NO A LA LEY SOPA!!!

DETENGAN LA LEY SOPA!!! NO A LA LEY SOPA Y PIPA!!!





    

miércoles, 11 de enero de 2012

[Tip] Acceso a datos de un vector unidimensional en TI-BASIC

Por estos días me encuentro desarrollando un proyecto para la TI-89 escrito en TI-BASIC. Afortunadamente, ya llevo gran parte de él bastante avanzado, e incluso puedo decir que algunos módulos ya están casi listos.

Como seguramente saben el software que trae la TI-89, ese que viene en el disco incluido en la caja de la calculadora, no posee muchas herramientas de programación, ni tampoco la calculadora posee un buen editor para programar. El que trae es muy limitado.

Bueno, realmente no quiero hablar de editores u otras cosas, sino más bien de una cosa que descubrí y me pareció interesante comentarla aquí, puesto que puede inducir a errores en la programación. Mi intención es poder evitarles, de ser posible, potenciales errores asociados al acceso de datos a vectores unidimensionales. Manos a la obra.

Supongamos que tenemos un vector columna como por ejemplo [1;3;4;6], y  tiene 4 componentes. Si se desea extraer datos de dicho vector hay que tener cuidado, porque si se hace de mala manera se pueden cometer errores, tanto de cálculo (durante una prueba) como durante la programación de algún software. Entonces, para extraer información de dicho vector tenemos 2 maneras.
  1. Usar la notación reducida, que significa lo siguiente: Por ejemplo

    [1;3;4;6][2]

    Si usamos esta notación, el resultado obtenido sigue siendo un vector, con la diferencia de que es un vector de una fila y una columna, y estará encerrado por [ ]. Esto NO es un escalar, sino que es el vector [3].
  2. Usar la notación completa, que quiere decir lo siguiente:

    [1;3;4;6][2,1]

    Esta notación lleva a un resultado que corresponde a un número o escalar, no a un vector de 1x1.Es decir, lo que entrega es el número 3.
Hay que tener cuidado con lo que andamos buscando, si es un vector de 1x1 que contenga el valor de cierto elemento en el vector, se debe usar la primera notación. Si por el contrario, se busca un escalar se debe emplear la segunda notación.
Abrazo!

lunes, 9 de enero de 2012

[FAIL] Demasiada fuerza parece.

Notable... HAHAHA...




[FAIL] FAIL de seguridad

Un profesor poniendo en riesgo a sus alumnos en caso de una emergencia ¿Qué sucede si hay un temblor fuerte o un incendio?. Muy buena técnica...



Sin comentarios...
    

sábado, 7 de enero de 2012

[TIP] Lanzar Matlab en la línea de comandos.

Es sabido que Matlab es un poderoso software para simular sistemas y cálculos matemáticos. Gracias a su herramienta Simulink, se puede simular casi cualquier sistema a partir de una sencilla interfaz gráfica y con sus herramientas matemáticas se puede calcular básicamente cualquier cosa.

Sin embargo, una de las grandes desventajas de Matlab, en mi opinión, es el consumo de recursos. Puedo decir con propiedad que cada vez que lanzo este software desde mi pequeño portátil, la temperatura se dispara unos 5, 6 o incluso hasta 10 grados extra. En definitiva, es un software bastante "PESADO".

Hoy quiero mostrar un truco muy sencillo que hará que la consola de Matlab (donde se ingresan los comandos) se cargue en menos tiempo, y la cantidad de recursos consumidos sea menor. Lamentablemente para algunos, afortunadamente para otros, hay que sacrificar la interfaz gráfica de Matlab, lo que se hace de la siguiente manera:

./matlab -nodesktop

Si se está en Linux. Para el caso de Windows, debería ser igual, pero siendo sincero no lo he probado. Quien lo haya hecho lo puede comentar.

De esta manera, la consola de Matlab se abrirá en la línea de comandos de Windows o bien en el terminal de Linux. Quizás van se extrañarán algunas cosas como el workspace, pero pienso que vale la pena, sobre todo si se trata de equipos limitados en características.


Abrazo!

martes, 3 de enero de 2012

[Tip + How to] Extraer filas y columnas de matrices

A veces se hace sumamente necesario extraer filas o columnas completas de matrices, sobre todo si el objetivo es escribir alguna pieza de software que desarrolle alguna tarea iterativa, pero de tal modo que no dependa de ciclos. Matlab, por ejemplo, dispone de operadores especiales (":") que permiten extraer filas y columnas completas de vectores bidimensionales.

Lamentablemente, en la TI-89/V200 no existen tales operadores... Sin embargo, de todas maneras existe una manera de extraer filas o columnas de una matriz sin la necesidad de utilizar el comando submat. Manos a la obra: Supongamos que la siguiente matriz es la matriz a la que le extraeremos las filas o columnas y está almacenada en la variable "a" de acuerdo al código:


[1,2,3;5,6,1;0,1;0]->a


Entonces, si queremos extraer la fila central, que corresponde al vector [5,6,1] se debe hacer lo siguiente:

[1,2,3;5,6,1;0,1;0][2]->a

Eso extrae la segunda o fila central. Ahora, para el caso de las columnas, lamentablemente se requiere de un paso adicional. Transposición. Manos a la obra: Supongamos de que de la misma matriz se desea extraer la columna 3, entonces:

(([1,2,3;5,6,1;0,1;0])T[3])T->a


Notar que T es el operador de transposición. Entonces, variando el coeficiente que acompaña a la matriz se pueden obtener filas y columnas completas.
De esta manera se pueden construir programas vectorizados mucho más rápidos y eficientes que no dependen de ciclos for o while.

Abrazo!

domingo, 1 de enero de 2012

No más Gtk-WARNING **: cannot open display: :0 !!!

Por años he tenido el mismo problema... Muchas veces intenté lanzar un programa con interfaz gráfica por medio de un usuario diferente, y sin embargo, el sistema devolvía un error que dice más o menos así:
Gtk-WARNING **: cannot open display: :0.0

Para solucionar el problema hay que hacer algo bien sencillo. Simplemente basta ejecutar la siguiente instrucción: xhost +

Como usuario normal y listo. El sistema devolverá el siguiente mensaje: access control disabled, clients can connect from any host


Con eso ya estamos... Nunca más el problema de no poder lanzar un programa gráfico a través de otro usuario.


Un abrazo

Links: