Este documento presenta un curso de introducción a Octave/Matlab para ingenieros químicos. El curso cubre operaciones y comandos básicos, programación de problemas simples, y herramientas para resolver problemas de reactores químicos como ecuaciones diferenciales y modelos epidemiológicos y de Lotka-Volterra. El objetivo es promover el uso de estas herramientas de software libre en la industria e ingeniería química.
Iniciación al modelado de reactores químicos com MATLAB - Octave (intro)
1. Curso de Introducción a Octave/Matlab para
Ingenieros Químicos
Computer-aided Chemical Engineering
www.cacheme.org
Introducción
2. cacheme.org CAChemE
• Asociación formada por ingenieros químicos
(profesionales, docentes y estudiantes) que pretende
estimular las posibilidades de software en la
ingeniería de procesos
• Promueve las ventajas de las nuevas herramientas de
software libre disponibles y fomenta su uso en la
universidad e industria
• Especialización en simulación y programación
matemática (optimización)
2
5. cacheme.org ¿Por qué Octave UPM?
• Octave UPM es una adaptación de GNU Octave que se emplea para la
docencia de Informática en la Escuela de Ingenieros de Caminos, Canales y
Puertos de la UPM y ha sido desarrollado por Israel Herraiz (@herraiz).
• Es altamente compatible con MATLAB
• Es software libre y gratuito, disponible para Windows y Linux.
5
Interfaz de Octave UPM (v.8)
http://mat.caminos.upm.es/octave/
Nota: Octave fue creado originalmente para resolver problemas de reactores ingeniería
química, su nombre viene en honor al profesor Octave Levenspiel (como el libro).
6. cacheme.org “Requisitos” para este curso
• Conocimientos básicos de programación y reactores químicos.
• Octave-MATLAB, guía de referencia rápida y principios de programación.
• http://academic.macewan.ca/davisj80/files/2012/08/octave_qr.pdf
• https://mat.caminos.upm.es/wiki/Curso_de_Introducci%C3%B3n_a_la_Programaci%C3%B3n
• http://iimyo.forja.rediris.es/
• Tiempo para practicar
6
¡Ejemplos de este curso han sido
tomados de aquí! Es material de
formación libre y gratuito.
“Ningún lenguaje se aprende por osmosis”
Guillem Borrell
7. cacheme.org
Buenas prácticas de programación
(reaprendiendo MATLAB-Octave)
Dos PDFs que todo el mundo que trabaja con MATLAB-Octave
debería conocer.
•
•
7
8. Algunas buenas prácticas de programación cacheme.org
8
• % Añade comentarios (documentación)
• Indenta (tabula) el código para diferenciar los bucles y
condicionales.
• Evita poner números sin haberlos definido antes (magic
numbers)…
• … y dales nombres más descriptivos a tus parámetros
(‘Diametro’ mejor que ‘D’)
• Evita los bucles anidados (nested loops)…
• … intentando vectorizar operaciones cuando sea posible.
• Preasigna las matrices en memoria (matrix preallocation)
• Si existen, utiliza las funciones ya implementadas en
lugar de escribirlas por ti mismo.
9. Sesión 1: Introducción a lenguaje
Matlab - Octave
Computer-aided Chemical Engineering
www.cacheme.org
Introducción
10. cacheme.org Objetivos de la sesión
1. Operaciones y comandos básicos con Matlab – Octave
2. Primeros programas
• Área de una circunferencia
• Sumatorio
• Factorial
• Números primos
• Año bisiesto
3. Herramientas para resolver problemas de Reactores Químicos
• Resolución de sistemas de ecuaciones diferenciales (ODE45)
• Ecuaciones diferenciales de 1er orden
• Ecuaciones diferenciales de 2do orden
• Modelo Epidemiológico
• Modelo de Lokta-Volterra – Condiciones iniciales de Cauchy
• Problema
10
11. 11
cacheme.org
2. Operaciones y comandos básicos Matlab -Octave
Calculadora / Matrices / Representación 2D / Otros
12. 2. Primeros programas cacheme.org
Área de un círculo
• Conocido ‘r’ obtener un programa que devuelva ‘A’.
• Definir el problema Cálculo de A
• Identificar entradas r
• Identificar salidas A
• Algoritmo transformación entradas en salidas A = π.r2
12
13. 13
cacheme.org
2. Primeros programas
Sumatorio / Factorial / Sumatorio & Factorial
• Programa que devuelva el sumatorio de
un número.
Ej: 6 0+1+2+3+4+5+6 =21
• Programa que devuelva el factorial de
un número.
Ej: 6 6! = 1*2*3*4*5*6 = 720
• Programa que devuelva el sumatorio y
factorial de un número.
14. 14
cacheme.org
2. Primeros programas
Número primo / Año bisiesto
• Programa que devuelva si un número
es primo o no es primo.
Recordatorio… ¿Número primo?
Únicamente divisible por 1 y por él
mismo
• Programa que devuelva si un año es
bisiesto o no es bisiesto.
Recordatorio… ¿Año bisiesto?
Es bisiesto si es:
• Divisible por 4
• Salvo si es divisible por 100
• Excepto si divisible por 400
15. cacheme.org
• Ecuación que involucra derivadas de la función desconocida
• ¿Por qué numéricamente? Sólo las ecuaciones diferenciales más sencillas
admiten soluciones dadas por fórmulas explícitas (analíticas)
15
3. Herramientas para resolver problemas de RQ
Ecuación diferencial de primer orden
푑푦 푡
푑푡
= −5푦(푡)
pkg load odepkg % Pon esto en la consola para cargar la librería en Octave UPM
16. cacheme.org
3. Herramientas para resolver problemas de RQ
Ecuación diferencial de segundo orden
• Ej: E.D. 2o orden
16
푑2휃
푑푡2 = −휔2sin(휃)
푑푦1
푑푡
= 푦2
푑푦2
푑푡
= −휔2sin(푦1)
17. cacheme.org
(cc) Guillem Borrell
3. Herramientas para resolver problemas de RQ
Resolución numérica de sistemas de ecuaciones diferenciales
• lsode: Interfaz de Octave a odepack
• ode45: Es un Runge-Kutta de paso variable y 4º
orden. La primera opción
• ode113: Esquema Adams multipaso
• ode23s: Esquema para problemas stiff (rígidos)
17
• Se dice que un problema es rígido (stiff) cuando el paso temporal de integración
viene determinado por la estabilidad del esquema, no por la precisión
• Suelen relacionarse con funciones que introducen fuertes gradientes o
condiciones de contorno restrictivas
• Suelen asociarse a problemas no lineales y requieren esquemas de integración
temporal implícitos
pkg load odepkg para cargar la librería en Octave UPM
18. 18
cacheme.org
3. Herramientas para resolver problemas de RQ
Modelo Epidemiológico
(cc) MateWiki (UPM)
19. 19
cacheme.org
3. Herramientas para resolver problemas de RQ
Modelo Epidemiológico
(cc) MateWiki (UPM)
20. cacheme.org
• El crecimiento de la población R(t) (Rabbits, en adelante simplemente R) de presas en ausencia de
predadores es proporcional a la población R. Siendo a la diferencia entre las tasas de natalidad y
mortalidad de la presa:
• El crecimiento de la población R se ve afectado por la acción de los depredadores. Esta acción es
proporcional a la cantidad de interacciones FR entre la población R de presas y la
población F(t) (Foxes, en adelante simplemente F) de predadores. El factor de
proporcionalidad c indica el grado de efectividad del proceso.
• Este mismo factor afecta de forma positiva al crecimiento de la población F de predadores, que se ven
beneficiados por la caza. El factor de proporcionalidad d indica el grado en que afecta el éxito en la
caza al crecimiento de la población de predadores.
• Por último, la competitividad asociada al crecimiento excesivo de la población de predadores F resulta
perjudicial para el crecimiento de esta población. El grado en que esto afecta al crecimiento de la
población se representa a través del parámetro c.
20
(cc) MateWiki (UPM)
3. Herramientas para resolver problemas de RQ
Modelo de Lokta-Volterra – Condiciones iniciales de Cauchy
21. cacheme.org
3. Herramientas para resolver problemas de RQ
Modelo de Lokta-Volterra – Condiciones iniciales de Cauchy
• La expresión final del modelo se puede expresar a través del problema de
condiciones iniciales o de Cauchy:
21
• Resolver para población inicial de Presas 푅0 = 3000 y de Predadores 퐹0 = 1000.
• En un intervalo y para los valores 푎 = 0.4, 푏 = 0.37, 푐 = 0.3, 푑 = 0.05.
• Intervalo de tiempo de 0 a 100 con 1000 iteraciones.
http://jsxgraph.uni-bayreuth.de/wiki/index.php/Lotka-Volterra_equations (cc) MateWiki (UPM)
22. 22
cacheme.org
3. Herramientas para resolver problemas de RQ
Modelo de Lokta-Volterra – Condiciones iniciales de Cauchy
23. 23
cacheme.org
3. Herramientas para resolver problemas de RQ
Problema
24. 24
cacheme.org
3. Herramientas para resolver problemas de RQ
Problema
25. Curso de Introducción a Octave/Matlab para
Ingenieros Químicos
Computer-aided Chemical Engineering
www.cacheme.org
Introducción