8

Click here to load reader

Matlab Basico

Embed Size (px)

Citation preview

Page 1: Matlab Basico

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

Page 2: Matlab Basico

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)

Page 3: Matlab Basico

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

Page 4: Matlab Basico

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 =

[]

Page 5: Matlab Basico

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+ = =

Page 6: Matlab Basico

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)

Page 7: Matlab Basico

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

Page 8: Matlab Basico

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))