Click here to load reader
Upload
javier-villegas
View
314
Download
0
Embed Size (px)
Citation preview
1
Matlab para teoria de control
1- Introduccion
Ing Sergio Laboret
Catedra: Teoria de control
Universidad Tecnologica Nacional
Facultad Regional Cordoba
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
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
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
Nota: Observar
que pasaria si
hacemos W=X*Y
sin el punto
Vectores, funciones y graficacion
2
Resolver el sistema de ecuaciones siguiente
1 2
1 2
2 3 4
5 2
X X
X X
+ =
− =AX B=
2 3 4,
5 1 2A B
= = −
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
0 3 2
2 4 2
A
= − − −
A=[1 2 1;0 3 2;-2 -4 -2]
rank(A)<size(A) da [1 1] (verdadero)
det(A) da 0
Matrices, ecuaciones, funciones matriciales
[ ]2 0 4
, , 2 0 35 2 2
A B C
= = = −
A BD
C
=
Dada las matrices A,B,C y D
Obtener la matriz D por
composicion
A=[2 0;5,-2]
B=[4;2];
C=[2 0 3];
D=[ A B;C]
D =
2 0 4
5 -2 2
2 0 3
Que pasa si hacemos
plot(D)
3
Dada A sacar las matrices1 3
2 0A
− =
0
)!n
nAAb C en
∞
=
= =∑) { } { }aij
a B bij e= =
3) * *d E A A A A= =3) { } { }c D dij aij= =
A=[1 -3 ;2 0];
B=exp(A)
B =
2.7183 0.0498
7.3891 1.0000
C=expm(A)
C =
-0.9807 -1.3964
0.9310 -1.4462
D=A.^3
D =
1 -27
8 0
E=A^3
E =
-11 15
-10 -6
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
C1=2+j*5, C2=4-j*2
C1 =
2.0000 + 5.0000i
C2 =
4.0000 - 2.0000i
M1=abs(C1),A1=angle(C1)
M1 =
5.3852
A1 =
1.1903
M2=abs(C2),A2=angle(C2)
M2 =
4.4721
A2 =
-0.4636
P=C1*C2
P =
18.0000 +16.0000i
MP=abs(P),AP=angle(P)
MP =
24.0832
AP =
0.7266
D=C1/C2
D =
-0.1000 + 1.2000i
MD=abs(D),AD=angle(D)
MD =
1.2042
AD =
1.6539
se cumple MP=M1M2, AP=A1+A2, MD=M1/M2, AD=A1-A2
4
1 30.1
2 4A
= −
A=0.1*[1 3;-2 4]
r=eig(A)
r =
0.2500 + 0.1936i
0.2500 - 0.1936i
M=abs(r)
M =
0.3162
0.3162
M<=1
ans =
1
1
arg=180/pi*angle(r)
arg =
37.7612
-37.7612
Determinar los autovalores de A, verificar que el
modulo sea menor o igual que 1 , sacar el
argumento en grados y dibujar en plano complejo
R=0:real(r(1))/20:real(r(1));
I1=0:imag(r(1))/20:imag(r(1));
I2=0:imag(r(2))/20:imag(r(2));
plot(R,I1,'b',R,I2,'r'), axis([0,0.5,-0.5,0.5]),grid
Hallar las raices de3 2(5 2 5) 0s s− + =
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]
n =
5 -2 0 5
r=roots(p)
r =
0.6414 + 0.8492i
0.6414 - 0.8492i
-0.8829
verificacion:
5*r.^3-2*r.^2+5
ans =
1.0e-014 *
-0.7105 - 0.2220i
-0.7105 + 0.2220i
0.7994
Hallar la expansion en
fracciones parciales y dibujar la
ubicacion de los polos de
3 2
10
5 2 5 ( )kn s ri
d s s s pi= =
− + −∑
d=[5 -2 0 5]
d =
5 -2 0 5
n=[10 0]
n =
10 0
[r,p,k]=residue(n,d);
r =
0.2900 - 0.6571i
0.2900 + 0.6571i
-0.5799
p =
0.6414 + 0.8492i
0.6414 - 0.8492i
-0.8829
k =
[]
5
Dibujar los polos marcados con X
plot(p,'X')
grid
Dibujo 3d de lineas: plot(x,y,z)
Dibujar una Helice en el espacio
t = 0:pi/50:10*pi;
plot3(sin(t),cos(t),t);
Graficacion avanzada
2 2( ) ( ) 1, ( )x t y t z t t+ = =
6
Dibujo 3d de Superficies y contornos:
Dibujar la "campana de gauss" en 3d
[X,Y] = meshgrid(-2:.2:2, -2:.2:2);
Z = exp(-X.^2 - Y.^2);
22 2 2( , ) ;rz x y e r x y−= = +
Grafico de Malla
mesh(X,Y,Z)
Curvas de Nivel Z=cte
contour(X,Y,Z)
Grafico coloreado
surf(X,Y,Z)
7
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 tSolucion 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
>>y=dsolve('D2y+Dy+y=0','y(0)=1‘,’Dy(0)=0’)
>>y=int(‘A*x^2’,’x’)
1/3*A*x^3+C
>>y=diff('x^3',2,'x')
6*x
Ejemplos >>x=sym(‘x’) declara a x variable simbolica
>>syms a x y declara como simbolicas a,x,y
02
2
=++ Ydt
dY
dt
Yd
dXAXY ∫= 2
>>y=int('A*x^2','x',0,t)
1/3*A*t^3dXAXtfY
t
o∫== 2)(
2
32 )(
dX
Xdy =
>>solve('x^2+3*x+4=0')
[ -3/2+1/2*i*7^(1/2)] [ -3/2-1/2*i*7^(1/2)]0432 =++ XX
>>syms a x; g=finverse(a*x^2,’x’)
Warning: finverse(a*x^2) is not unique
g=1/a*(a*x)^(1/2))()( 12 XfgAXXf −=⇒=
Declaracion
de variables
Ecuacion
Diferencial
Con CCII
Integral Indefinida
Integral definida
con otra
variable
Diferenciacion
Raices de
ecuaciones
Funcion inversa
y=1/3*3^(1/2)*exp(-1/2*t)*sin(1/2*3^(1/2)*t)
+exp(-1/2*t)*cos(1/2*3^(1/2)*t)0)0(,1)0( ==dt
dYY
8
Graficacion implicita
>>ezplot('x^2+y^2=10')
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
>>y=log(x);ezplot(y,[0,100])
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
22 2 2
2
s ( )( , ) ;
en rz x y r x y
r= = +
Graficacion 3d
ezsurf(‘expresion’)
Graficar la funcion
ezsurf(sin(x^2+y^2)/(x^2+y^2))