MATEMÁTICA TICA SUPERIOR APLICADA. para Ecuaciones Diferenciales Ordinarias. Universidad Tecnológica Nacional Facultad Regional Rosario



Documentos relacionados
Trabajo Práctico Introductorio Matlab, Simulink y Métodos de Integración Numérica

2. SISTEMAS LINEALES DE PRIMER ORDEN (I)

Métodos Iterativos para Resolver Sistemas Lineales

5.24. ESTUDIO DE LOS MOVIMIENTOS OSCILATORIOS

SOLUCION DE MODELOS DE PROGRAMACION LINEAL EN UNA HOJA DE CALCULO. PROBLEMAS DE TRANSPORTE Y ASIGNACION.

Simulación de Sistemas Continuos y a Tramos. Prof. Dr. François E. Cellier Institut für Computational Science ETH Zürich.

Lecture 4: Simulación

1) Como declarar una matriz o un vector.

Movimiento a través de una. José San Martín

Tema 4: Empezando a trabajar con ficheros.m

BREVE MANUAL DE SOLVER

Aritmética finita y análisis de error

1. SOLUCIONES A LOS EJERCICIOS PROPUESTOS

EJERCICIOS DE MATEMÁTICAS I HOJA 4. Ejercicio 1. Se consideran los vectores

Cálculo científico y técnico con HP49g/49g+/48gII/50g Módulo 3: Aplicaciones Tema 3.7 Polinomio interpolador

>> % suma de dos números reales, el resultado se asigna a ans

Sistemas de ecuaciones lineales. Métodos iterativos

Análisis de medidas conjuntas (conjoint analysis)

Cálculo científico y técnico con HP49g/49g+/48gII/50g Módulo 3: Aplicaciones Tema 3.6 Extremos relativos de funciones de 2 variables

Herramientas de análisis numérico para la resolución de problemas de programación lineal

Práctica 1ª: Introducción a Matlab. 1er curso de Ingeniería Industrial: Ingeniería de Control

TEMA 2: Representación de la Información en las computadoras

Álgebra Lineal Ma1010

SEDO: SOFTWARE EDUCATIVO DE MATEMÁTICA NUMÉRICA. Lic. Maikel León Espinosa.

Introducción a la Programación en MATLAB

Unidad 6 Cálculo de máximos y mínimos

Matrices equivalentes. El método de Gauss

Creación de Funciones de Conducción

CAPÍTULO 6 SIMULACIONES Y RESULTADOS

Cálculo Simbólico también es posible con GeoGebra

Mantenimiento Limpieza

1. Visualización de datos con Octave

Tratamiento del Riesgo

Proyecto de Innovación Docente: Guía multimedia para la elaboración de un modelo econométrico.

Cambio de representaciones para variedades lineales.

x y 8000 x + y a) La región factible asociada a las restricciones anteriores es la siguiente: Pedro Castro Ortega lasmatematicas.

E 1 E 2 E 2 E 3 E 4 E 5 2E 4

Práctica de Aplicaciones Lineales

Parámetros con la ventana de selección de usuario, reglas, texto y descomposición (IVE)

Máster Universitario en Ingeniería de Caminos, Canales y Puertos Introducción al Análisis Numérico

Práctica N 2 Simulink como herramienta para resolver ecuaciones diferenciales

Unidad I. 1.1 Sistemas numéricos (Binario, Octal, Decimal, Hexadecimal)

Tema 7: Programación con Matlab

BASES Y DIMENSIÓN. Propiedades de las bases. Ejemplos de bases.

Ejercicios. 1. Definir en Maxima las siguientes funciones y evaluarlas en los puntos que se indican:

4 APLICACIONES LINEALES. DIAGONALIZACIÓN

Centro de Capacitación en Informática

Práctica 11 SVM. Máquinas de Vectores Soporte

1.4.- D E S I G U A L D A D E S

Profr. Efraín Soto Apolinar. La función lineal. y = a 0 + a 1 x. y = m x + b

H E R R A M I E N T A S D E A N Á L I S I S D E D A T O S HERRAMIENTAS DE ANÁLISIS DE DATOS

Tema 3: Aplicaciones de la diagonalización

PROBLEMA [1.5 puntos] Obtener la ecuación de la recta tangente en el punto ( 2, 1) a la curva dada implícitamente por y 3 +3y 2 = x 4 3x 2.

CAPITULO 4 JUSTIFICACION DEL ESTUDIO. En este capítulo se presenta la justificación del estudio, supuestos y limitaciones de

Preliminares. Tipos de variables y Expresiones

Optimizar recursos y asegurar cumplimiento metrológico Buenos Aires 7 de Agosto 2015 EXPOFYBI

Informática Bioingeniería

by Tim Tran:

Métodos Numéricos - Cap. 7. Ecuaciones Diferenciales Ordinarias PVI 1/8

Prácticas de programación en C con MinGW Developer Studio

Manual de Introducción a SIMULINK

Matlab para Análisis Dinámico de Sistemas

Árboles AVL. Laboratorio de Programación II

Diagonalización de matrices

Taller de Informática I Dpto. Computación F.C.E. y N. - UBA 2010

Comenzando con MATLAB

Ecuaciones de primer grado con dos incógnitas

Subespacios vectoriales en R n

Regulador PID con convertidores de frecuencia DF5, DV5, DF6, DV6. Página 1 de 10 A Regulador PID

Métodos Numéricos: Guía de estudio Tema 6 Métodos iterativos para sistemas de ecuaciones lineales

3. Qué warrant elegir?

Hacer clic sobre la figura, para extraer todos los registros o presionar la tecla F2.

Autor: Microsoft Licencia: Cita Fuente: Ayuda de Windows

Pronósticos. Pronósticos y gráficos Diapositiva 1

INSTITUTO POLITÉCNICO NACIONAL ESCUELA SUPERIOR DE INGENIERÍA MECÁNICA Y ELÉCTRICA UNIDAD CULHUACÁN INTEGRANTES

15 CORREO WEB CORREO WEB

Matemáticas I: Hoja 3 Espacios vectoriales y subespacios vectoriales

Tema 3 Resolución de Sistemas de Ecuaciones Lineales

un programa concurrente

MATLAB en 30 minutos

Métodos Numéricos: Resumen y ejemplos Tema 4: Resolución aproximada de EDO s

Proyecto Help Desk en plataforma SOA Alcance del Sistema Versión 1.2. Historia de revisiones

Aplicación informática de Optimización de Facturas Eléctricas (O.F.E)

Introducción al Cálculo Simbólico a través de Maple

Tema 2 : NÚMEROS ENTEROS. Primero de Educación Secundaria Obligatoria. I.e.s Fuentesaúco.

5. RESULTADOS. 5.1 Resultados obtenidos de Visual Basic.

Introducción a los sistemas de control

MANUAL TARIFICADOR. Clic aquí Descargar Tarificador

1 Espacios y subespacios vectoriales.

FORMULARIO PARA LA PRESENTACIÓN DE LOS PROGRAMAS DE ASIGNATURAS UNIVERSIDAD NACIONAL DE RÍO CUARTO

DIRECTRICES Y ORIENTACIONES GENERALES PARA LAS PRUEBAS DE ACCESO A LA UNIVERSIDAD

Señal de Referencia: Es el valor que se desea que alcance la señal de salida. SET POINT.

Matrices Invertibles y Elementos de Álgebra Matricial

7. Conclusiones. 7.1 Resultados

Cifras significativas e incertidumbre en las mediciones

PRUEBA ESPECÍFICA PRUEBA 2015

App para realizar consultas al Sistema de Información Estadística de Castilla y León

Programación de Sistemas

UNIVERSIDAD DE SALAMANCA

Análisis de los datos

Transcripción:

MATEMÁTICA TICA SUPERIOR APLICADA Utilización n de Resolvedores de MATLAB para Ecuaciones Diferenciales Ordinarias Universidad Tecnológica Nacional Facultad Regional Rosario Dr. Alejandro S. M. Santa Cruz

Solvers de MATLAB (I) Los solvers para EDOs de MATLAB se han escrito para resolver problemas de la forma: dx1 x' 1 t f1 t, x 1, x 2,..., xn dt dx2 x' 2 t f2 t, x 1, x 2,..., xn dt dxn x' t f t, x, x,..., x dt o, en forma compacta: n n 1 2 n dx dt f t, x, x,...,x f t,x 1 2 n 2

Solvers de MATLAB (II) Se accede a los solvers de MATLAB mediante el llamado de funciones (functions( functions) ) del tipo: Opcional [T,X] = ode**(@f, timespan, X0, options, P1, P2, P3) f Nombre de odefile archivo que describe la ecuación diferencial a resolver. Vector que especifica el intervalo de integración [t0 tfinal]. tspan Para obtener soluciones en tiempos específicos se usa: tspan = [t0,t1,..., tfinal]. X0 Vector que describe las condiciones iniciales options Argumento opcional de integración creado usando la función odeset. T,X Matriz solución X, donde cada columna corresponde al tiempo retornado en el vector columna T. P1, P2, P3, Parámetros adicionales que serán pasados a @f 3

Sintaxis: Solvers de MATLAB (III) options = odeset( name1 name1,value1,,value1, name2,value2,...): Crea una estructura en la opciones de integración n donde name1, name2 representan los nombres de las propiedades seguidos de los valores a especificar. La propiedades no especificadas se establecen con la matriz vacía [ ].] odeset: Escribiendo esta sentencia en la línea l de comandos de MATLAB, se muestran en pantalla todas las propiedades y sus posibles valores. Las propiedades disponibles dependen del método m de resolución. Algunas propiedades importantes se detallan a continuación: n: 4

Solvers de MATLAB (IV) Propiedad Valor RelTol AbsTol Refine MaxStep InitialStep Descripción Establece la tolerancia de error relativo que Escalar positivo (1e-3) se aplica a todos las componentes del vector solución. Escalar positivo (1e-6) Tolerancia de error absoluto. Incrementa el número de puntos de salida por un factor de n. El valor por defecto es 1 Entero positivo salvo cuando se utiliza ode45 donde Refine es 4. Establece el límite superior en la magnitud Escalar positivo del tamaño de paso utilizado. Establece el tamaño de paso inicial. Si es demasiado grande y afecta el error cometido, el programa usa un tamaño de paso más Escalar positivo pequeño. 5

Solvers de MATLAB (V) La function f debe tener la siguiente forma: function [dx_dt] = f(t, x, P1, P2, P3...) dx_dt =... return CUIDADO! ESTA ES UNA SINTAXIS LIGERAMENTE DIFERENTE A AQUELLA UTILIZADA EN LOS SOLVERS QUE IMPLEMENTAN EL MÉTODO M DE EULER COMO VIMOS EN LAS PRESENTACIONES PREVIAS. 6

Sentencia Tipo de método Tipo de problema ode45 Explícito No stiff ode23 Explícito No stiff ode113 Explícito No stiff ode15s Implícito Stiff ode23s Implícito Stiff ode23tb Implícito Stiff Orden de exactitud 4to. Orden; exactitud media 2do./3er. Orden; exactitud baja 13er. Orden; Baja a alta De 1er. a 5to. Orden; exactitud baja a media Baja exactitud, pero puede ser más estable que ode15s Baja exactitud, pero puede ser más estable que ode15s Cuando se usa En general, ode45 es el mejor método para aplicar como primer intento para la resolución de muchos problemas. Ante bajas tolerancias de error o resolución de problemas moderadamente stiff. Ante tolerancias estrictas de error y en la resolución de un archivo odefile computacionalmente intenso. Si ode45 es lento (sistema stiff). 7

Algoritmos Utilizados (I) Varían an de acuerdo al orden de exactitud y al tipo de sistema (stiff o no stiff). ode45: Se basa en una fórmula f explícita del método m de Runge-Kutta (4,5), realizado por Dormand-Prince. Es un método m de un solo paso, esto es, para determinar x(t i+1 ),, es necesario conocer solamente la solución n en el tiempo inmediatamente anterior, x(t i ). ode23: Es una implementación n del método m explícito de Runke-Kutta (2,3) realizado por Bogacki y Shampine.. Puede ser más m s eficiente que ode45 para tolerancias de error bajas y en presencia de problemas stiff moderados. ode113: Método de orden variable indicado por Adams-Bashforth Bashforth- Moulton. Es un método m de multipaso; ; normalmente necesita la solución n de diversos puntos precedentes para computar la solución actual. 8

Algoritmos Utilizados (II) Los algoritmos anteriores se destinan para resolver sistemas no stiff.. Si ellos aparecen excesivamente lentos, se utilizan otros métodos como ser: ode15s: Es un método m de orden variable basado en la fórmula f de diferenciación n numérica NDFs.. Opcionalmente, usa la fórmula f de diferencias hacia atrás, BDFs (backward differentiation formula), también n conocida como método m de Gear. ode23s: Se basa en una fórmula f modificada de Rosenbrock de orden 2. Dado que es un solver de paso simple puede ser más m s eficiente que la ode15s para tolerancias más m s altas. Puede resolver algunos tipos de problemas stiff para los cuales la ode15s no es efectiva. ode23t: Implementa la regla del trapecio utilizando una interpolación libre. Utilizar este solver si el problema es solo moderadamente stiff y se requiere una solución n sin amortiguamiento numérico. 9

Algoritmos Utilizados (III) ode23tb: Es una implementación n de la fórmula f TR-BDF2, fórmula implícita de Runge-Kutta con una primera etapa que es una regla trapezoidal y una segunda etapa que es una fórmula f de diferenciación n hacia atrás s de orden 2. Por construcción, n, se utiliza la misma matriz de iteración n en la evaluación n de ambas etapas. Como en la ode23s, este solver puede ser más m s eficiente que la ode15s para tolerancias más m altas. 10

Consideraciones sobre los Algoritmos Utilizados (I) Para un problema stiff las soluciones pueden cambiar sobre una escala de tiempo que es muy corta comparada con el intervalo de integración, n, pero la solución n de interés cambia sobre escalas de tiempo mucho más m s largas. Los métodos m no diseñados para problemas stiff son ineficientes sobre intervalos donde la solución n cambia lentamente debido a que usan pasos temporales suficientemente pequeños como para resolver el cambio más s rápido r posible. Las ode15s y ode23s generan numéricamente las matrices Jacobianas. 11

Consideraciones sobre los Algoritmos Utilizados (II) En mayor medida utilizaremos las ode45 y ode15s (la 's' significa que utiliza un método m implícito). Por lo general, los solvers de MATLAB serán n mejores de los que podría a programar Ud. mismo. Son capaces de estimar el error en la solución n en cada etapa temporal y decidir si el paso es demasiado grande (error alto) o demasiado pequeño o (ineficiente). Es más m s importante que Ud. entienda conceptos tales como esquemas implícitos, esquemas explícitos y orden de exactitud del algoritmo en lugar de saber exactamente que hace internamente la rutina de cálculo. c 12

Consideraciones sobre los Algoritmos Utilizados (III) ode45 (método explícito de Runge-Kutta Kutta) ) es eficiente, pero se vuelve inestable con sistemas stiff.. Este hecho se manifestará con el solver tratando de adoptar pasos temporales cada vez más m s cortos para compensar. Consecuentemente, al algoritmo le tomará mucho tiempo alcanzar la solución n o el paso temporal se reducirá al punto donde la precisión n de la máquina m provoque la falla del algoritmo. ode15s debería a utilizarse sólo s para problemas stiff.. Debido a que es un esquema implícito, tendrá que resolver conjuntos de ecuaciones (posiblemente grande) en cada paso temporal. 13

Utilización n de Solvers de MATLAB Ejemplo 01 Utilizar la ode45 para resolver el siguiente sistema acoplado de EDOs : d x1 1 1 x1 dt x 1 2 x 2 2 Condiciones iniciales x1 1 x 2 1 14

Ejemplo 01 Archivo de Comandos de MATLAB: Ejemplo_01_ode45.m: Archivo de comandos que llama al solver ode45.m. Función: n: TestFunction.m: Función n que implementa en forma matricial las derivadas del sistema de EDOs. 15

Archivo de Comandos clear all clc % Example 01 % A simple example to solve ODE's % Uses ode45 to solve % dx_dt(1) = -1*x(1)-1*x(2) % dx_dt(2) = 1*x(1) -2*x(2) % set an error options=odeset('reltol',1e-6); % initial conditions Xo = [1;1]; %timespan tspan = [0,5]; %call the solver [t,x] = ode45(@testfunction,tspan,xo,options); %plot the results figure hold on plot(t,x(:,1));plot(t,x(:,2),'r:') legend('x1','x2'); ylabel('x'); xlabel('t') 23/11/2009 16

Función function [dx_dt]= TestFunction(t,x) %A function which returns a rate of change vector M = [-1-1; 1-2]; dx_dt = M*x; return 23/11/2009 17

Gráfica de la Solución Solución del sistema de EDOs generada por ode45. 18

Consideraciones Acerca del Uso del Solver ode45 No hemos especificado un tamaño o de paso. ode45 utiliza el método m de Runge-Kutta Kutta-Fehlberg de 4to.orden (explícito), que además s nos provee una estimación n del error de truncamiento en cada paso. EL SOLVER ES CAPAZ DE ELEGIR EL TAMAÑO O DE PASO QUE REQUIERE LA TOLERANCIA DEL ERROR QUE HEMOS ESPECIFICADO. Todos los solvers de Matlab modificarán n el tamaño o del paso para generar una solución n que sea exacta para una determinada tolerancia del error. Ud. puede pasar por alto este aspecto fijando un tamaño o de paso máximo m (que puede forzar al solver a adoptar un paso demasiado pequeño). Es mejor dejar que el solver elija el tamaño o del paso y utilizar la opción refine. Refine suaviza la solución n interpolando entre puntos. Las opciones se establecen creando una estructura de opciones con n el comando odeset. 19

Utilización n de Solvers de MATLAB Ejemplo 02 Resolver el siguiente sistema acoplado de EDOs : d x1 1 1 x1 dt x 1 5000 x 2 2 Los autovalores de la matriz son: Condiciones iniciales x1 1 x 2 1 λ λ 1 2 5000 1.002 Problema Stiff!! 20

Utilización n de Solvers de MATLAB Ejemplo 02 Un problema stiff consiste de diferentes procesos de los cuales al menos uno de ellos tendrá una constante de tiempo muy pequeña. En primer lugar utilizamos la ode45 para resolver el sistema acoplado de EDOs. El código c para resolver este sistema se muestra a continuación. n. 21

clear all clc %Example 02: Stiff Problem % A simple example to solve ODE's % Uses ODE45 to solve % dx_dt(1) = -1*x(1)-1*x(2) % dx_dt(2) = 1*x(1) -5000*x(2) %set an error options=odeset('reltol',1e-6,'stats','on'); %initial conditions Xo = [1;1]; %timespan tspan = [0,5]; %call the solver tic [t,x] = ode45(@testfunction,tspan,xo,options); toc %plot the results figure;hold on plot(t,x(:,1));plot(t,x(:,2),':') legend('x1','x2'); ylabel('x');xlabel('t') 23/11/2009 22

Utilización n de Solvers de MATLAB Ejemplo 02 Los stats informados por la solución n son: 7557 successful steps 504 failed attempts 48367 function evaluations Elapsed time is 3.797000 seconds. El solver ha sido forzado a adoptar un paso temporal muy pequeño o para generar una solución estable. 23

Gráfica de la Solución 24

Utilización n de Solvers de MATLAB Ejemplo 02 La opción 'stats' ha sido activada. El solver mostrará por pantalla información n acerca de cómo ha realizado el cálculo. c La ejecución n del código c demanda un tiempo relativamente largo. Los comandos tic y toc que preceden y suceden respectivamente al llamado de la ode45,, estiman y muestran el tiempo que le demandó al solver alcanzar el resultado final. 25

Utilización n de Solvers de MATLAB Ejemplo 02 Si en lugar utilizamos la ode15s,, debemos cambiar la línea donde se llama al solver de la edo, así: [t,x]] = ode15s(@testfunction,tspan,xo,options @TestFunction,tspan,Xo,options) En este caso Los stats informados por la solución son: 139 successful steps 3 failed attempts 288 function evaluations 1 partial derivatives 27 LU decompositions 284 solutions of linear systems Elapsed time is 0.625000 seconds. 26

Utilización n de Solvers de MATLAB Ejemplo 02 El solver puede adoptar pasos temporales mucho más s grandes (139 comparado con los 7557 para la ode45), lo cual reduce el tiempo computacional total. ode15s es implícita, por lo tanto resuelve un sistema no lineal de ecuaciones en cada paso temporal. 27

Mejoras al Código C (I) En cada etapa de tiempo la ode15s resuelve un conjunto de ecuaciones no lineales, para las cuales requerirá del Jacobiano de f(t,x). Dado que la rutina no suministra información sobre el Jacobiano,, está forzada a calcular el Jacobiano completo en forma numérica. 28

Mejoras al Código C (II) Por consiguiente, se nos plantean dos opciones: 1) Suministrar una function que nos devuelva el Jacobiano, o si el Jacobiano es una constante, entonces podemos suministrar la matriz. 2) Suministrar un Jacobiano patrón. En este caso, la rutina es capaz de evitar el costoso llamado a la velocidad de cambio de la función.. Un Jacobiano patrón es una matriz rala de ceros y unos.. Los unos sólo aparecen donde el Jacobiano es no nulo. 29

Opción n 1: Mejoras al Código C (III) Para hacer esto fijamos la opción 'Jacobian' en la estructura odeset para la matrix o nombre de la function.. Generalmente ésta es la opción n computacionalmente más m s eficiente. MATLAB también n permite a la rutina devolver un Jacobiano ralo (sparse). En este ejemplo el Jacobiano es una constante, utilizándose las siguientes líneas l para suministrar al solver: J=[-1, -1; 1, -5000]; options = odeset(' ('RelTol',1e-6,' 6,'Stats',' ','on','jac',j); El código c ahora corre más m s rápido r dado que el Jacobiano no necesita más m s ser evaluado (aún n cuando la ganancia sea muy pequeña a cuando el Jacobiano es constante, lo cual es detectado por el solver, por lo que el Jacobiano no será actualizado después s de la primera evaluación) 30