Documentos de Académico
Documentos de Profesional
Documentos de Cultura
PRÁCTICA Nº 1.
OBJETIVOS:
Usar Matlab y Simulink como herramienta de apoyo para los contenidos vistos en clase:
Solución de ecuaciones diferenciales, simplificación de diagramas de bloque, respuesta de
sistemas de primer orden
TEMAS DE CONSULTA: Solución de ecuaciones diferenciales, simplificación de diagramas de
bloque, respuesta de sistemas de primer orden.
INFORME: Debe incluir todo lo que se ha indicado que debe llevar el informe.
Reporte de los ejercicios planteados y resueltos durante la experiencia de aprendizaje.
Análisis de resultados y conclusiones.
BIBLIOGRAFIA:
OGATA, Katsuhiko. “Problemas de Ingeniería de Control utilizando MATLAB”. Prentice
Hall. 1999.
DORF, Richard C. BISHOP, Robert H. “Modern Control System”. Prentice Hall. 11va edición.
2008
OGATA, Katsuhiko. “Ingeniería de Control Moderna”. Pearson. 5ta Edición. 2010.
www.gonitro.com
DESARROLLO:
1. Fracciones parciales
Comando:
o [r,p,k] = residue(b,a)
Encuentra los residuos, los polos y el término directo de una expansión de
fracción parcial de la razón de dos polinomios.
𝑏(𝑠) 𝑏𝑚 𝑠 𝑚 + 𝑏𝑚−1 𝑠 𝑚−1 + ⋯ + 𝑏1 𝑠 + 𝑏0
=
𝑎(𝑠) 𝑎𝑛 𝑠 𝑛 + 𝑎𝑛−1 𝑠 𝑛−1 + ⋯ + 𝑎1 𝑠 + 𝑎0
𝑏(𝑠) 𝑟𝑛 𝑟2 𝑟1
= + ⋯+ + + 𝑘(𝑠)
𝑎(𝑠) 𝑠 − 𝑝𝑛 𝑠 − 𝑝2 𝑠 − 𝑝1
o [b,a] = residue(r,p,k)
Convierte la expansión de la fracción parcial de nuevo en la proporción de dos
polinomios y devuelve los coeficientes de b y a.
Ejemplos:
𝑏(𝑠) −4𝑠 + 8
= 2
𝑎(𝑠) 𝑠 + 6𝑠 + 8
b = [-4 8];
a = [1 6 8];
[r,p,k] = residue(b,a)
r = 2×1
-12
8
p = 2×1
-4
-2
k =
[]
𝑏(𝑠) 12 8
=− +
𝑎(𝑠) 𝑠+4 𝑠+2
www.gonitro.com
𝑏(𝑠) 2𝑠 3 + 2𝑠 2
=
𝑎(𝑠) 𝑠 3 + 𝑠 + 1
b = [2 1 0 0];
a = [1 0 1 1];
[r,p,k] = residue(b,a)
r = 3×1 complex
0.5354 + 1.0390i
0.5354 - 1.0390i
-0.0708 + 0.0000i
p = 3×1 complex
0.3412 + 1.1615i
0.3412 - 1.1615i
-0.6823 + 0.0000i
k = 2
𝑏(𝑠) 2𝑠 4 + 𝑠
= 2
𝑎(𝑠) 𝑠 +1
b = [2 0 0 1 0];
a = [1 0 1];
[r,p,k] = residue(b,a)
r = 2×1 complex
0.5000 - 1.0000i
0.5000 + 1.0000i
p = 2×1 complex
0.0000 + 1.0000i
0.0000 - 1.0000i
k = 1×3
2 0 -2
www.gonitro.com
2. Solución de ecuaciones diferenciales
𝑑𝑦(𝑡)
+ 0.1𝑦(𝑡) − 2 = 0
𝑑𝑡
𝑦(0) = 0
%% Solución de ecuaciones diferenciales utilizando MATLAB(R)
% Se utilizará el comando dsolve para
% hallar la solución a ecuaciones diferenciales
%% Solución general a una ecuación diferencial de primer orden sin condiciones
iniciales
clear all
close all
syms y(t)
eqn = diff(y,t) == 2-(0.1*y);
ySol(t) = dsolve(eqn,y(0) == 0)
syms t
ezplot(ySol,[0 100])
axis([0 100 0 30])
% y=dsolve('Dy=2-(0.1*y)','t');
% y1=simplify(y)
% pretty(y)
% syms t
%ezplot(y,[0 20])
𝑑𝑦(𝑡)
+ 0.1𝑦(𝑡) − 2 = 0
𝑑𝑡
𝑦(0) = 5
%% Solución general de una ecuación diferencial de primer orden con condiciones
iniciales
clear all
close all
syms y(t)
eqn = diff(y,t) == 2-(0.1*y);
cond= y(0) == 5;
ySol(t) = dsolve(eqn,cond)
syms t
ezplot(ySol,[0 100])
axis([0 100 0 30])
% y=dsolve('Dy=2-(0.1*y)','y(0)=5','t');
% y1=simplify(y)
% pretty(y)
% syms x
% ezplot(y,[-pi 2*pi])
www.gonitro.com
𝑑𝑦(𝑡)
+ 10𝑦(𝑡) − 20 = 0
𝑑𝑡
𝑦(0) = 2
%%
clear all
close all
syms y(t)
eqn = diff(y,t) == 20-(10*y);
cond= y(0) == 2;
ySol(t) = dsolve(eqn,cond)
syms t
ezplot(ySol,[0 10])
axis([0 10 0 10])
𝑑 2 𝑦(𝑡) 𝑑𝑦(𝑡)
2
+3 + 2𝑦(𝑡) = 0
𝑑𝑡 𝑑𝑡
𝑦(0) = 1
𝑑𝑦(0)
=0
𝑑𝑡
clear all
close all
syms y(t);
eqn = diff(y,t,2) == -(3*diff(y,t))-(2*y);
pretty(eqn)
Dy=diff(y,t)
ySol(t) = dsolve(eqn,y(0) == 1,Dy(0)==0);
pretty(ySol)
sym t ;
ezplot(ySol,[0 10])
axis([0 10 0 2])
𝑑 2 𝑦(𝑡) 𝑑𝑦(𝑡)
+ 4 + 3𝑦(𝑡) = 1
𝑑𝑡 2 𝑑𝑡
𝑦(0) = 1
𝑑𝑦(0)
=0
𝑑𝑡
www.gonitro.com
3. Simplificación de diagramas de bloque
o Serie:
1 𝑠+1
𝐺(𝑠) = 2
, 𝐺𝑐 (𝑠) =
500𝑠 𝑠+2
𝑠+1
𝐺(𝑠)𝐺𝑐 (𝑠) =
500𝑠 3 + 1000𝑠 2
numg=[1];
deng=[500 0 0];
sysg=tf(numg,deng);
numh=[1 1];
denh=[1 2];
sysh=tf(numh,denh);
sys=series(sysg,sysh)
o Paralelo:
1 𝑠+1
𝐺1 (𝑠) = , 𝐺2 (𝑠) =
500𝑠 2 𝑠+2
www.gonitro.com
numg1=[1];
deng1=[500 0 0];
sysg1=tf(numg1,deng1);
numg2=[1 1];
deng2=[1 2];
sysg2=tf(numg2,deng2);
sys=parallel(sysg1,sysg2)
o Realimentación:
numg=[1];
deng=[500 0 0];
sysg=tf(numg,deng);
numc=[1 1];
denc=[1 2];
sysc=tf(numc,denc);
sys1=series(sysg,sysc);
sysreal=feedback(sys1,[1],-1);
1
𝐺(𝑠) =
500𝑠 2
𝑠+1
𝐺𝑐 (𝑠) =
𝑠+2
1 𝑠+1
𝐺(𝑠)𝐺𝑐 (𝑠) 500𝑠 2 ∗ (𝑠 + 2 )
=
1 + 𝐺(𝑠)𝐺𝑐 (𝑠) 1 + ( 1 ) (𝑠 + 1)
500𝑠 2 𝑠 + 2
numg=[1];
deng=[500 0 0];
sysg=tf(numg,deng);
numh=[1 1];
denh=[1 2];
sysh=tf(numh,denh);
sysreal=feedback(sysg,sysh,-1);
1
𝐺(𝑠) =
500𝑠 2
www.gonitro.com
𝑠+1
𝐻(𝑠) =
𝑠+2
1
𝐺(𝑠) 500𝑠 2
=
1 + 𝐺(𝑠)𝐻(𝑠) 1 + ( 1 𝑠+1
)( )
500𝑠 2 𝑠 + 2
o Reducir:
1 1 𝑠2 + 1 𝑠+1
𝐺1 (𝑠) = , 𝐺2 (𝑠) = , 𝐺3 (𝑠) = 2 , 𝐺4 (𝑠) =
𝑠 + 10 𝑠+1 𝑠 + 4𝑠 + 4 𝑠+6
𝑠+1
𝐻1 (𝑠) = , 𝐻2 (𝑠) = 2 , 𝐻3 (𝑠) = 1
𝑠+2
o Reducir (simulink):
clear all
close all
[num,den] = linmod('system', x, u)
Resultado=tf(num,den)
www.gonitro.com
4. Respuesta de sistemas de primer orden
o Escalón:
clear all
close all
T=10;
K=1;
num=[K/T];
den=[l 1/T];
sys=tf(num,den);
step(num,den);
o Impulso:
Agregar
derivador
clear all
close all
T=10;
K=1;
num=[K/T];
den=[l 1/T];
sys=tf(num,den);
impulse(num,den);
www.gonitro.com
o Rampa:
Agregar
integrador
T=10;
K=1;
num=[K/T];
den=[l 1/T];
sys=tf(num,den);
t=linspace(0,(T*5));
u=t;
y = lsim(sys,u,t);
plot(t,y);
grid on;
title('Respuesta rampa de un sistema de primer orden')
xlabel('t')
ylabel('amplitud')
o Escalón:
zeta=1;
wn=1;
num=[wn^2];
den=[1 2*zeta*wn wn^2];
sys=tf(num,den);
step(num,den);
o Impulso:
zeta=1;
wn=1;
num=[wn^2];
den=[1 2*zeta*wn wn^2];
sys=tf(num,den);
impulse(num,den);
www.gonitro.com
o Rampa:
zeta=1;
wn=1;
num=[wn^2];
den=[1 2*zeta*wn wn^2];
t=linspace(0,50,0.2);
u=t;
y = lsim(sys,u,t);
plot(t,y);
grid on;
title('Respuesta rampa de un sistema de segundo orden')
xlabel('t')
ylabel('amplitud')
www.gonitro.com