viernes, 27 de mayo de 2016

Programando la HP Prime II

En esta entrada quiero mostraros algunos ejemplos de como se programa en la HP PRIME con argumentos.
  • Primer programa:
Este programa es una versión del típico programa que hace todo el mundo cuando empieza a programar, estoy hablando del famoso "Hello World!". 


En la linea 1 se puede ver que ahora tras el EXPORT viene el nombre del programa, en este caso es Nombre (sí, lo sé... muy original).Pero la gran diferencia con los otros programas es que ahora tenemos algo entre los paréntesis. Eso se conoce como argumento de una función. Si usamos argumentos en el programa, lo vamos a poder ejecutar directamente sin tener que ir al menú de programas.

El comando MSGBOX va a mostrar en un mensaje lo que haya entre sus paréntesis. Lo que vamos a hacer es concatenar (unir) los strings . Para que los interprete como strings hay que ponerlos entre comillas (" ... ") como por ejemplo "Hola " o "!". Para concatenar hay que usar +.

Todos los programas por defecto al ejecutarse correctamente devuelven el valor 1. Si usamos el comando RETURN vamos a obligar al programa que nos devuelva su argumento. Esta es otra forma que el programa nos muestre algún dato o algo que queramos que se lo de a otro programa.

Si ejecutamos el programa:


Una cosa importante es que una vez que escribamos nuestro nombre como argumento del programa hay que ponerlo entre comillas para que lo interprete como un string.
  • Segundo programa:
El siguiente programa tiene mucha más utilidad que el anterior. Lo que vamos a hacer es calcular el paralelo de dos resistencias que se dan en forma de argumentos. Así nos ahorramos tener que entrar en el menú de los programas, pudiendo ejecutarlo directamente.

El código es:


  • Tercer programa:
Hablando con un amigo sobre el anterior programa me dijo que por que no hacía otra variante más de éste. Una en la que se calcule el paralelo de varias resistencias. Sólo hay que introducir los valores de las resistencias entre { ... } separadas por comas.

Lo bueno de este programa es que podemos poner tantas resistencias como queramos.

El código es:


Este código es un poquito más complejo pero tampoco mucho... jeje

En la linea 14 hay un IF que lo que nos advierte si hay un error, cuando sólo introducimos el valor de una única resistencia. En la linea 19 tenemos el bucle FOR que calcula el valor de las resistencias en paralelo. En las siguientes lineas de código lo que vamos a hacer es calcular el valor de las resistencias con la variable R, su módulo con Mod y la fase de ésta con Fase. Esto se debe a que también podemos usar números complejos y por lo tanto cualquier tipo de impedancias. Vamos a usar el comando truncate para que nos trunque el resultado con un número de decimales que seleccionamos nosotros con la variable decimales.

Las ejecuciones de los dos programas son:
Segundo programa
Tercer programa


lunes, 23 de mayo de 2016

Respuesta en frecuencia en la HP Prime

¡¡Tras mucho buscar por fin he encontrado un programa para la calculadora HP Prime que representa gráficamente diagramas de respuesta en frecuencia!!


Esta aplicación la podéis encontrar en el siguiente link:

http://www.hpcalc.org/details.php?id=7594

El archivo .zip hay que descomprimirlo y meter en la carpeta de nuestra HP Prime los archivos que tienen el formato .hpapp, .hpappnote, .hpappprgm.
Una vez hecho esto hay que ir a la biblioteca de aplicaciones y actualizarla así nos aparecerá la nueva aplicación.

Una vez en la aplicación sólo hay que poner el comando:
  • BODE(w_i,w_f,[num],[den])
Así nos calculará la respuesta en frecuencia de una función de transferencia entre las frecuencias w_i y w_f (en rad/unidad_de_tiempo).
Tanto el numerador como el denominador de la función de transferencia hay que definirlos como vectores, es decir, hay que poner entre corchetes los coeficientes que multiplican las variables de Laplace en orden decreciente.

Lo mejor es un ejemplo:

Queremos saber estudiar un filtro paso bajo de constante de tiempo 5, así que la función de transferencia será así: 1/(1+5*s) en la HP nos quedará:


Como se puede ver vamos a ver la representación entre 1 y 100 rad/s.

Como podéis ver en el menú (tecla view) existen varias opciones:


  1. Start/Info: te explica como usar el comando BODE.
  2. Magnitude/Phase: nos representa el gráfico de Bode.
  3. Nyquist: representa el gráfico de Nyquist.
  4. Nichols: representa el gráfico de Nichols, también conocido como Black.
  5. Respone: te deja introducir un retardo (de la forma e^(-t*s)) y calcula la respuesta temporal {No sé que es lo que hace exactamente}

Introducción a la programación lineal.

He empezado a estudiar un poco de optimización lineal y me ha parecido un tema bastante interesante, sobretodo el método SIMPLEX.

En esta entrada voy a tratar de explicar la estructura de un problema de programación lineal y los tipos de soluciones que existen.

Pero antes de eso tenemos que hablar de los conjuntos convexos puesto que son unas de las bases de álgebra que hay que conocer para poder comprender los problemas programación lineal.

  • Conjuntos convexos:

    • Combinación lineal convexa:
SI tenemos los puntos P1, P2, ... , Ph de un espacio afín de dimensión m, se dirá que el punto P es una combinación lineal convexa de ello si existen h escalares λ1, λ2, ... , λh tales que:

    • Segmento:
Un segmento de extremos P1 y P2 es el conjunto de todas las combinaciones lineales convexas de los puntos P1 y P2.
    • Conjuntos convexos:
Un conjunto C es convexo si y sólo si para cualquier pareja de puntos P1 y P2, de C, cualquier combinación lineal convexa de éstos es también un punto de C. Es decir, un conjunto es convexo si contiene al segmento que une cualquier pareja de puntos de éste.

Gráficamente y en una espacio afín de dimensión 2 (el plano) quedaría así:

    • Vértice:
Un punto P de un conjunto C es un vértice si no puede expresarse como combinación lineal convexa de otros dos puntos cualesquiera de C distintos de P.
    • Máximo de una función lineal:
Toda función lineal definida sobre un conjunto convexo tomará sus valores máximo o mínimo sobre los vértices de dicho conjunto. Si alguno de estos valores extremos se alcanza en más de un vértice entonces toma ese mismo valor en toda combinación lineal convexa de los vértices.

  • Problema de programación lineal:

Lo que se quiere hacer en un problema de programación lineal es optimizar una función lineal z que tiene una serie de restricciones, y sean igualdades o desigualdades de tipo lineal.

Si planteamos el problema sería de esta forma:

La función z se denomina función objetivo.

Resolver este problema consisten en obtener los valores de todas las variables xi que optimizan z satisfaciendo las restricciones. Las restricciones del tipo =< suelen representar limitaciones de recursos mientras que las de tipo => suelen ser condiciones técnicas. Vamos a suponer que las restricciones son independientes, es decir, no hay condiciones redundantes.
    • Variables de holgura:
Variables que se introducen para convertir las restricciones que sean desigualdades en igualdades.

Si las utilizamos y transformamos las restricciones quedan así:



La variable de holgura x_(m+1) debe ser major o igual a cero y el coeficiente en la función objetivo debe ser c_(m+1)=0.

En las restricciones del tipo =< las variables de holgura significa la cantidad de recurso no utilizado, en las otras restricciones son el exceso con el que se satisfacen las condiciones.
    • Planteamiento general del problema:
En forma matricial el problema con las variables de holgura quedaría:



x=(x1, x2, ... , xm): es el vector de las variables, incluidas las de holgura.
c=(c1, c2, ... , cm): es el vector de costes. Las componente de este vector que estén asociadas a las variables de holgura serán 0.
A: es una matriz de dimensión n x m ( n restricciones y m variables totales).
b: es un vector de n componentes, todas ellas mayores o iguales que 0.
    • Variables ficticias:
Son variables que se introducen en las restricciones para facilitar el hallazgo de una solución básica inicial del problema. Al introducir las variables ficticias podemos conseguir que aparezca dentro de la matriz de restricciones la submatriz identidad de orden n, que nos permitirá encontrar una solución básica.

Las variables ficticias se incluirán en la función objetivo con un coeficiente K si es un mínimo y -K si es un máximo, donde K es un número superior que cualquiera de los que intervienen en le proceso.
  •  Soluciones del problema:
El conjunto de soluciones posibles de nuestro problema de programación lineal es un conjunto convexo.

Una solución posible es todo vector x que satisface el conjunto de restricciones.

Se dice que una solución posible es básica si no hay más de n componentes (número de restricciones) que son positivas. Si el número de componentes es n, entonces la solución es básica  no degenerada.

Si una solución proporciona el máximo o mínimo de la función objetivo entonces se dice que la solución es óptima. Siempre corresponderá a un vértice del conjunto de soluciones y es una solución básica.


viernes, 13 de mayo de 2016

Fundición con molde de arena

Hace poco hicimos para la asignatura de Ingeniería de fabricación una práctica sobre fundición en molde de arena.

Como me pareció muy interesante he hecho un resumen de ésta.

Primero unas cuantas definiciones para que todos sepamos de lo que hablamos:

  • Molde: recipiente en el cual se crea una cavidad que es el negativo de la pieza final a obtener.
  • Modelo: copia de la pieza final, normalmente realizado en un material de fácil manipulación moldeo para series medias-grandes y materiales de punto de fusión elevado.

Como el metal al solidificar se contrae los modelos son siempre un poco más grandes que la pieza final.

Entonces el proceso de moldeo o fundición consiste en la obtención de una pieza mediante el llenado con metal fundido en la cavidad de un molde. En este caso se utiliza un modelo que se aprovecha de un molde al siguiente, mientras que el molde, realizado con arenas refractarias, se destruye en cada pieza. La selección de la arena (son las silicio-aluminosas) que se va a usar es muy importante puesto que es la que nos caracterizará por completo la pieza.

Algunas de las propiedades más importantes de las arenas son:
  1. Plasticidad en estado húmedo
  2. Cohesión (resistencia a la tracción y flexión). 
  3. Refractariedad (punto de fusión alto y resistencia a la vitrificación sin fundirse ni reblandecerse).
  4. Conductividad térmica
  5. Permeabilidad
  6. Deformabilidad
  7. Disgregable
El molde debe cumplir dos características aparentemente contrapuestas por un lado debe ser lo suficientemente rígido como para aguantar el flujo del metal por su interior y por otro, lo suficientemente frágil como para que se fragmente una vez cumplida su función, solidificada la pieza e iniciada la operación de desmoldeo.

Las principales partes de un molde son:

En estos dos vídeos se puede ver como hacemos el molde de la pieza y como después se hace la colada:




Los moldes que hicimos se pueden ver en estas fotos:






Y finalmente las piezas que obtuvimos al sacarlas de los moldes son una brida reductora, un yunque y una campana: