simulacion de sistemas con matlab

Download SIMULACION DE SISTEMAS CON MATLAB

If you can't read please download the document

Upload: elmer-calle

Post on 07-Jan-2016

92 views

Category:

Documents


0 download

DESCRIPTION

simulación de sistemas con matlab

TRANSCRIPT

  • 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.