Examen 3: En este trabajo de laboratorio, han trabajado como un equipo los 5 estudiantes del curso, se les ha encomendado preparar un tutorial y dos experiencias básicas del microcontrolador Arduino UNO, lo que completa el programa del curso con la Informática Industrial, que implica una programación con peculiaridades muy importantes, tales como ciclos (loops) indefinidos y tiempos de revisión. Como el tiempo para asimilar los nuevos conceptos era muy corto, se decidió el trabajo conjunto de todos. El primer experimento ha sido el control secuencial de pines digitales, asignados como salidas y que implicaba el uso de funciones creadas por los propios estudiantes, y el segundo experimento se escribe una señal (pseudo) analógica en un pin digital declarado como salida, usando un tren de pulsos modulados en duración PWM, al que se conecta un LED (diodo lumínico) para controlar su intensidad.
TP3: Como trabajo práctico se asignaron experimentos con elementos más complejos como el control de la comunicación serial, y el control byte a byte. El primero fue el control de desplazamiento, bit a bit, usando comando MSBFIRST y el registro de desplazamiento, lo que permite controlar 8 salidas con sólo 3 pines. El segundo experimento ha sido el control de un motor de paso, esta vez con comandos específicos de ese motor (driver).
Tanto el examen como el trabajo práctico fueron presentados y demostrados sobre el microprocesador por los estudiantes del curso y esa presentación también formó parte de la evaluación.
Informe del examen 3 y trabajo práctico 3 de los estudiantes del curso. Los estudiantes, en su conjunto, han hecho un gran esfuerzo y trabajo para completar las 4 experiencias. Hay algunas imprecisiones, por ejemplo en el uso del registro 74HC595, las definiciones de señales analógicas (números reales en el intervalo dado, limitado sólo por el número de bits que se usan para leerlos o escribirlos) y señales digitales (números enteros, en general que pueden describirse con 0 ó 1 Binarias (True, False). ADC, en realidad es analogRead. En general el trabajo está muy bien.
Examen 2: Con el proceso descrito con la ecuación diferencial que ha seleccionado, haga (a) una simulación en Octave, donde se puedan apreciar los detalles de la dinámica del proceso, por ejemplo, respuesta a una entrada particular, saturación, tiempos de respuesta, etc. Si no ha encontrado un proceso adecuado, use las ecuaciones diferenciales de un circuito eléctrico RLC, con una fuente DC de 5 voltios que se aplica en t=0 y se cortocircuita luego de la saturación del capacitor, una resistencia R de 1 ohm, una inductancia L de 0.5 H y una capacitancia C de 10 mF. (b) Haga una animación que describa la evolución del voltaje en el capacitor desde su condición inicial 0, hasta su saturación y luego, cuando se cortocircuita la fuente, hasta su descarga. Coloque un indicador que muestre el voltaje del capacitor en cada momento.
TP2: Describa la dinámica de dos tanques en cascada, esto es, la evolución de los niveles de ambos tanques (h1 y h2) con respecto al tiempo. (a) Simula la evolución de los niveles de los tanques desde t= 0, cuando estaban vacíos hasta que alcanzan su altura de equilibrio, cuando se les suministra un caudal de 550 cm3/s y luego de haber alcanzado ese equilibrio, se produce un cambio de -100 cm3/s en el caudal de entrada (450 cm3/s), complete la simulación hasta los nuevos niveles de equilibrio. (b) Con todos los datos de los niveles haga una animación, por ejemplo con barras que suben y bajan y textos que muestran los valores de los niveles en cada instante de tiempo o que muestre esos cambios de en los niveles de los tanques. Cree ventanas emergentes que le pida: el caudal de entrada, el tiempo en el bajarán el caudal de entrada y la cantidad que bajarán el caudal de entrada.
Solución del examen 2 por Ángela Anguesomo. Angela se limita a explicar el código que usa y, aunque hace una muy buena animación, aún parece que el fenómeno no ha quedado ni bien explicado, ni bien mostrado.
Solución examen 2 de Tomás Ndje: Desde el punto de vista del modelado, el informe está muy bien, más no así la simulación. Tomás usa Euler, que es el peor para resolver ecuaciones diferenciales, y ha podido usar comandos muchos más poderosos de Octave como el "lsode" que le permite controlar los pasos de integración o el "rk4" también excelente pero sin control del paso. El programa que presenta está bien, pero los resultados no, quizás porque el tiempo de respuesta (que lo toma como el 95% del voltaje máximo) es muy corto, de modo que no ha llegado a su valor máximo cuando ya empieza bajar y por eso se ve un comportamiento oscilatorio sin amortiguación, cuando en realidad el movimiento es de saturación máxima y mínima (a cero).
Solución examen 2 Andrés Bopá. Andrés no sólo presenta un muy buen informe, su simulación, junto con la de Evangelina, recogen el fenómeno enteramente. Muy buen trabajo.
Solución examen 2 Evangelina Nzang. Evangelina hace un excelente informe del marco teórico del problema (aunque no justifica porque la ecuación de 2do grado) y hace una mejor explicación del código que usa, en el que hace una excelente simulación y además crea una función específica para el problema. Muy bien. Evangelina además en su simulación, recoge el fenómeno correctamente y enteramente.
Solución examen 2 y trabajo práctico por Nazario Evuy. Nazario incluye el examen y el trabajo en un solo documento. En el marco teórico de ambos modelos es muy sucinto y no registra adecuadamente las ecuaciones, usando los comandos de Octave para describirlas, en algunos casos las figuras de esas ecuaciones no se ven completas.
Solución trabajo práctico 2 de Ángela Angesomo. Ángela se limita a presentar el código de la simulación, y lo explica muy brevemente.
Solución trabajo práctico 2 por Evangelina Nzang. Evangelina hace una muy buena formulación, a nivel de programación, al dividir el código en 2 partes, una para la generación de los datos numéricos y otra para la simulación per se. Muy bien. Sin embargo, no explica los fundamentos teóricos del modelo simulado.
Solución Trabajo Práctico 2 de Tomás Ndje. Excelente marco teórico del modelo del sistema y muy buena simulación. Buen trabajo.
Solución del trabajo práctico 2 por Andrés Bopá. Andrés hace un muy buen informe del código presentado, y mucho menos del marco teórico del problema
Primer trabajo.
Enunciado T1: Realizar un programa en octave que dada una Tabla de valores normales de pesos y estaturas de niños y niñas desde 0 a 8 años, y dado el peso y estatura del niño o niña, diga si está en los rangos normales, o está bajo de peso o estatura o si tiene sobrepeso.
Por Evangelina Nzang (parte 3 del documento). Buen trabajo. Hace la búsqueda con broadcasting y presenta en pantalla buenos reportes.
Por Ángela Angesomo. Hace un buen código. La búsqueda la hace con un for y se podía hacer con broadcasting que implica menos líneas y mejor interpretación al revisar.
Por Nazario Ebuy. Entrega el código del programa aparte y además sólo lo hace para un ejemplo fijo y no para cualquier valor de la tabla.
Por Tomás Ndjé y su código. El código usa una fórmula con 30.44 que no sabemos de dónde lo obtiene (para calcular los meses y fracción del bebé). Por lo demás bien. Hace uso de cell's (muy bien).
Por Andrés Bopá y su código. No entrega informe
El primer parcial.
Respuesta de Evangelina Nzang.
Respuesta de Ángela Anguesomo.
Respuesta de Nazario Ebuy.
Respuestas de Tomás Ndjé 1 y 2.
Respuestas de Andrés Bopá 1 y 2. No explica nada de lo hecho.
El primer trabajo: Además de los dos problemas del examen, deben traer para el jueves de la semana que viene el problema de la enfermera pediátrica resuelto usando Broadcasting. y también con los if.
Trabajos del curso septiembre 2024 - febrero 2025
Tercer trabajo: El tercer trabajo el estudiante debe presentar un programa que entregue la hoja académica de cada estudiante, dado su número de identificación (carnet) universitario.
El tercer parcial.
Segundo Trabajo:
El trabajo deberá ser presentado en clase el lunes 25 de noviembre.
El segundo trabajo de casa tiene 2 partes, a saber:
Resolver el segundo examen parcial. Traer el código en Octave que resuelva los dos problemas del examen mencionado.
Resolver el problema del día de la semana en el que naciste o de cualquier fecha anterior o posterior. Para ello crea una función que reciba una fecha determinada (día, mes y año determinados, en formato (da,ma,aaaa), por ejemplo hoy (20/11/2024)) y el día de la semana que le corresponde (sem=[L,M,X,J,V,S,D]), por ejemplo, la fecha (20,11,2024) es un día miércoles (X). La función además recibirá como argumento la fecha de tu cumpleaños (dc,mc,cccc), e.g. (10,02,1972). Tenga en cuenta que:
La misma fecha del año anterior ocurre en el día anterior de la semana (restar un día), si ninguno de los dos años. es bisiesto. Así, por ejemplo, si el 10 de febrero de 2023 fue un viernes, el mismo día del año 2022 fue un jueves. Ello porque los días se repiten cada 7 días y porque el año normal tiene 365 días que son 52 semanas más un día.
Además por cada año bisiesto que haya entre las dos fechas hay que restar (si se cuenta hacia atrás) otro día adicional, porque los años bisiestos tienen 366 días. En esa cuenta se incluyen los años en los extremos del intervalo de tiempo. Por ejemplo, entre 2020 y 2024 hay dos años bisiestos. Llamaremos a este número Ab. Más ejemplos: El 20 de noviembre de 2023 fue lunes porque el año 2024 es bisiesto (añade otro día).
En la cuenta anterior (apartado 2.2) habría que restar un 1 por cada 29 de febrero del primer año o del último año del período en análisis, que NO aparezca en el intervalo de tiempo en considerar. Por ejemplo si estoy mirando entre el 10 de marzo de 2020 y el 15 de junio de 2024. La cuenta del apartado 2.2 diría que hay que sumar 2, pero el 29 de febrero de 2020 no está en el período analizado, luego al 2 del apartado 2 habría que restar 1. De manera similar si el período analizado fuese entre el 20 de marzo de 2020 y el 5 de enero de 2024, al resultado del apartado 2.2 (que es 2) habría que restar 2 porque entre el 20/03/2020 y el 05/01/2024 no hay ningún 29 de febrero. Esto sólo se aplica cuando en primer año o el último año (o ambos) del período analizado caen en un bisiesto. Llamaremos a este número NO.
También en conveniente enfocar el problema contando los días entre las dos fechas dadas pero como si fueran en el mismo año y de un año normal (no bisiesto). Por ejemplo, si se quiere analizar qué día fue el 03 de marzo del 2020 y damos como dato el 20 de noviembre de 2024 que es un miércoles, entonces es conveniente calcular los días que hay entre el 03 de marzo del 2024 y el 20 de noviembre del 2024. Llamaremos a este número Dias. Observe que Dias puede ser positivo si el mes actual es mayor al mes de cumpleaños o negativo si el mes actual es menor. También puede ser positivo, si mes actual es igual a mes de cumpleaños, pero día actual es mayor que día de cumpleaños. Y negativo en caso contrario.
Los días totales serían DT= 365*(cccc-aaaa) + Ab -NO +Dias. El día de la semana del cumpleaños será el día actual menos el resto de DT/7 (Mi_Dia=da-rem(DT,7). Sí es positivo, es justo Mi_Dia. Si es negativo o cero, Mi_Dia =7+Mi_Dia.
Nota 1: Esta es sólo una manera de enfocar el problema. Otra manera podría ser ir año por año contando los días que correspondan en cada uno.
Nota 2: También pueden usar los comandos datenum() y date() que lo haría mucho más sencillo.
Primer trabajo:
El trabajo para la casa, que deben traer resuelto para la clase del lunes 28 de septiembre es el siguiente: Han de escribir los códigos que resuelvan los dos problemas del primer parcial, indicando:
a. Para el primer problema deben calcular le nota media ponderada por los créditos de cada curso. Además, deben, para cada estudiantes y en función de la nota, indicar si el estudiante está suspenso, aprobado, notable y sobresaliente. Además, para cada estudiante deben señalar las asignaturas que no ha aprobado en un vector de asignaturas pendientes.
b. Para el segundo problema, deben conseguir alguno de los ceros (tiene varios), con una precisión del 0,01% (0.0001 absoluto).
Nota: se evaluará muy positivamente que los códigos escritos sean lo más concisos posible (menos líneas de código es mejor)
El primer parcial.
El tercer parcial (16.6%)
El segundo parcial (16.6%).
Segundo trabajo (16,6%): Lo puedes descargar en https://docs.google.com/document/d/1EHdoudAlsz4SD4Q4AgDsEgaMIoehUjinW433LZqGC1k/edit?usp=sharing. Fecha de entrega el 30/04 a las 4 pm en persona.
Primer trabajo (16,6%) para entregar el martes 19 de marzo: Un médico cuenta con la tabla de peso y tamaño de niños entre 3 meses y 8 años que se muestra más abajo. Se desea que realice un programa (script) que cuando se ejecute, pida al médico que ingrese el sexo, la edad, el peso y la estatura del niño o niña, y dependiendo de eso le diga:
Si el peso es 50% menos que el promedio, el niño tiene desnutrición severa, si es menos del 20% el niño está desnutrido y si es 30% más que el promedio, el niño está obeso.
Si la estatura es menor del 20% el niño está demasiado bajo.
Los programas son individuales y deben ser traídos el martes 19/03 a clase en una llave. Las personas deben traer su llave personalmente aunque pueden llegar a clase hasta 30 minutos antes de que termine, es decir, la última hora para entrar a clase con su programa es las 4:10 pm.
Aquellos que no vengan a clases o no traigan el programa, aunque vengan a clases, tendrán cero en esta actividad.
Primer Parcial. (13 de marzo - 16,6%)