Está en la página 1de 8

Universidad Tecnologica Nacional

Facultad Regional Cordoba

Matlab para teoria de control


1- Introduccion

Ing Sergio Laboret


Catedra: Teoria de control

Vectores, funciones y graficacion


Dibujar superpuestos en el intervalo 0,4pi con paso pi/100
Y=sen(2x) en azul
Z=exp(-x/2) en negro
W=exp(-x/2)sen(2x) en rojo

X=0:pi/100:4*pi;
Y=sin(2*X);
Z=exp(-X/2);
W=Y.*Z
hold on
plot(X,Y,'b')
plot(X,Z,'k')
plot(X,W,'r')
grid
hold off
Nota: Observar
que pasaria si
hacemos W=X*Y
sin el punto

Con edit->copy figure y pegando obtenemos el grafico en otro programa


La grafica W corresponde a la respuesta al impulso de un sistema de Control tipico

1
Matrices, ecuaciones, funciones matriciales
Resolver el sistema de ecuaciones siguiente

2 X1 + 3 X 2 = 4 2 3  4
AX = B A=  , B = 2
5 X1 − X 2 = 2  5 −1  
1)Hallar la inversa de A y premultiplicarla por B para obtener X
A=[2 3;5 -1],B=[4;2]
X=inv(A)*B obtenemos X1 = 0.5882 X2= 0.9412
para verificar escribimos
A*X y obtenemos B
2) directamente haciendo X= B\A (se obtiene lo mismo pero es mas
rapido y exacto)
Sea la sigiuente matriz: demostrar que no es invertible a partir de su rango y
determinante
1 2 1 A=[1 2 1;0 3 2;-2 -4 -2]

A =  0 3 2  rank(A)<size(A) da [1 1] (verdadero)
det(A) da 0
 −2 −4 −2 

Dada las matrices A,B,C y D


2 0   4
A= , B =  2  , C = [ 2 0 3]
Obtener la matriz D por

composicion
 5 −2   
A=[2 0;5,-2]  A B
B=[4;2]; D= 
C=[2 0 3];  C 
D=[ A B;C]
D=
2 0 4
5 -2 2
2 0 3

Que pasa si hacemos


plot(D)

2
 1 −3 
Dada A sacar las matrices A= 
2 0 
aij ∞
A n
a ) B = {bij} = {e } b)C = e = ∑
A
n =0 n !
c) D = {dij} = {aij 3} d ) E = A3 = A * A * A

A=[1 -3 ;2 0];
D=A.^3
D=
B=exp(A)
1 -27
B=
8 0
2.7183 0.0498
E=A^3
7.3891 1.0000
E=
C=expm(A)
-11 15
C=
-10 -6
-0.9807 -1.3964
0.9310 -1.4462

Calculo complejo, raices y polinomios


Sean C1=2+j5, C2=4-j2 determinar modulo y angulo M1,A1y M2 A2
Multiplicar C1C2 y dividir C1/C2 ver que pasa con los modulos y argumentos
de ambos en las operaciones
P=C1*C2
C1=2+j*5, C2=4-j*2 P=
C1 = 18.0000 +16.0000i
2.0000 + 5.0000i MP=abs(P),AP=angle(P)
C2 = MP =
4.0000 - 2.0000i 24.0832
M1=abs(C1),A1=angle(C1) AP =
M1 = 0.7266
5.3852 D=C1/C2
A1 = D=
1.1903 -0.1000 + 1.2000i
M2=abs(C2),A2=angle(C2) MD=abs(D),AD=angle(D)
M2 = MD =
4.4721 1.2042
A2 = AD =
-0.4636 1.6539

se cumple MP=M1M2, AP=A1+A2, MD=M1/M2, AD=A1-A2

3
Determinar los autovalores de A, verificar que el
modulo sea menor o igual que 1 , sacar el  1 3
argumento en grados y dibujar en plano complejo A = 0.1  
 −2 4 
R=0:real(r(1))/20:real(r(1));
A=0.1*[1 3;-2 4]
r=eig(A) I1=0:imag(r(1))/20:imag(r(1));
r= I2=0:imag(r(2))/20:imag(r(2));
0.2500 + 0.1936i
0.2500 - 0.1936i plot(R,I1,'b',R,I2,'r'), axis([0,0.5,-0.5,0.5]),grid
M=abs(r)
M=
0.3162
0.3162
M<=1
ans =
1
1
arg=180/pi*angle(r)
arg =
37.7612
-37.7612

Hallar las raices de (5s 3 − 2 s 2 + 5) = 0


Primero hay que representarlos polinomios como vectores de coeficientes en
potencias descendentes de s completando con 0 los que faltan
p=[5 -2 0 5] verificacion:
n= 5*r.^3-2*r.^2+5
5 -2 0 5 ans =
r=roots(p) 1.0e-014 *
r= -0.7105 - 0.2220i
0.6414 + 0.8492i -0.7105 + 0.2220i
0.6414 - 0.8492i 0.7994
-0.8829
n 10 s ri
Hallar la expansion en
= 3 =∑
fracciones parciales y dibujar la
ubicacion de los polos de d 5s − 2 s + 5
2
( s − pi ) k
r=
d=[5 -2 0 5] 0.2900 - 0.6571i k=
d= 0.2900 + 0.6571i []
5 -2 0 5 -0.5799
n=[10 0] p=
n= 0.6414 + 0.8492i
10 0 0.6414 - 0.8492i
[r,p,k]=residue(n,d); -0.8829

4
Dibujar los polos marcados con X

plot(p,'X')
grid

Graficacion avanzada
Dibujo 3d de lineas: plot(x,y,z)
Dibujar una Helice en el espacio x (t ) 2 + y (t ) 2 = 1, z (t ) = t
t = 0:pi/50:10*pi;
plot3(sin(t),cos(t),t);

5
Dibujo 3d de Superficies y contornos:
Dibujar la "campana de gauss" en 3d z ( x, y ) = e − r 2
; r 2 = x2 + y 2
[X,Y] = meshgrid(-2:.2:2, -2:.2:2);
Z = exp(-X.^2 - Y.^2);

Grafico de Malla
mesh(X,Y,Z)

Grafico coloreado
surf(X,Y,Z)

Curvas de Nivel Z=cte


contour(X,Y,Z)

6
Libreria simbolica de matlab (Symbolic toolbox)
Permite efectuar calculos con variables y parametros simbolicos
Para definir cadenas de caracteres como objetos simbolicos se debe usar
variable=sym(‘expresion’) o bien
syms lista de variables separadas por espacios
Calculo y ecuaciones diferenciales
El toolbox intenta encontrar una solucion explicita y si no puede una implicita
La variable independiente por defecto es t
Solucion de ecuaciones diferenciales ordinarias
solucion=dsolve(‘ecuacion’,’CCII’,’variable ind’) Las derivadas se expresan en
ecuacion como D (Mayuscula) seguido del orden y el nombre de la variable a derivar
Integracion
integral indefinida: solucion=Int(‘funcion’,’variable indep’)
integral definida entre a y b: solucion=Int(‘funcion’,’variable indep’,a,b)
Derivacion
solucion=diff(‘funcion’,orden,’variable ind’) Si se omite orden es 1
Nota: a veces estas funciones no toman todas la soluciones posibles
Por ejemplo dsolve(Dy=‘1/x’,’x’) da log(x)+C y la solucion es log|x|+C
Ecuaciones algebraicas y funciones
solucion=solve(‘ecuacion’,’variable ind’) Solucion de ecuaciones algebraicas
solucion=finverse(funcion,’variable ind’) Funcion inversa
solucion=simplify(‘expresion’) simplifica expresiones (si es posible)
Aclaracion: para matlab log es logaritmo natural , el logaritmo base 10 es log10

Ejemplos Declaracion >>x=sym(‘x’) declara a x variable simbolica


de variables >>syms a x y declara como simbolicas a,x,y
Ecuacion d 2Y dY
Diferencial + +Y = 0 >>y=dsolve('D2y+Dy+y=0','y(0)=1‘,’Dy(0)=0’)
Con CCII dt 2 dt
dY y=1/3*3^(1/2)*exp(-1/2*t)*sin(1/2*3^(1/2)*t)
Y (0) = 1, (0) = 0 +exp(-1/2*t)*cos(1/2*3^(1/2)*t)
dt

Integral Indefinida Y = ∫ AX 2 dX >>y=int(‘A*x^2’,’x’)


1/3*A*x^3+C
Integral definida
t
con otra
variable Y = f (t ) = ∫ AX 2 dX >>y=int('A*x^2','x',0,t)
o 1/3*A*t^3

d 2(X 3) >>y=diff('x^3',2,'x')
Diferenciacion y=
dX 2 6*x

Raices de
ecuaciones X 2 + 3X + 4 = 0 >>solve('x^2+3*x+4=0')
[ -3/2+1/2*i*7^(1/2)] [ -3/2-1/2*i*7^(1/2)]

Funcion inversa >>syms a x; g=finverse(a*x^2,’x’)


Warning: finverse(a*x^2) is not unique
f ( X ) = AX 2 ⇒ g = f −1 ( X ) g=1/a*(a*x)^(1/2)

7
Legibilidad
pretty(‘expresion’) muestra la expresion en una forma mas legible en pantalla
Hacer >>g=1/a*(a*x)^(1/2);pretty(g) y comparar con el anterior resultado
Graficacion
ezplot(‘expresion’,[desde,hasta]) grafica expresiones explicitas e implicitas en un
intervalo dado, si no se especifica es entre[ –2*pi,2*pi]
No admite parametros simbolicos, solo las variables a graficar: si hay un valor simbolico
en ‘expresion’ es una grafica explicita si hay dos 2 implicita
Graficacion explicita con intervalo Graficacion implicita
>>y=log(x);ezplot(y,[0,100]) >>ezplot('x^2+y^2=10')

Graficacion 3d
ezsurf(‘expresion’) s en(r 2 ) 2
Graficar la funcion z ( x, y ) = 2
; r = x2 + y 2
r
ezsurf(sin(x^2+y^2)/(x^2+y^2))

También podría gustarte