25 de febrero de 2012

Week 5

Distributed and Parallel Systems
Contribution: Week 5
Last week I was working in a example of send a file from server to a client. But now I'm working in the same code, but I'm trying to change part of the clients and accept to many clients at the same time with threads and send the same file to several clients.

Link to the wiki: Sendfile in Java (modified)

Nominations:
No one

24 de febrero de 2012

Procesos Estocásticos Discretos y Continuos

Modelado y Simulación de Sistemas Dinámicos
Reporte 2
Lo que decidí analizar para este tema es la lotería. Por lotería se puede referir a dos tipos diferentes de juego, el que se juega con cartones con diferentes figuras y que se marcan con algún tipo de fichas, y la que es mediante billetes y sorteos. Yo planteo mi análisis a este último, que en México es fácil relacionarlo con la Lotería Nacional o en un caso más cercano a nosotros, el Sorteo de la Siembra Cultural de la UANL.

Lotería


La lotería es un juego de azar que consiste en acertar los números de un billete previamente comprado con los números extraídos de una tómbola o un recipiente que garantice que sean extraídos al azar. Los números de dicho billete pueden ya estar preimpresos o bien ser elegidos por las propias personas. El número de aciertos pueden ser todos o parte de los número del billete. Al ganador o ganadores se les entrega un premio en dinero o especies. Por lo general si no hay ganadores para un sorteo el premio se acumula para el siguiente.


Ahora después de esta introducción veamos los conceptos vistos en clase.

Distribución discreta y continua


Discreta
Se denomina distribución de variable discreta a aquella cuya función de probabilidad sólo toma valores positivos en un conjunto de valores de X finito o infinito numerable.

Discreto es aquel en el que las variables de estado cambian instantáneamente en puntos distintos en el tiempo. Se rigen por ecuaciones lógicas que expresan condiciones para que un evento ocurra. La simulación discreta, consiste en seguir los cambios en el estado del sistema resultando de cada uno de los eventos que se realizan. Por regla general este tipo de la simulación se realiza siguiendo la secuencia de ocurrencia de eventos, es decir avanzamos el tiempo de la simulación al tiempo de la ocurrencia del siguiente evento.

En los sistemas discretos, el flujo es tratado como un cierto número de enteros. Por ejemplo en el análisis de flujo de personas en el supermercado, involucra el tiempo que tarda una persona en las distancias aéreas del supermercado y el contador de salida de un sistema discreto, otros sistemas discretos son: el análisis de como el de tráfico de autobuses en una central camionera, e control de tráfico de: trenes en una estación ferroviaria, aviones en el aeropuerto, vehículos en una autopista, buques en el puerto.

Distribuciones de variable discreta:
  • Distribución binomial
  • Distribución binomial negativa
  • Distribución geométrica
  • Distribución de Bernoulli

Continua
Se denomina variable continua a aquella que puede tomar cualquiera de los infinitos valores existentes dentro de un intervalo.

Un sistema continuo es aquel en el que las variables de estado cambian de manera continua en el tiempo. Por ejemplo si consideramos un aeroplano que se mueve por los aires, sus variables de estado como velocidad, posición, consumo de combustible, etc., cambian de manera continua en el tiempo.

En los sistemas continuos el flujo a través del sistema es, el de un medio continuo, por ejemplo el flujo de las partículas sólidas, moviéndose a velocidades relativas al tamaño de las partículas presentes en la corriente.

Distribuciones de variable continua:
  • Distribución ji cuadrada
  • Distribución exponencial
  • Distribución t de Student
  • Distribución normal
  • Distribución F


Ejemplo: Distribución exponencial

Planteamiento del problema


Ahora vamos a poner en claro la realidad de la lotería y la probabilidad de resultar ganador al comprar un solo boleto para el sorteo.

Tomaré como ejemplo de problema el 17º Sorteo de la Siembra Cultural en el cuál se han emitido 180000 boletos.

Para un sorteo la probabilidad de que te toque ser el ganador del primer premio, depende del número de boletos emitidos para ese juego, también importa la cantidad de series, pero en nuestro ejemplo no tenemos alguna cantidad de series y solo contabilizamos en una cantidad fija de boletos emitidos, mencionados anteriormente. En el sorteo se tiene un total de 110 ganadores, pero me enfoco solo para el que desea ganar el primer premio.

La probabilidad de que nos toque el primer premio con un solo boleto es de 1 entre 180 mil.

Ahora planteo el problema con una pregunta: ¿En cuántos sorteos tendría que participar para ganar el primer premio, si solo compro un boleto por sorteo?

Con esto podemos decir que de los modelos vistos el que más se asemeja es el de binomial negativa, porque quiero saber cuanto intentos tengo que hacer para ganar una vez el primer premio, y evidentemente el problema es un modelo discreto.

La siguiente formula nos dice cuantos intentos es necesario hacer hasta obtener el primer éxito.


Haré uso del ejemplo visto en clase para la binomial negativa, pero cambiando lo necesario para adecuarla al problema.


Bueno en realidad no fue como yo quería, en la gráfica anterior los puntos marcados con "+" es la simulación de la binomial negativa, teniendo a K = 1, porque quiero saber cuantas veces se intento para ganar por primera vez el primer premio y se repite mil veces. Además para obtener esta gráfica altere la probabilidad real, cambie que la cantidad de boletos a 90 mil y se compran 1000 boletos por sorteo, extremadamente exagerado.

Igualmente en la linea continua, tengo que K = 1, la probabilidad es la real (1 entre 180 mil), y podemos observar que podemos comprar 1000 boletos por cada sorteo toda la vida y seguramente jamas nos saquemos la casa bonita.

Ahora haré unos cambios, tomare en cuenta que solo se desea ganar cualquiera de los 110 premios posibles, y se compran 100 boletos por sorteo, y por si fuera poco resulta que solo se vendieron 120 mil boletos de los 180 mil.


Si esto pasará así, pasarían más de 100 sorteos para poderte ganar por lo menos una licuadora o en el mejor caso una casa con auto.

En la forma simulada puse 50 mil repeticiones, para lograr acercarlo a la que se hace con formula directa (linea continua roja).

¿Puede hacerse de forma continua?
Bueno tal y como planteo mi problema no, porque en mi problema no involucro términos de tiempo , por lo tanto no es un fenómeno continuo. Tal vez si cambiáramos el planteamiento y digamos que se desea conocer cuanto tiempo pasara para ganar la lotería, tomando en cuenta que cada sorteo se hace en un determinado tiempo, podríamos estar hablando de un problema continuo.

Conclusión
En la realidad, esperar a ganar el primer premio de la siembra cultural, comprando un solo boleto por sorteo, tiene una probabilidad cercana a cero, por lo que nos pasaríamos gastando dinero en boletos, esperando un milagro para poder ganar.

Programa


Para no quedarme sin hacer mi propio programa, haré algo sencillo. Mi problema es:
Se sacan 2 cartas al azar de una baraja normal de 52 cartas y deseamos que las dos sean de corazones, tenemos una probabilidad del 5.88% para que sea así. Y ahora cuantos intentos hay que hacer para obtener un éxito.

Lo trate de hacer con una simulación y cambiando las veces de repetición. Esta fue la gráfica que me arrojo con solo 100 repeticiones.



Bibliografía:
Distribuciones fundamentales
Diagrama de distribuciones
Distribución de probabilidad
Binomial negativa

21 de febrero de 2012

Plataformas de Desarrollo

Ingeniería de Dispositivos Móviles
Laboratorio: Publicación 1

Plataformas de Desarrollo


Definitivamente el desarrollo de aplicaciones móviles es la tendencia actual en cuanto al desarrollo de software, debido a que cada vez son más las personas que cuentan con dispositivos que son fáciles de llevar a todos lados, y los usuarios suelen buscar aplicaciones que vayan de acuerdo a su ritmo y estilo de vida, por lo tanto hay una amplia gamma en cuanto al desarrollo de aplicaciones.

Las plataformas de desarrollo suelen ser herramientas que los creadores de los sistemas operativos para ciertos dispositivos proveen para que los desarrolladores hagan uso de los recursos de los dispositivos y creen ingeniosas aplicaciones.

Las plataformas existentes van de acuerdo a los sistemas operativos existentes, de los cuales hablaré en alguna entrada posterior, por el momento solo mencionaré las plataformas de desarrollo para aplicaciones nativas a los dispositivos con cierto sistema operativo.

iOS

Apple para su sistema operativo iOS nos provee de muchas herramientas para lograr desarrollar aplicaciones, desde el xcode como IDE para desarrollar hasta vídeos y códigos de ejemplo.

Este es el enlace para ir al Dev Center donde encontrarán una infinidad de material.

iOS Dev Center


Windows Phone

Por el momento en la página de descarga del programa para crear aplicaciones para este sistema se encuentra en su versión 7, no se ve a simple vista que tengan gran contenido para iniciar sin saber absolutamente nada, pero en general se ve bien.

Y aquí la página.

Windows Phone

Android

Android es la plataforma con la que voy a trabajar, y hasta el momento he encontrado muy buen material ahí, hay desde código de ejemplo, vídeos y documentación muy extensa, e inclusive te explican paso a paso como instalar las herramientas e IDEs necesarias, para empezar a desarrollar una aplicación, y además provee de un emulador de dispositivos para poder probar las aplicaciones antes de probarlas en un dispositivo real.

Android

En la siguiente imagen podemos ver gráficas y porcentajes, donde podemos ver la importancia del desarrollo de aplicaciones para móviles, se ve que ha tenido un gran avance en los últimos dos años. Esta enfocado a desarrollo web móvil pero lo que queda claro es el gran uso que tienen por ejemplo los dispositivos Android donde han incrementado el uso más del 200%.


Algo de información relacionada
Interfaz de Programación de Aplicaciones
Tendencias en plataformas y desarrollo móvil

20 de febrero de 2012

Week 4

Distributed and Parallel Systems
Contribution: Week 4
This week I'm working in a example of send a file from server to a client. My code is simple, by default the IP is localhost, only for test it in the same computer. But with threads we can have a program that send the same file to several clients. But this change I will do it the next week.

Link to the wiki: Sendfile in Java

Nominations:
Juan Carlos
Rafael
Cecilia Urbina

This image is a simple executation of the program Server to Client.

19 de febrero de 2012

Dispositivo XWave

Cómputo Integrado
Laboratorio

¿Qué es XWave?


XWave es un dispositivo que te permite aprovechar el poder de la mente de una manera muy revolucionaria. Este dispositivo consiste en una serie de sensores distribuidos en ciertos puntos de una diadema, parecida a la de la diadema con auriculares. Los sensores están en contacto con la piel de la frente.

XWave se fundamenta en la investigación médica y de ciertas patentes, y con esto es posible obtener mediciones de las sensaciones que es posible detectar mediante diferentes frecuencias emitidas por el cerebro, así como la meditación y concentración tenida. Estos datos de entrada hacen posible la creación de aplicaciones donde el usuario es capaz de controlar y hacer flotar objetos en una animación virtual de un objeto real, claro también sería posible hacerlo real pero con el hardware necesario. Esta misma tecnología se utiliza en Mindflex de Mattel y el El Force Trainer.

La empresa encargada de la venta de este dispositivo ofrece aplicaciones en la plataforma iOS, con aplicaciones que hacen uso del dispositivos y con versiones existentes para iPod, iPhone y iPad.

¿Un producto nuevo?


Haciendo un poco publicidad a XWave, este dispositivo no es algo que se creo hace poco, es el resultado de un trabajo muy completo en cuanto al estudio de la actividad cerebral y que se viene haciendo desde hace ya varios años, lo que nos ofrece es una forma más cómoda y practica de usar. Como podemos ver en las siguientes imágenes, notamos la diferencia de aparatos que eran necesarios antes que cubrían con sensores todo el exterior del cerebro y ahora con tan solo una diadema con unos cuantos sensores es posible obtener la misma información de las ondas cerebrales.

Antes:
Ahora:

¿Cómo funciona?


Nuestro cerebro se comunica mediante transmisión de electricidad entre las células neuronales llamadas neuronas. Los pulsos eléctricos pueden ser detectados en la superficie de la piel con una pequeña antena. Anteriormente era difícil detectar estas líneas de pulso y tenían que ser interpretadas.

Ondas cerebrales detectadas
Las ondas cerebrales son señales analógicas que van entre 0-50Hz. Los rangos de frecuencias se divide en bandas de etiqueta en la industria médica, como:

Delta (0.5 - 2.75 Hz) - Las ondas delta se producen principalmente en niños y adultos en el sueño profundo. Las ondas delta son también conocidos por desencadenar la liberación de la hormona del crecimiento, que ofrece la curación, de ahí la razón por la cual el sueño es tan importante durante el proceso de curación.

Theta (3.5 - 6.75 Hz) - Se producen principalmente en los niños durante las primeras etapas de sueño y los adultos cuando están estresados ​​emocionalmente.

Alfa de baja densidad (7.5 - 9.5 Hz) y Alpha de alta densidad (10 a 11.75 Hz) - Se producen cuando una persona está relajada, pero alerta. Durante este estado, una persona está despierta, pero en reposo. Durante el sueño, las ondas alfa son reemplazadas por las ondas beta.

Beta baja (13 16.75 Hz) y Beta alta (18 a 29.75 Hz) - Ocurren cuando un adulto se centra, alerta o está realizando cualquier tipo de actividad.

Gamma baja (31 a 39.75 Hz) y Gamma media (41 a 49.75 Hz) - Se asocia con una mayor actividad mental, incluyendo la percepción y la conciencia. Las ondas gamma desaparezca bajo anestesia general.

Interpretación


Atención:
Su atención se deriva de las ondas beta. Estas son las ondas cerebrales entre 13-30Hz. Sus ondas beta se calculan y se interpreta entonces para indicar su nivel de atención. El visualizador te da la oportunidad de experimentar con su nivel de atención por parte de flotar una pelota con la mente.

Meditación:
Su meditación se deriva de ondas alfa. Estas son las ondas cerebrales entre 7-12 Hz. Sus ondas alfa se calculan y se interpreta entonces para indicar su nivel de meditación. La aplicación XWave te da la oportunidad de experimentar con su nivel de meditación, cambiando el color de la pantalla en función de cómo relajado o la fuerza del estado de meditación e la que éstas.

¿Es seguro?
Sí. No existe ningún problema cerebral provocado con este dispositivo ya que sólo escucha las ondas cerebrales. No transmite o envía ninguna señal.

Bibliografía:
XWave

18 de febrero de 2012

Señales de Sensores

Cómputo Integrado
Laboratorio

Introducción


Los sensores se usan sistemas embebidos cada vez con mayor frecuencia. En la industria se han utilizado desde hace tiempo para los sistemas de control de la fabricación, y actualmente los dispositivos de consumo están comenzando a emplearlos también. Los fabricantes están integrando sensores en los productos de consumo para crear mejores experiencias al usuario – el rango de elementos añadidos va desde acelerómetros en teléfonos móviles a sensores de vapor de agua en hornos microondas. Los diseñadores de sistemas, que previamente sólo trabajaban en el dominio digital, están ahora interaccionando con los sensores analógicos.

El siguiente por ejemplo es un sensor de grado de alcohol, que como señal de salida de datos proporciona el nivel de alcohol detectado en una persona que sopla frente a las aberturas. Y lo muestro porque según mis planes es lo que estaré usando para mi proyecto arduino.

Las señales analógicas de los sensores deben digitalizarse para que el sistema pueda usarlas, y luego la trayectoria de las señales pasa a través de amplificadores, filtros y etapas de digitalización. Cada etapa usualmente implica un componente pasivo que realiza una función. Una vez que se digitaliza la señal, puede pasarse a un sistema de control en el micro-controlador y de ahí a un procesador anfitrión a través de un protocolo de comunicación. El protocolo puede usar los datos del sensor para lo que sea necesario.

Cada uno de los sensores tiene una señal y rango de salida diferentes. La señal de salida puede estar basada en voltaje, corriente, resistencia, capacitiva o frecuencia, pero existen pocos standards y sólo los usan los sistemas industriales. Incluso los sensores similares del mismo fabricante pueden tener diferentes salidas, y estas diferencias pueden crear problemas para los diseñadores del sistema. Un diseñador debe seleccionar un sensor que cumpla los requerimientos del sistema. La incorporación de un nuevo sensor con una salida ligeramente diferente necesitará alterar la amplificación y etapas de filtrado.

La mayoría de las señales de salida se basan en pequeñas señales de corriente o voltaje, de manera que una simple red resistiva adapta cualquier señal basada en corriente en un voltaje.

Revisemos ahora algunos conceptos que simplifican el concepto de la selección:

Amplitud
La salida de un sensor puede ser tan pequeña como varios milivoltios o tan grande como varios voltios. Para su correcta digitalización, la señal debe ser lo suficientemente grande como para que pueda leerla el ADC (Analog-to-Digital Conversion). En la mayoría de los casos, la señal del sensor requiere amplificación.

La selección del amplificador se adaptará a las necesidades de cada proyecto y podrá ser un amplificador de instrumentación, un amplificador diferencial, un amplificador operacional, o un amplificador de ganancia programable PGA. También debe determinarse la cantidad de ganancia que el amplificador requiere.

Filtrado
Todos los sistemas imparten algún ruido a la señal de los sensores. El ruido proviene de diferentes fuentes, incluyendo paneles, radios, componentes térmicas, e incluso el sensor ruido. El ruido puede filtrarse usando filtros analógicos pasivos, filtros ICs, y filtros digitales. El método más común, filtrado pasivo, implica crear una red pasiva de resistencias, condensadores e inductores.

Conversión digital
Para usar la señal filtrada del sensor, debe cuantificarse la señal analógica en el dominio digital usando un ADC. La selección de un ADC es la preocupación principal de los requerimientos del sistema para muestrear velocidad y resolución. La velocidad de muestreo necesaria está relacionada con el ancho de banda del sensor y con las necesidades de actualización.

Algunos tipos de sensores


Posición lineal o angular
Como el potenciómetro y el sensor Hall que sirven para conocer en que sentido esta ubicado determinado dispositivo.

Velocidad lineal y angular
Determinar la velocidad a la que se mmueve cierto dispositivo o si este esta girando saber a que velocidad lo esta haciendo.

Aceleración
Permite conocer los cambios de velocidad. Existen el acelerómetro y los servo-acelerómetros.

Temperatura
Existen varios dispositivos encargados de la medición de la temperatura como el Termopar y Termistor NTC y PTC.
Sensores táctiles
Para dispositivos que necesitan saber si alguien toca un aparato para por ejemplo encender una lámpara. En los dispositivos móviles mas recientes con pantallas táctiles, utilizan sensores inductivo y capacitivos para detectar cuando se hace presión sobre la pantalla. De estos dos últimos es más recomendable el capacitivo, porque suele ser más sensible al tacto de las llemas de los dedos.

Sensor de proximidad
Suele usarse el sensor fotoeléctrico para determinar la proximidad debido a la diferencia de la cantidad de luz. Celulares recientes tienen este tipo de sensores de proximidad para reconocer cuando alguien tiene el teléfono en el oído durante una llamada y este apaga la pantalla para ahorrar energía.

Y existen más sensores, como el que mencionaba de detección de grado de alcohol, pero me quedo por lo tanto con estos ya que son los más comunes sobre todo para el tipo de proyectos en los que estamos trabajando.

Bibliografía
Sensores
Tipos de sensores

17 de febrero de 2012

Introducción a Sistemas Integrados

Cómputo Integrado
Laboratorio

¿Qué son los sistemas integrados?


El sistema embebido, como dice el nombre, forma parte de un conjunto más amplio, como puede ser una máquina, un electrodoméstico u otro sistema más amplio. Esta parte que está instalada en el interior de la máquina, es la que llamamos sistema embebido o empotrado. Su misión consiste en resolver una tarea pequeña del conjunto que tiene que resolver la máquina en cuestión.

La mayoría de los sistemas embebidos se encuentran en una placa base, como las tarjetas de vídeo, audio, conexión ethernet, entre otras. Ejemplos de ellos lo podemos ver en un taxímetro, la terminal para el pago con tarjetas de crédito, un termómetro digital, control remoto, y más.

Por lo general los sistemas embebidos se pueden programar directamente en el lenguaje ensamblador del microcontrolador o microprocesador incorporado sobre el mismo, o tambien, utilizando los compiladores específicos, pueden utilizarse lenguajes como C o C++; en algunos casos, cuando el tiempo de respuesta de la aplicación no es un factor crítico, también pueden usarse lenguajes interpretados como JAVA.

Puesto que los sistemas embebidos se pueden fabricar por decenas de millares o por millones de unidades, una de las principales preocupaciones es reducir los costes. Los sistemas embebidos suelen usar un procesador relativamente pequeño y una memoria pequeña para ello.

¿Mi lavadora es un sistema embebido?
La lavadora se compone de un chasis, de motores eléctricos, bombas de agua, de un frontal con varias teclas para que el usuario pueda poner en marcha la lavadora, contiene temporizadores y válvulas eléctricas que controlan el flujo del agua, y más componentes.

Nos podemos fácilmente imaginar la necesidad un circuito electrónico que contenga los diferentes programas de lavado del que disponga el electrodoméstico. Y por razones obvias, esta electrónica no sería otra cosa que un micro-ordenador, especialmente diseñado para dicho fin, en este caso el de lavar. Por lo tanto podemos hablar de un sistema embebido o empotrado en el interior de la lavadora.

¿Dónde encuentro sistemas embebidos?


En todas partes, ya que un sistema embebido es un ordenador más, que a diferencia de una computadora personal, carece de teclado y pantalla en la mayoría de los casos. Dicho de otra manera, un sistema embebido consiste de una electrónica programable especialmente diseñada para soluciones específicas.

Ejemplos
  • Sistemas de telefonía fija o móvil
  • Automatización de procesos de producción
  • Equipos e instrumentación industrial
  • Sistemas de transporte, desde cintas transportadoras, sistemas robotizados hasta vehículos de transporte de todo tipo
  • Electrodomésticos de todo tipo, como microondas, lavadoras, frigoríficos, lavavajillas
  • Sistemas periféricos de un PC, como los MODEM, router, teclados, ratones de nueva generación, equipos multimedia
Características
  • Esta especialmente diseñado para la solución óptima de la tarea o tareas a resolver
  • Generalmente es una "pieza especializada" instalada en un sistema anfitrión
  • A diferencia de un PC, el sistema embebido se dota con los módulos estrictamente necesarios para su función
  • Es una solución única en el mercado, no existe otra igual
La incorporación de un sistema embebido proporciona a un producto un valor añadido importante que lo distingue claramente de los productos de la competencia. Esto es posible gracias a que el sistema embebido con respecto a la solución anterior proporciona una:
  • Solución más precisa y rápida en su especialidad respecto a la solución anterior
  • Mayor número de opciones respecto a la solución anterior
  • Coste reducido, por lo tanto reducción de costes en el proceso de fabricación
  • Aumenta la competitividad del producto por su diferenciación respecto a otros productos similares

Sistemas embebidos por Ing. Héctor Carlos Riso


Por lo menos la primera mitad del vídeo nos habla con conceptos generales que es un sistema embebido, la segunda mitad sugiero ignorarla, ya que solo era relevante a la gente del departamento donde él trabaja.

Bibliografía:
Sistema embebido
Sistemas embebidos - Idose

16 de febrero de 2012

Week 3

Distributed and Parallel Systems
Contribution: Week 3
Last week I did the Consumer-Producer algorithm with threads.
This week I'm working with some simple examples of algorithms in parallel.

This is the link to the Wiki:
Parallel Prime

Nominations:
Gabriela Cárdenas
Cecilia Urbina
Carmen Suárez

9 de febrero de 2012

Simulación en Oregano

Cómputo Integrado
Laboratorio

Ejemplo


En esta semana instale para Ubuntu el programa Oregano con interfaz gráfica. La instalación desde terminal es fácil y se hace con el siguiente comando desde el terminal:
sudo apt-get install oregano
Luego lo buscamos desde el "Dash home" en Ubuntu, puede ser presionando la tecla con el logo de Windows, y buscamos por "oregano" y se nos mostrará el programa.


Oregano nos sirve para dibujar el circuito eléctrico de algún componente que estemos creando, para luego ver si este realmente funcionaría antes de hacerlo físicamente, y ofrece las herramientas básicas para comprobar si funciona o no.

Lo que tenemos en la pantalla lateral derecha es un listado de todos los componentes que es posible poner, y si necesitamos más podemos descargar algunas librerías de componentes. Solo es cuestión de buscar el elemento y arrastrarlo a la hoja con el grid y colocarlo en donde nos sea necesario, con opciones como rotar el elemento.

También es importante mencionarles que cada componente es posible modificar en la mayoría de ellos sus propiedades, por ejemplo de los resistores podemos cambiar los valores de los ohms.

De la página ubicada al final de esta entrada me base para crear un circuito sencillo y el dibujo final fue el siguiente:


En el ejemplo he colocado unos "voltage clamp" que son una especie de puntas para verificar la corriente que pasa por el punto marcado. Como tengo un capacitor en mi circuito, el lugar donde coloque la punta en la simulación tenemos un incremento del voltaje, que podemos ver en la siguiente gráfica.


Para aquellos que no intentaron esto en clase, recomiendo intentar este ejemplo que estuvo sencillo, para que logren identificar los errores que pueden ser mostrados en la consola de simulación si hacen algo mal, pero si hacen el mismo circuito que yo no deberían de salir errores.

Recursos:
Ejemplo: El Futirifoken

8 de febrero de 2012

Consumer-Producer in C

Distributed and Parallel Systems
Laboratory: Week 2
This is a small example of the consumer-producer with threads in C.


4 de febrero de 2012

Week 2

Distributed and Parallel Systems
Contribution: Week 2
This week I only investigated some aplications about parallel computing. The next week I will post something about a particular aplication, that we can implement for the grupal proyect.

This is the link in the wiki: Examples in real life

This is a copy of the info that I write in the wiki. I did this because I don't know if someone accidentally erase or change the info that I wrote, and I want to have a copy of the original text.

References
Introduction to Parallel Computing

3 de febrero de 2012

Modelos Deterministas

Modelado y Simulación de Sistemas Dinámicos
Reporte 1
Este es el primer reporte para esta clase en la que se nos pidió hablar acerca de un sistema determinístico. En clase como ejemplo se abordo el proyector de pantalla, y vimos la razón por la que es un aparato determinístico, ahora nos toca a nosotros hablar de un ejemplo al que consideramos determinístico.

Primero me gustaría abordar algo acerca de los modelos matemáticos, para después enfocarme en el tema a tratar.

Clasificación de modelos matemáticos


Después de haber consultado varias páginas acerca de la clasificación de modelos matemáticos, y en base a las diferentes clasificaciones presentadas por varios autores, llegue a la conclusión de que la clasificación varia según la información de entrada, la representación que se dará a los resultados, en si es usada o no la aleatoriedad y según la aplicación u objetivo.

Entres los modelos de aplicaciones tenemos:
  • Modelo de simulación
  • Modelo de optimización
  • Modelo de control

Y los que nos importan por ahora son los clasificados según su aleatoriedad:
  • Modelo determinístico - No existe incertidumbre
  • Modelo estocástico - Es probabilístico

¿Qué es un sistema determinista?


Un sistema determinista es aquel en el que la salida de datos nunca cambiará si la entrada de datos siempre es la misma, es decir, en ningún momento existen datos que sean seleccionados de forma aleatoria, y por lo tanto para un conjunto especifico de datos, el programa deberá arrojar el mismo resultado sin importar la cantidad de veces que este sea ejecutado. Cosa que no es así cuando es un sistema probabilístico, donde para un valor de entrada, habrá diferentes salidas en cada ejecución.

La forma con la que yo considero si algo es determinista o no es bajo las siguientes características. Por ejemplo si este tiene una entrada de información, que en un programa sería entrada de datos, y en un aparato electrónico sería accionando un botón; y luego si este, después de haber tenido esa entrada de datos reacciona y hace algo, ya sea que siempre haga una misma operación para esa entrada, o en base a esa entrada elija que acción debe de hacerse, aquí me refiero a si en el camino a la salida, hay condiciones que hagan que el flujo de datos tome diversos caminos; y al final de cuentas nos deberá arrojar una salida que pueden ser datos o reacciones en caso de los aparatos electrónicos.

Ejemplo


¿Cuál es mi elección?
La máquina para recargar saldo en la tarjeta MIA del sistema del metro.

¿Por qué fue mi elección?
Como se nos sugirió ir pensando en el camino a casa acerca de el sistema deterministico del cuál hablaríamos, en mi caso lo primero que me tope y que deduje cumplía con lo solicitado, fue la máquina ya mencionada ya que ocupaba recargar saldo para poder abordar el metro, y a partir de ahí pensé el por qué sí era una máquina determinista.

Descripción del aparato
Es una máquina parecida a un cajero automático, donde tenemos una pantalla con 4 opciones en la pantalla inicial, una entrada para monedas, una entrada para billetes, la ranura para insertar una tarjeta, y la bandeja para recoger una tarjeta cuando se compra por primera vez.

¿Qué lo hace ser determinista?
El proceso que sigue el software incluido en la máquina es evidente que siempre hace lo mismo, lo único que varia es la entrada. Tomando el caso de la recarga de saldo, primero en la pantalla con 4 opciones seleccionamos la que nos dice Información/Recarga, luego la máquina espera a que la tarjeta sea insertada, y no hace ninguna otra acción mientras esta no sea insertada, al menos que en pantalla se indique la opción Cancelar. Una vez que colocamos la tarjeta la máquina bloquea la ranura para evitar retirar la tarjeta mientras la máquina esta accediendo a los datos. Después se nos muestra la información básica de la tarjeta y el saldo actual y la opción en pantalla de Recargar, y una vez presionada esta opción la ranura para las monedas se abre al igual que la de billetes se activa, y procedemos a ingresar el dinero, después de esto en pantalla se selecciona listo, las dos ranuras de dinero se bloquean, y la recarga se hace a la tarjeta, una vez terminada la operación, la ranura de la tarjeta de desbloquea y podemos retirarla.

Entonces esta máquina reacciona a los botones con su respectiva acción a seguir, y esto no cambia, y si la entrada de dinero es de 5 pesos, causa como salida una recarga a la misma cantidad (sin tomar en cuenta el regalo por recargas mayores).

Pseudocódigo del sistema
switch(opción inicial) {
  case 1: compra
  case 2: modo fácil
  case 3: recarga
    while (no hay tarjeta) {
      pedir ingresar tarjeta
    }
    if (tarjeta valida) {
      bloquear ranura de tarjeta
      mostrar saldo actual
      switch(opción) {
        case 1: cancelar
          termina operación y desbloquea ranura de tarjeta
        case 2: recarga
          abre ranuras de monedas y billetes
          después que se selecciona aceptar:
          cierra ranuras y recarga
          break;
      }
    }
  case 4: idioma
}

Algo más...


Con lo visto en cursos anteriores como la clase de Optimización, tome en cuenta también que un sistema determinístico también es aquél que logra dar la solución a los problemas de programación lineal, como es el algoritmo para el método simplex o el de ramificación y acotamiento, para problemas que requieren solución entera, estos dos son deterministas porque si nosotros de entrada ponemos la función objetivo y sus restricciones, siempre nos arrojará el mismo resultado para un mismo problema.

Recursos
Las imágenes son propias.
No hay vídeo porque no he vuelto a recargar aún.
Modelos matemáticos
Clasificación de modelos

1 de febrero de 2012

Week 1

Distributed and Parallel Systems
Contribution: Week 1

What is a supercomputer?


The Free On-line Dictionary of Computing has this definition for "supercomputer":
A broad term for one of the fastest computers currently available. Such computers are typically used for number crunching including scientific simulations, (animated) graphics, analysis of geological data, structural analysis, computational fluid dynamics, physics, chemistry, electronic design, nuclear energy research and meteorology.

The speed of most computers was, for many years, measured by how many millions of instructions per second, or MIPS, they could execute. Variability in instruction sets has made this benchmark a poor indicator of performance and so it is rarely used anymore. Since supercomputers have always been number-crunchers, their speed is measured in floating point operations per second, or FLOPS, in units of megaflops (MFLOPS), gigaflops (GFLOPS), and teraflops (TFLOPS) which refer to millions, billions, and trillions of FLOPS, respectively.

History


Much of the early history of the supercomputer is the history of the father of the supercomputer, Seymour Cray (1925-96), and the various companies he founded; in particular, Cray Research, which was the U.S. leader in building the fastest supercomputers for many years. Cray's mission throughout his life was to build the fastest computer in the world, a goal he first realized in developing the first fully transistorized supercomputer, the CDC 1604, in 1958 Control Data Corporation, a company he founded with William Norris in 1957. He went on to design the CDC 6600, which used 60-bit words and parallel processing, demonstrated RISC design, and was forty times faster than its predecessor, followed by the CDC 7600 system. These machines would give Control Data the clout to push the mighty IBM out of the scientific computing field for a time.

Cray left Control Data in 1972 to found Cray Research following a disagreement with Norris, then CEO, who had put a new computer on hold. Always a private man, Cray was never very interested in company management so, as he had with Control Data, he relinquished control of the company after five years and worked out a deal that allowed him to do research and development at a lab away from company headquarters. After designing the 100 megaflops CRAY-1 computer in 1976 and the 1-2 gigaflops CRAY-2 computer system in 1985, both of which were the fastest supercomputers in the world when they were introduced, he again parted ways with his company after top-management elected not to go ahead with his new project, the Cray 3. Founding Cray Computer Corporation in 1989, he again built what would be (briefly) the fastest supercomputer in the world at around 4-5 gigaflops, the Cray 3, which is based on superfast 1 GHz gallium arsenide (GaAs) processors rather than conventional silicon processors, which were, and still are, topping out at 400-500 MHz. He followed it with the Cray 4, also based on gallium arsenide, which is twice as fast in per-node performance as the Cray 3 and is smaller than the human brain.

For many years, Seymour Cray and his companies dominated supercomputing. Eventually, other companies began finally to compete directly. Thinking Machines Corporation, for example, is another company that was famous in the field of supercomputing. Their Connection Machines, which could contain 65,536 SPARC or superSPARC processors, were among the first massively parallel machines.

Nowadays


The next video it's very interesting. Is about how Acer create a supercomputer center, and we can see all the components that they used and the steps followed for the construction of this center.


Supercomputers in Mexico


There is a new Supercomputer Center in Mexico, named Argentum, located in San Luis Potosí. The UNAM has a supercomputer named KAN-BALAM, but now I will show you some information about Argentum.

El Instituto Potosino de Investigación Científica y Tecnológica (IPICYT) realizó la puesta en operación del nuevo cluster del Centro Nacional de Supercómputo, nombrado Argentum, con tecnología y asesoría de IBM, el cual servirá para atender las necesidades y los requerimientos en materia de Computo de Alto Rendimiento de la comunidad científica potosina y nacional.

El Argentum, un cluster E1350 Blade Center, fue manufacturado en la planta de IBM de Guadalajara y representa un poder de procesamiento de 6.2 TeraFlops con 83 nodos de cálculo (que suman 664 procesadores Intel XEON EMT64). El equipo cuenta con 15 TB de almacenamiento y 5 nodos de visualización de alto rendimiento. Estas características lo convierten en la primer computadora de alto rendimiento en el país, fuera de la Ciudad de México. La capacidad de este equipo lo coloca aproximadamente en la posición 400 entre las Top 500 computadoras en el mundo.

El equipo será usado en proyectos de investigación de Química Cuántica, Astrofísica, Modelación de Climas, Biotecnología, Procesamiento Numérico Intensivo, Biología Molecular, y para proyectos del Gobierno de San Luis Potosí, y de otros que así lo demanden.
From Software Guru news.

A video of this center with the explanation of one of the managers in spanish


References
Supercomputers by Dan Calle

Nominaciones
Roberto Martínez por su entrada "Ordenamiento por mezcla".