clase 03-matlab

35
Matlab: Symbolic Math Toolbox, Control System Toolbox Dr. Luis Sánchez

Upload: ronald-sanchez

Post on 14-Apr-2017

39 views

Category:

Engineering


0 download

TRANSCRIPT

Matlab: Symbolic Math Toolbox,

Control System Toolbox

Dr. Luis Sánchez

Symbolic Math Toolbox

Permite:

• Calculus – integration, differentiation, Taylor series

expansion, …

• Linear Algebra – inverses, determinants, eigenvalues, …

• Simplification – algebraic and trigonometric expressions

• Equation Solutions – algebraic and differential equations

• Transforms – Fourier, Laplace, Z transforms and inverse

transforms, …

Symbolic Use sym to create a symbolic number, and double

to convert to a normal number. >> sqrt(2) ans = 1.4142

>> var = sqrt(sym(2)) var = 2^(1/2)

>> double(var) ans = 1.4142

>> sym(2)/sym(5) + sym(1)/sym(3) ans = 11/15

Symbolic variables

Use syms to define symbolic variables. (Or use sym to create

an abbreviated symbol name.)

>> syms m n b c x >> th = sym('theta') >> sin(th)

ans = sin(theta) >> sin(th)^2 + cos(th)^2

ans = cos(theta)^2 + sin(theta)^2 >> y = m*x + b

y = b + m*x

Expresiones simbólicas

The subs function substitutes values or expressions for

variables in a symbolic expression. >> clear

>> syms m x b

>> y = m*x + b → y = b + m*x >> subs(y,x,3) → ans = b + 3*m >> subs(y, [m b], [2 3]) → ans = 2*x + 3 >> subs(y, [b m x], [3 2 4])→ ans = 11

The symbolic expression itself is unchanged.

>> y → y = b + m*x

Diferenciación

Use diff to do symbolic differentiation.

>> clear

>> syms m x b th n y

>> y = m*x + b;

>> diff(y, x) → ans = m

>> diff(y, b) → ans = 1

>> p = sin(th)^n → p = sin(th)^n >> diff(p, th) → ans = n*cos(th)*sin(th)^(n

- 1)

Integración

Indefinite integrals

>> int(y, x) → ans = (m*x^2)/2 +

b*x >> int(y, b) → ans = (b + m*x)^2/2 >> int(1/(1+x^2)) → ans = atan(x)

Definite integrals

>> int(y,x,2,5) → ans = 3*b +

(21*m)/2 >> int(1/(1+x^2),x,0,1) → ans = pi/4

>> clear

>> syms m b x >> y = m*x + b;

Graficando expresiones simbólicas

The ezplot function will plot symbolic expressions.

>> clear; syms x y >> ezplot( 1 / (5 + 4*cos(x)) ); >> hold on; axis equal >> g = x^2 + y^2 - 3; >> ezplot(g);

Solución de Ecuaciones

diferenciales con Matlab: dsolve

2

2

n

n

y

dy

dt

d y

dt

d y

dt

• y

• Dy

• D2y

• Dny

• >> y = dsolve('Dy + 2*y = 12*sin(4*t)',

'y(0)=10')

• y =

• -12/5*cos(4*t)+6/5*sin(4*t)+62/5*exp(-2*t)

• >> ezplot(y, [0 8])

• >> axis([0 8 -3 10])

2 12sin 4dy

y tdt

(0) 10y

Ejemplo. Resolver la ED usando

Matlab

• >> y = dsolve('D2y + 3*Dy + 2*y = 24',

'y(0)=10', 'Dy(0)=0')

• y =

• 12+2*exp(-2*t)-4*exp(-t)

• >> ezplot(y, [0 6])

2

23 2 24

d y dyy

dt dt

(0) 10y '(0) 0y

Ejemplo. Resolver la ED usando

Matlab

La trasformada de Laplace

simbólica con Matlab

Establezca s y t como variables simbólicas.

>> syms t s

• La trasformada de laplace de una función f(t) se obtiene como:

>> F = laplace(f)

• Algunas simplificaciones utiles son:

>> pretty(F)

>> simplify(F)

•Establish t and s as symbolic variables.

>> syms t s

•The Laplace function F is then formed and

the inverse Laplace transform command is:

>> f = ilaplace(F)

La trasformada inversa de Laplace

simbólica con Matlab

2 2( ) 3 sin5 4 cos5t tv t e t e t

>> syms t s

>> v = 3*exp(-2*t)*sin(5*t)

+ 4*exp(-2*t)*cos(5*t)

v =

3*exp(-2*t)*sin(5*t)+4*exp(-2*t)*cos(5*t)

Ejemplo. Determine la trasformada

de Laplace de v(t) usando Matlab

Ejemplo. Continuación…

>> V = laplace(v)

V =15/((s+2)^2+25)+4*(s+2)/((s+2)^2+25)

>> V=simplify(V)

V = (23+4*s)/(s^2+4*s+29)

>> syms t s

>> F=100*(s+3)/((s+1)*(s+2)*(s^2+2*s+5))

F =

(100*s+300)/(s+1)/(s+2)/(s^2+2*s+5)

2

100( 3)( )

( 1)( 2)( 2 5)

sF s

s s s s

Ejemplo. Determine la trasformada Inversa

de Laplace de F(s) usando Matlab

>> f = ilaplace(F)

f = 50*exp(-t)-20*exp(-2*t)-30*exp(-t)*cos(2*t)-

10*exp(-t)*sin(2*t)

>> pretty(f)

50 exp(-t) - 20 exp(-2 t) - 30 exp(-t) cos(2 t) -

10 exp(-t) sin(2 t)

Ejemplo. Continuación…

2

10 48( )

2 ( 2)( 16)Y s

s s s

>> syms t s

>> Y = 10/(s+2) + 48/((s+2)*(s^2+16))

Y =10/(s+2)+48/(s+2)/(s^2+16)

Ejemplo. Determine la trasformada

Inversa de Laplace de F(s) usando

Matlab

>> y = ilaplace(Y)

y = 62/5*exp(-2*t)-

12/5*cos(16^(1/2)*t)+3/10*16^(1/2)*sin(16^(1/

2)*t)

>> y=simplify(y)

y = 62/5*exp(-2*t)-12/5*cos(4*t)+6/5*sin(4*t)

Ejemplo. Continuación…

Diversos comandos de Matlab para aplicarlos

en diferentes campos de la transformada de

Laplace

El comando roots determina las raíces de polinomios de

grado n

Ejemplo

El comando poly obtiene el polinomio de las raíces dadas

El comando conv lleva a cabo el producto de 2 funciones

representadas en el dominio s

El comando printsys representa como función racional en s a la relación

de polinomios numerador/denominador

El comando pzmap efectúa la representación gráfica de polos y ceros

en el plano s de una función racional previamente definida.

El comando residue descompone en fracciones parciales a

G(s).

Conversión de fracciones parciales a función racional

Ejemplo

Teoremas de valor inicial y final

Ejemplo

Ejemplo

Funciones de Trasferencia en Matlab

Funciones de Trasferencia en Matlab

Ejemplos

Escribir en Matlab las siguientes funciones de trasferencia:

Conversión de una función de trasferencia a

formato ganancia-polo-cero y viceversa

Ejemplo

Dada la función de trasferencia G(s), expresarla en formato

ganancia-polo-cero.

Generating a Step Response in MATLAB

>>M = 1; % units of kg

>>K = 10; % units of N/m

>>B = 2; % units of N-s/m

>>num = 1;

>>den = [M B K];

>>sys = tf(num,den)

>>step(sys);

Specifying the time scale

>>t=0:0.1:10;

>>step(sys,t);