Post on 07-Jan-2016
description
M A E S T R A E N I N G E N I E R A D E C O N T R O L
Y A U T O M A T I Z A C I N
Programacin en Matlab:Resolucin de Ecuaciones
Objetivos
Uso de variables simblicas para la realizacin de clculos con ecuaciones algebraicas.
Implementacin de operaciones del clculo.
Resolucin de ecuaciones diferenciales.
Uso de solvers para implementar y resolver ecuaciones de sistemas.
Variables simblicas
Las variables simblicas se definen con el fin de realizar operaciones algebraicas complejas sin necesidad de realizar clculos numricos.
Permiten deducir expresiones generales en funcin de parmetros suministrados.
Matlab implementa las operaciones con variables simblicas a travs de su herramienta SymbolicToolbox.
Symbolic Toolbox
Este paquete permite manipular smbolos de manera abstracta para realizar operaciones algebraicas, matriciales y de clculo.
En esta parte se va a hacer una introduccin a este paquete haciendo mencin a algunas de las funciones y aplicaciones que se le puede dar.
Definicin de Variables Simblicas
Las variables se definen mediante el comando syms:
>> syms s t x y
>> v = sym(v)
Se pueden definir ms variables simblicas a partir de estas.
>> fy = s*t + x*y
Definiendo matrices de variables simblicas
>> A = sym(A,[3 3])
>> B = sym('x_%d_%d', [4 4])
Reemplazando valores numricos
Una vez realizada la operacin requerida puede ser de mucha utilidad el reemplazar valores numricos en las expresiones.
Matlab provee de una funcin para realizar este reemplazo:
Ejemplo:>> subs(fy,t,10);
Adicionales Y que pasa si la expresin resultante es an muy
compleja?, (investigar simple) Como reemplaza el valor matlab el valor por defecto?.
(investigar symvar)
Ejercicio 1:
Un lente ptico puede ser modelado por la siguiente expresin:
Implemente un programa que deduzca la expresin algebraica para un nmero n de lentes. El programa debe encargarse de la creacin de cada una de las variables simblicas del sistema.
Adems pruebe lo siguiente: Si para todos los lentes = 0, entonces el ngulo del rayo no se modificar.
Resolucin de ecuaciones
Sistema de ecuaciones simultneas:
Los sistemas de ecuaciones simultneas se pueden resumir en un sistema de la siguiente forma:
A.x = b
La resolucin en este caso se realiza mediante la siguiente operacin:
x = inv(A).b
En Matlab:
>> x = inv(A)*b
>> x = A\b
Ejemplo:
Resolver el sistema de ecuaciones:
x1 3 x2 + 4 x3 = -2
2x1 + 8 x2 - x3 = 2
-x1 x2 + 7 x3 = 9
>> A = [1 -3 4; 2 8 -1; -1 -1 7];
>> b = [-2 2 9];
>> x = A\b
Determinacin de Existencia y Unimicidad
Para la determinacin de la existencia de soluciones en un sistema de ecuaciones se debe determinar la independencia lineal entre los sistemas de ecuaciones.
Esta independencia se determina mediante el rango
En matlab:
>> rank(A)
Si el rango es igual al nmero de ecuaciones se tiene un sistema linealmente independiente y la solucin ser nica.
Ecuaciones con un Nmero Infinito de Soluciones
Cuando el rango no es igual al orden del sistema entonces existen muchas soluciones.
En estos casos se usa la pseudoinversa:
En Matlab:
>> x = pinv(A)*b
Ejemplo: Resolver
Diferenciacin
La diferenciacin se define como la pendiente en un punto de la funcin:
Chapman 2013
Diferenciacin
En Matlab se puede usar la funcin diff() para calcular la derivada de una funcin o un vector:
Usando variables simblicas para derivar funciones:>> syms x y;>> dx = diff(x)>> d2x = diff(x,2)>> dy = diff(y)
Usando diff en vectores para aproximar los diferenciales:>> dt = 0.1; tt = 0:dt:2*pi;>> x1= sin(tt);>> dx1 = diff(x1)/dt;>> plot(tt,x1,-b,tt(1:length(tt)-1),dx1,--r);
Integracin
La integracin consiste en la suma de todas las partes infinitesimales de un intervalo dado:
Chapman 2013
Integracin
En matlab la operacin de integracin se puede realizar mediante los comando int() e integral().
Ejemplos Usando variables simblicas (Integrales indefinidas)
>> syms x2 x3 t>> x2 = 3*t^2 + 3*x3;>> y2 = int (x2)>> y2 = int(x2,t)
Integrales definidas>> y3 = int(x3,t,1,10)>> t = 0:0.1:10;>> x3 = @(t)t.^2 + 10 1./t>> y3 = integral(x3,1,10)
Adicional: Investigue quad() y quadl()
Integrales Dobles y Triples
Las integraciones dobles y triples se pueden realizar con los comandos integral2() e integral3() respectivamente:
Ejemplo:
>> syms x y t
>> fxy = @(x,y) x.^2 + y.^2 - x.*y
>> IIfxy = integral(fxy,-2,2,-2,2)
Lmites
Con matemtica simblica se puede evaluar lmites de funciones.
Ejemplo:
syms a b
val = limit ((2*a+b)/(3*a-4), a, inf)
Ejercicio:
Calcular:
Transformada de Laplace
Para obtener una transformada se emplea la funcin laplace:
Ejemplo:
Calcular:
>> syms t
>> n = 2;
>> F = laplace (t^n)
ntL
Tranformada Inversa de Laplace
Este paquete permite calcular con facilidad transformadas inversas de Laplace.
Si F(s) = (3s+7) / (s2-2s-3)
Encontrar la transformada inversa f(t) =
syms s
Fs = (3*s+7)/(s^2-2*s-3)
ft = ilaplace (Fs)
)(1 sFL
Comando Solve
Matlab provee del comando Solve para solucionar ecuaciones simblicas.
Las ecuaciones se deben enunciar como una igualdad con el smbolo == o como desigualdades con smbolos de comparacin.
Ejemplo:
>> syms u v
>> [solv, solu] = solve(2*u^2 + v^2 == 0, u - v == 1, v, u)
Aplicacin 1
Teorema de valor medio:
Determine que funciones cumplen el teorema:
Se tiene el inicio y final de los intervalos, es decir f(a) y f(b) en cada caso, usaremos estos valores para encontrar el caso especial (f(c)).
syms x f1 = @(x)1/(exp(x)-2); f2 = @(x)x^(2/3)-1; f3 = @(x) (x>=0&&x1&&x
Ejercicio 2
Resuelva el siguiente sistema de ecuaciones
x1 + 3x2 - 3x3 = 10
-x1 + 3x2 + 3x3 = 20
2x1 + 1.7x2 + x3 = 6
-2x1 + 4x2 - x3 = -4
La solucin del sistema es nica? Si no es as halle la solucin para que se cumpla x3 = 10.
Ejercicio 3
Calcule el volumen entre las dos seales senoidales:
Ejercicio 4
Calcular en trminos de k el intercepto-y (x=0) de la tangente en el punto donde x = k para la siguiente funcin:
Clculo Numrico
Si bien es cierto el paquete de matemtica simblica provee un mecanismo prctico para resolver problemas, computacionalmente no es tan eficiente como trabajar con funciones y vectores con variables numricas.
En adelante, se presentan mtodos para realizar integrales y resolver ecuaciones diferenciales, empleando clculo numrico de alta velocidad.
Integracin:
Matlab implementa la integral numrica mediante quad(), en este caso el paso x se adapta a la funcin:
Comando quad()
quad(@x(x^2),0,1)
Comando dblquad()
V = dblquad(@(x,y) sqrt(max(1-(x.^2+y.^2),0)),-1,1,-1,1)
Comando triplequad()
Ecuaciones Diferenciales
Las ecuaciones diferenciales son elementos clave en el modelamiento y simulacin de sistemas dinmicos.
Una ecuacin diferencial es una ecuacin que involucra una variable principal y una o ms de sus derivadas.
Resolviendo Ecuaciones Diferenciales
Matlab tiene a disposicin un gran nmero de algoritmos para la resolucin de ecuaciones diferenciales, el ms usado es sin lugar a dudas el ode45.
ode45 resuelve las ecuaciones del tipo dx = f(t,x) usando el algoritmo de Runge-Kutta.
[t x] = ode45(fun_handle, tspan, x0, options)
Ejemplo:
>> f = @(t,x) -2*x
>> [t x] = ode45(f,[0 10],2);
>> plot(t,x);
Algunos Solvers
Sistemas de Ecuaciones Diferenciales
En el caso de sistemas de ecuaciones diferenciales, el procedimiento es muy similar, no obstante se debe tener cuidado en la definicin de las funciones.
Ejemplo:
function yp = fend(t,y)
yp(1,1) = t.^2 + y(1);
yp(2,1)= 2*y(2) 1;
---------------------------
>> [t x] = ode45(@fend,[0 5],[0 0])
Aplicacin 2: Resolver
Resolver la siguiente ecuacin diferencial ordinaria de primer orden:
y = 3t2 con y(2) = 0.5
Para y = g1(t,y) = 3t2
%Escribe ecuacin diferencial
function dy = g1(t,y)
dy = 3*t.^2;
Vamos a resolver la ecuacin diferencial con los siguientes parmetros:
tspan = [2 4];
C.I. = y(2) = 0.5
Finalmente (en otro script),
[t y] = ode23(@g1, [2 4], 0.5)
Teniendo el resultado del solver, proceda a dibujar los puntos de solucin. Considere la presentacin en su grfica.
Cmo podra comparar la solucin aproximada con la solucin real?
Repita el procedimiento usando la funcin: ode45. Anote sus observaciones.
Aplicacin 3: Planta de Nivel
Paso 1:
Identifique la funcin f(t,h) que representa a la derivada de mayor orden en su sistema.
En este caso, tenemos el tiempo t como variable independiente y el nivel h como variable dependiente.
f(t,h) = (t) - h
Paso 2:
Escribir la siguiente funcin en MATLAB:
function dhdt = tank_mod1 (t, h)
%Escribe ecuacin diferencial del proceso alfa = 10 + 0.5*sin (0.1*t); %Flujo de entrada beta = 2; %Factor de salida dhdt = alfa - beta*sqrt(h); %Derivada del nivel
Paso 3:
Use ode45 en un script para resolver el problema. Como ejemplo, podemos considerar la condicin
inicial h(0) = 1 en el intervalo t:[0 120].
%Resuelve ecuacin diferencial tspan = [0 120]; %Intervalo de tiempo h0 = 1; %Condicin inicial [t h] = ode45 ('tank_mod1', tspan, h0); %Resuelve EDO plot (t,h)
Modifique el ejemplo desarrollado para diferentes condiciones iniciales y diferentes factores de descarga .
Consiga la respuesta del tanque cuando la alimentacin funciona slo por un determinado perodo de tiempo. Luego de eso la alimentacin se interrumpe y el tanque se descarga debido a la gravedad.
Para conseguir variar el parmetro dentro de la funcin deber modificar el cdigo de la siguiente manera:
function dhdt = tank_mod1 (t, h, beta)
%Escribe ecuacin diferencial del proceso
alfa = 10 + 0.5*sin (0.1*t); %Flujo de entrada
dhdt = alfa - beta*sqrt(h); %Derivada del nivel
%Resuelve ecuacin diferencial tspan = [0 120]; %Intervalo de tiempo h0 = 1; %Condicin inicial beta = 5; [t h] = ode45 (@(t,h) tank_mod1(t,h,beta), tspan, h0); plot (t,h)
Esta forma de representar funciones en base a funciones annimas permite pasar parmetros a funciones que se evalan en un intervalo.
Ejercicio 5:
Calcular y graficar la derivada aproximada de la siguiente funcin
entre los lmites 0t20 usando intervalos de 0.5, 0.1, 0.05, 0.01 y 0.005. Calcular el error entre las derivadas aproximada y exacta. Como vara este error con cada intervalo?.
Ejercicio 6
Van der Pool System:
Resolver y graficar
para 0t2000 cuando
- = 1
- = 1000, con y(0) = 1 e
y(0) = 0.
Probar ode45 y ode15s.
Comparar
Ejercicio 7:
Las ecuacin de un pndulo ideal es:
Asumiendo que L = 2.5m,
o = 45. Resolver y graficar
el ngulo como una
funcin del tiempo para
0t10. Hallar tambin el
periodo del pndulo.
Ejercicio 8:
Una estudiante se encuentra manejando su automvil. En t = 0, ella pasa por una seal de trnsito con una velocidad de 12 m/s en la direccin +XEncuentre su velocidad al cabo de 10 segundos, para los siguientes casos:
a) ax (t) = 2.2 m/s2 (0.13 m/s3)t
b) ax (t) = 0.5t e -t/20 m/s2
Si la velocidad viene dada por:v = 3t2-6t+3, encuentre su posicinx (20), si x(0) = 0 m.