Mostrando entradas con la etiqueta Modelado y Simulación de Sistemas Dinámicos. Mostrar todas las entradas
Mostrando entradas con la etiqueta Modelado y Simulación de Sistemas Dinámicos. Mostrar todas las entradas

12 de mayo de 2012

Ecuaciones Diferenciales con Métodos Numéricos

Modelado y Simulación de Sistemas Dinámicos
Complemento
Los métodos numéricos son técnicas mediante las cuales es posible formular problemas de tal forma que sean resueltas con operaciones aritméticas, Aunque hay muchos tipos de métodos numéricos todos comparten una característica común, llevan cabo un buen número de cálculos aritméticos que se resuelven una y otra vez.

Pero haciendo uso de programas computacionales y estos métodos, llegar a una solución casi exacta a la real es muy fácil, ya que en realidad se trata de programas en los que se tiene una iteración en la cual siempre se repiten los mismos cálculos pero con cambio de valor en las variables, lo que hacerlo a "mano" resulta muy tedioso.

Pero para entender primero como hacerlo mediante un programa, tenemos que entender como se hace a "mano", o por lo menos yo creo que es la forma más fácil de entenderlo.

Cree este documento explicando paso por paso como resolver un ejemplo con el Método de Euler hacia delante y Runge Kutta 2do. Orden.

Ecuaciones Diferenciales Ordinarias

Ahora que ya vimos como se resuelve a mano, tenemos el siguiente ejemplo de código para resolver en específico una ecuación diferencial escrita con python.


Los datos obtenidos mediante este programa son pasados a un archivo llamado euler.dat que después grafique con gnuplot y se obtuvo lo siguiente.


Y ahora lo mismo pero el código ahora muestra como se resuelve la misma ecuación diferencial, pero ahora con el método de Runge Kutta.


Al igual que con el anterior los datos obtenidos son pasados a un archivo llamado rungekutta.dat y esos datos son graficados con gnuplot y obtenemos lo siguiente.


Y aquí una comparación de las dos gráficas en una sola imagen, el de color verde es el método de Runge Kutta 2do. Orden y con color rojo tenemos el método de Euler hacia delante.


Se recomienda primero probar con una ecuación diferencial sencilla la cual conozcamos su comportamiento como y' = y , la cual nos debería de arrojar una gráfica que se incrementa en Y con el paso de T en X.

En el siguiente enlace podan encontrar más información de estos métodos, y muestran una comparación de exactitud de los métodos, y para diferentes iteraciones se ve el cambio de precisión.

Enlace: Métodos Numéricos

3 de abril de 2012

Sistemas Caóticos

Modelado y Simulación de Sistemas Dinámicos
Reporte 4
Reporte que explica en qué sentido el fenómeno que estás estudiando tiene características de un sistema caótico y qué implicaciones tiene esto en su modelado.

Programa que contiene uno o los dos de los elementos siguientes: (a) análisis de datos reales que indica que se trata de un señal caótico (típicamente una serie de tiempo, pero podría ser otra cosa) y (b) sistema de ecuaciones u otro modelo "artificial" para el fenómeno que da lugar a cáos - ambos (a) y (b) incluyendo código fuente y alguna ilustración de lo que se obtuvo.

Introducción


De lo que trata en pocas palabras la teoría del caos, es que ciertos tipos de sistemas dinámicos son muy sensibles a las variaciones en las condiciones o variables iniciales de un modelo.

Estas pequeñas modificaciones al inicio, provocan diferencias muy significativas y totalmente distintas en un comportamiento futuro, lo que complica la predicción a largo plazo.

Y para no empezar solamente a copiar texto de otras fuentes, y como siempre ayudan de mucho, encontré un vídeo excelente donde explican qué es el caos, y dónde lo podemos encontrar.


Algo de lo que puedo resumir con mis palabras acerca de este vídeo y el concepto de teoría del caos, es que en la naturaleza existen muchos modelos cuantitativos, donde la medición del tiempo, o el momento en el que pasa cierto evento, es muy importante y fundamental para todo el sistema.

Los sistemas en los que el tiempo es fundamental, son los que llamamos sistemas dinámicos, por ejemplo el clima o predicción del tiempo es un modelo donde interviene el tiempo, y es completamente caótico, porque solo unos pequeños cambios en condiciones iniciales de un sistema de pronóstico del tiempo, pueden hacer surgir condiciones atmosféricas totalmente distintas.

Un modelo matemático es muy complicado porque las mediciones que el investigador hace acerca del estado inicial de un modelo, nunca tiene una medición perfecta, y cambios completamente insignificantes pueden producir un resultado totalmente distintos, a esto le llamamos caos.

Hablar de ejemplos no caóticos son también muy buenos para entender que sí lo es.

Por ejemplos tenemos el péndulo o el lanzamiento de un proyectil. Lo que nos hace decir con seguridad que estos no son sistemas caóticos, mencionando el ejemplo del proyectil, es porque si una de las variables que están involucradas, como el ángulo de lanzamiento, es alterado muy poco, el proyectil aun caería en una zona totalmente cercana al punto al que se quisiera lanzar. En cambio en el sistema caótico esto no pasaría.

Hay algo llamado Familia Logística, que sirve para evaluar un modelo a lo largo del tiempo, como el crecimiento de población, y algo de ello también es aplicado al tema de la economía. En una entrada anterior hice algo acerca de la familia logística para el crecimiento de población.

Análisis de cambio monetario


La siguiente imagen puede ser un tanto cómica, por la relación que hacemos del concepto del caos y el tan conocido efecto mariposa, pero nos da una idea de la realidad del problema, porque a lo que se refiere en el aleteo de la mariposa puede ser cambiado por algún evento simple que este involucrado con los cambios de la economía, como el de la venta de algún producto en un país, lo cual provoque que en otro resulte la caída de la bolsa, cosas que podrían parecer no asociarse, pero sin tal vez puede ser verdadero.

En la siguiente página encontré algunos datos que me sirvieron de base para analizar este caso. Los datos dan como resultado una gráfica de Dolar contra Euro, y aquí esta tal y como en la página.

Economic Time Series


Cuando un sistema es caótico su comportamiento es altamente complejo e impredecible a largo plazo debido a que cualquier pequeña modificación se amplifica por el propio sistema. Sin embargo, a corto plazo, se puede predecir.

Para demostrar que a corto plazo un sistema como el presentado puede ser predecible, tome un modelo cualquiera para analizar los datos.

La función dada para este modelo es f(x) = 4x^3 - 3x, y lo que hice para demostrar que es un ejemplo de modelo caótico fue crear un programa que me diera los valores obtenidos para ochenta iteraciones y después poder graficar con dos diferentes valores iniciales de x.

El programa usado fue el siguiente:


El resultado para a = 2 es:


Y el resultado para a = 2.00001 es:


Lo que se puede decir de las dos gráficas es que después de cierta iteración empiezan a haber cambios muy drásticos en comparación de una con otra, sin embargo en un inicio parecían ser iguales.

Para ver mucho mejor el cambio de una con otra, hice un programa que me devolviera en un archivo la diferencia de los valores dados por las dos gráficas y luego grafique para analizar.

Este fue el programa para comparar:


Y obtuve lo siguiente:


Como se puede notar, en las primeras iteraciones no hay cambio significativo en los valores, pero llega al punto donde se disparan valores muy diferentes.

Con esto llego a la conclusión de que es posible predecir a corto plazo los valores para un modelo. Es decir, que para el caso concreto de una serie de datos en economía, si se logra saber a que modelo se acerca más, sería posible estimar los valores siguientes, pero resultaría malo para cuando se desea saber más a futuro.

Modelo no lineal


En economía, para caracterizar y predecir el comportamiento de las series temporales, tradicionalmente se utilizan modelos lineales, pero suelen producir comportamientos muy simples que obligan a introducir perturbaciones aleatorias para que resulten más reales. Este es el motivo que ha llevado al equipo a optar por modelos no lineales y, en particular, por los caóticos.

Estas técnicas matemáticas tienen la propiedad de mostrar comportamientos muy diferentes a lo largo del tiempo ante variaciones muy pequeñas de las condiciones iniciales.

Para este caso observe trabajos parecidos como el de el siguiente pdf, donde usan una función logística.

Chaos Models in Economics

Una función logística como se menciona en el vídeo del inicio, es muy utilizada para comprender los cambios caóticos en economía, por eso basado en lo que ya había probado en el caso de población, hice otro pequeño programa para obtener los datos con la función y después graficar con gnuplot.


Resultado para a = 0.018


Resultado para a = 0.019


Entonces la mayoría de los casos que se presentan en vida real en la economía suelen ser de tipo caótico, ya que aunque se conocen los parámetros iniciales cercanos al real para un cierto modelo, es difícil conocer el comportamiento a largo plazo, y solo como ya mencione, se podría conocer a un corto plazo, pero esto no es de gran ayuda en economía, porque lo que realmente se necesita es conocer que pasará en meses y no días.

Bibliografía
Teoría del Caos
Caos en el mercado
Caos en series de tiempo

2 de abril de 2012

Pruebas Estadísticas para Números Pseudoaleatorios

Modelado y Simulación de Sistemas Dinámicos
Reporte 3
A través de investigación en línea, elige una librería de generación de números pseudoaleatorios y pruebas estadísticas. Implementa a base de esto un programa para determinar: a) si los números generados de acoplan a la distribución indicada y b) si se puede considerar que los números generados presentan características deseables de "números aleatorios". Reporta los resultados junto con los mecanismos que seleccionaste.

Herramientas utilizadas
  • Octave - Lenguaje de programación utilizado
  • Gnuplot - Para creación de gráficas
Generación de números pseudoaleatorios

Dado a que use Octave para hacer mi tarea, y además de que trate de no repetir generadores de números pseudoaleatorios con distribuciones que mis compañeros ya habían usado en su tarea, tome la función para generar números pseudoaleatorios con la Distribución Beta.

La función es llamada de la siguiente forma.
betarnd(alpha, beta)
La cual nos regresa un número aleatorio de punto flotante entre 0 y 1.

Y cuya función de densidad esta dada por la siguiente forma.


¿Los números generados de acoplan a la distribución indicada?

Para saber si los números generados en verdad se acoplan a la distribución dada, lo que hice fue crear un pequeño programa en octave que genera una cantidad N de números aleatorios en la distribución beta, dándole como parámetros el valor de alfa = 2 y beta = 2.

Estos valores generados los iba ubicando en "canastas", para después graficar y saber si se parecía a la función.

En un principio lidie un poco con la parte de cual función era la correcta, pero en la página de la Wikipedia vienen unas gráficas y sus respectivos valores de alfa y beta dados, y en primera instancia compare directamente con esa gráfica que es la siguiente.


Y que para los valores que yo di, debería de parecerse a la de la línea color aqua.

Mi programa fue el siguiente.


Y con los datos recabados desde el anterior grafique directo con gnuplot para obtener lo siguiente.

betadis(1000, 100)

betadis(10000, 100)

Hasta ese momento fue un suspiro ver que mientras más aumentaba la cantidad de repeticiones, que son la cantidad de números generados, para un total de 100 canastas, los puntos marcados se acercaban más a la gráfica de la función.

Luego hice algo diferente, gracias a la idea de Juan Carlos para graficar y comparar directamente con la gráfica de la función, que por cierto es la de Función de Densidad. Primero cree un archivo con 10mil números aleatorios con la distribución.


Para después con Gnuplot crear un histograma y ahí mismo colocar la función de densidad para la distribución beta.


El resultado en imagen fue el siguiente.


Y con la imagen anterior, llegué a la conclusión de que el generador de números pseudoaleatorios, si se acopla a la distribución beta.


¿Los números generados presentan características deseables de números aleatorios?

Ahora faltaba hacer alguna prueba para verificar que los números generados tienen la característica de números aleatorios.

Al final esta el enlace a la página donde se encuentran todos las pruebas que se consideran como excelentes para verificar esto, también en el PDF de Statistical Test Suite, ahi vienen explicados todos las pruebas, así como en la página de random.org.

Hice la prueba de frecuencia por bloques, que trata de verificar que la cantidad de ceros y unos por bloque de un arreglo total de números sea pareja.

Donde la cantidad de bloques N esta dado por n/m, donde n es el número de elementos, y m la cantidad de elementos por bloque.


Al correr esta prueba, obtuve que el generador paso por lo menos esta de las tantas pruebas que hay, y probé con esa cantidad en los parámetros, intente con más pero tardo mucho y cancele.


Y esto fue todo, pero por último menciono como dato, que en Gnuplot y Octave la función log, es tomada como logaritmo natural, y para el logaritmo base 10 la función es log10, cosa que casi me mete en problemas, pero en los tutoriales encontré esa información.

Recursos consultados
Tutorial Gnuplot
Tutorial Octave
Statistical Test Suite
Distribución Beta
Pruebas estadísticas

27 de marzo de 2012

Sistema Caótico

Modelado y Simulación de Sistemas Dinámicos
Trabajo en Clase

Crecimiento de Población


Desde la siguiente página podemos ver la formula para conocer la evolución de la población, y nos permite cambiar el numero en las variables para ver los cambios que se producen.

The Logistic Map

Yo seleccione ciertas cantidades y aquí esta la gráfica generada desde la página web.


Ahora la tarea es crear un programa que incluyendo la formula propuesta, creemos una gráfica idéntica. Yo use octave para crear una función que haga eso, y en un archivo de texto plano guarde los datos que serán graficados.

Este es el código de mi programa.


Para generar la gráfica use gnuplot. Para eso cree un archivo con las instrucciones necesarias para la generación de la gráfica en un formato eps.


Y al cargar esas instrucciones en gnuplot, podemos ver como quedó la gráfica generada.


La gráfica es evidentemente igual que la generada por la página. Lo que nos hace saber que esto es un sistema caótico, lo comprobamos al cambiar el valor de L en la página o en nuestro código, y así veremos que con un pequeño cambio, que podría parecer insignificativo, la gráfica cambia drásticamente.

Páginas con contenido relacionado
Teoría del Caos
Método de Caos
Logistic

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

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