Mathematics">
Tarea - Cotrol de Sistemas Lineales Codigos
Tarea - Cotrol de Sistemas Lineales Codigos
Tarea - Cotrol de Sistemas Lineales Codigos
Tarea 1
TAREA #1, Función de Transferencia y respuesta del sistema
Instrucciones Generales
I. Conforme tu numero de estudiante (matricula), los problemas que debes
resolver
• Banco A, matricula par
• Banco B, matricula impar
II. Documenta tus pasos y si realizas código en MATLAB colócalo en un archivo .m
por cada sección de problemas, la entrega de esta tarea debe ir acompañada
del archivo de MATLAB.
BLOQUE A
1 𝑦' + 0.1𝑦 = 𝑥
2 𝑦' + 0.1𝑦 = 𝑥' + 𝑥
3 𝑦 + 4𝑦' + 4.25𝑦 = 3𝑥
''
Sección de problemas
1. Conforme al bloque asignado, realiza lo siguiente.
a. Obtén la F.T. de cada sistema asignado.
b. Para cada F.T. de (a) determina su ganancia en DC: calculada y con MATLAB.
c. Para cada F.T. de (a) determina sus polos y ceros: calculado hasta el 4 y todos
además con MATLAB.
c. De cada función y(t) obtenida para sistema (a) para cada entrada (b), indica
donde están presentes los Polos obtenidos en (1.c).
d. Gráfica con MATLAB cada una de las señales de respuesta de cada sistema,
agrupando en 1 ventana de gráfico todas las señales de respuesta del sistema,
emplea el comando subplot para ordenar. Tip: considera el tiempo de 0 a 5 ó
10seg.
Introducción
El control automático es una rama de la ingeniería que se ocupa del diseño, análisis y
control de sistemas dinámicos. Los sistemas de control se utilizan en una amplia gama de
aplicaciones, desde la industria hasta los automóviles y la medicina.
El código de MATLAB que se describe en este reporte se utiliza para analizar la respuesta
de sistemas de control a diferentes señales de entrada. El código utiliza las funciones de
transferencia de los sistemas de control para calcular la respuesta de cada sistema a una
señal de entrada específica.
Luego, se crea un array vacío llamado RSPC, que almacenará las respuestas de los ocho
sistemas de control a las cuatro señales de entrada.
Para cada uno de los ocho sistemas de control, se calcula la función de transferencia G(s)
y se utiliza la función ilaplace() para calcular la respuesta del sistema a cada una de las
cuatro señales de entrada. Las respuestas se almacenan en el array RSPC.
Finalmente, se utiliza un bucle for para trazar las respuestas de los ocho sistemas de
control a las cuatro señales de entrada.
Resultados
Las figuras 1 a 8 muestran las respuestas de los ocho sistemas de control a las cuatro
señales de entrada.
Discusión
Los resultados muestran que la respuesta de un sistema de control a una señal de entrada
depende de la función de transferencia del sistema. En general, los sistemas con polos en el
origen tienen respuestas que se acercan al estado estacionario más rápidamente que los
sistemas con polos en el lado derecho del plano complejo.
Conclusiones
El código de MATLAB que se describe en este reporte es una herramienta útil para
analizar la respuesta de sistemas de control a diferentes señales de entrada. El código es
relativamente simple de usar y puede ser personalizado para analizar sistemas de control
específicos.
clear
clc
syms s t
syms u(t) x(t)
%señales de entrada
IS_1=laplace(3*heaviside(t));
IS_2=laplace(1.5*t);
IS_3=laplace(sin(5*t));
IS_4=laplace(sin(5*t)+heaviside(t));
%array de respuestas
RSPC=[];
Si la función de transferencia del sistema es G(s), podemos usarla para calcular la respuesta
del sistema a una señal de entrada específica. Por ejemplo, si la señal de entrada es una
función escalón unitario, la respuesta del sistema será una función sinusoidal.
Los polos determinan la respuesta del sistema en el dominio del tiempo. En este caso, los
polos están en el lado izquierdo del plano complejo. Esto significa que el sistema es estable,
es decir, la respuesta del sistema se acercará a un valor constante en el tiempo.
En este caso, el factor de ganancia es 1/5. Esto significa que la amplitud de la respuesta
sinusoidal será la mitad de la amplitud de la señal de entrada.
Resolucion de codigo
%primer sistema
X=[0,1];
Y=[1,0.1];
G=tf(X,Y);
GG=poly2sym(Y,s)/poly2sym(X,s);
% calcular polos y ganancia
fprintf("Polos, ceros y gain de: ");
disp(GG);
polos=roots(Y)
ceros=roots(X)
dcgain(G)
disp("------------------------------");
%agregar a array de respuestas
RSPC=[RSPC,ilaplace(GG*IS_1)];
RSPC=[RSPC,ilaplace(GG*IS_2)];
RSPC=[RSPC,ilaplace(GG*IS_3)];
RSPC=[RSPC,ilaplace(GG*IS_4)];
polos =
-0.1000
ceros =
ans =
10
Despues de este sistema copio y pego las funciones 8 veces para los otros sistemas teniendo
cuidado que meta bien las ecuaciones a matlap
Segundo sistema
%segundo sistema
X=[1,1];
Y=[1,0.1];
G=tf(X,Y);
GG=poly2sym(Y,s)/poly2sym(X,s);
% calcular polos y ganancia
fprintf("Polos, ceros y gain de: ");
disp(GG);
polos=roots(Y)
ceros=roots(X)
dcgain(G)
disp("------------------------------");
%agregar a array de respuestas
RSPC=[RSPC,ilaplace(GG*IS_1)];
RSPC=[RSPC,ilaplace(GG*IS_2)];
RSPC=[RSPC,ilaplace(GG*IS_3)];
RSPC=[RSPC,ilaplace(GG*IS_4)];
polos =
-0.1000
ceros =
-1
ans =
10
Tercer sistema
%tercer sistema
X=[3];
Y=[1,4,4.25];
G=tf(X,Y);
GG=poly2sym(Y,s)/poly2sym(X,s);
% calcular polos y ganancia
fprintf("Polos, ceros y gain de: ");
disp(GG);
polos=roots(Y)
ceros=roots(X)
dcgain(G)
disp("------------------------------");
%agregar a array de respuestas
RSPC=[RSPC,ilaplace(GG*IS_1)];
RSPC=[RSPC,ilaplace(GG*IS_2)];
RSPC=[RSPC,ilaplace(GG*IS_3)];
RSPC=[RSPC,ilaplace(GG*IS_4)];
polos =
-2.0000 + 0.5000i
-2.0000 - 0.5000i
ceros =
ans =
0.7059
------------------------------
Cuarto Sistema
%cuarto sistema
X=[1,0,3];
Y=[1,4,4.25];
G=tf(X,Y);
GG=poly2sym(Y,s)/poly2sym(X,s);
% calcular polos y ganancia
fprintf("Polos, ceros y gain de: ");
disp(GG);
polos=roots(Y)
ceros=roots(X)
dcgain(G)
disp("------------------------------");
%agregar a array de respuestas
RSPC=[RSPC,ilaplace(GG*IS_1)];
RSPC=[RSPC,ilaplace(GG*IS_2)];
RSPC=[RSPC,ilaplace(GG*IS_3)];
RSPC=[RSPC,ilaplace(GG*IS_4)];
polos =
-2.0000 + 0.5000i
-2.0000 - 0.5000i
ceros =
0.0000 + 1.7321i
0.0000 - 1.7321i
ans =
0.7059
------------------------------
Quinto sistema
X=[20];
Y=[1,6,13,20];
G=tf(X,Y);
GG=poly2sym(Y,s)/poly2sym(X,s);
% calcular polos y ganancia
fprintf("Polos, ceros y gain de: ");
disp(GG);
polos=roots(Y)
ceros=roots(X)
dcgain(G)
disp("------------------------------");
%agregar a array de respuestas
RSPC=[RSPC,ilaplace(GG*IS_1)];
RSPC=[RSPC,ilaplace(GG*IS_2)];
RSPC=[RSPC,ilaplace(GG*IS_3)];
RSPC=[RSPC,ilaplace(GG*IS_4)];
polos =
-4.0000 + 0.0000i
-1.0000 + 2.0000i
-1.0000 - 2.0000i
ceros =
ans =
1
%sexto sistema
X=[4,20];
Y=[1,6,13,20];
G=tf(X,Y);
GG=poly2sym(Y,s)/poly2sym(X,s);
% calcular polos y ganancia
fprintf("Polos, ceros y gain de: ");
disp(GG);
polos=roots(Y)
ceros=roots(X)
dcgain(G)
disp("------------------------------");
%agregar a array de respuestas
RSPC=[RSPC,ilaplace(GG*IS_1)];
RSPC=[RSPC,ilaplace(GG*IS_2)];
RSPC=[RSPC,ilaplace(GG*IS_3)];
RSPC=[RSPC,ilaplace(GG*IS_4)];
polos =
-4.0000 + 0.0000i
-1.0000 + 2.0000i
-1.0000 - 2.0000i
ceros =
-5
ans =
%septimo sistema
X=[1];
Y=[1,5,12.5,10];
G=tf(X,Y);
GG=poly2sym(Y,s)/poly2sym(X,s);
% calcular polos y ganancia
fprintf("Polos, ceros y gain de: ");
disp(GG);
polos=roots(Y)
ceros=roots(X)
dcgain(G)
disp("------------------------------");
%agregar a array de respuestas
RSPC=[RSPC,ilaplace(GG*IS_1)];
RSPC=[RSPC,ilaplace(GG*IS_2)];
RSPC=[RSPC,ilaplace(GG*IS_3)];
RSPC=[RSPC,ilaplace(GG*IS_4)];
-----------------------------
Polos, ceros y gain de: s^3 + 5*s^2 + (25*s)/2 + 10
polos =
-1.8497 + 2.0657i
-1.8497 - 2.0657i
-1.3007 + 0.0000i
ceros =
ans =
0.1000
%octavo sistema
X=[1,1];
Y=[1,5,12.5,10];
G=tf(X,Y);
GG=poly2sym(Y,s)/poly2sym(X,s);
% calcular polos y ganancia
fprintf("Polos, ceros y gain de: ");
disp(GG);
polos=roots(Y)
ceros=roots(X)
dcgain(G)
disp("------------------------------");
%agregar a array de respuestas
RSPC=[RSPC,ilaplace(GG*IS_1)];
RSPC=[RSPC,ilaplace(GG*IS_2)];
RSPC=[RSPC,ilaplace(GG*IS_3)];
RSPC=[RSPC,ilaplace(GG*IS_4)];
polos =
-1.8497 + 2.0657i
-1.8497 - 2.0657i
-1.3007 + 0.0000i
ceros =
-1
ans =
0.1000
t=0:0.001:10;
% (el numero de figure representa el numero del sistema)
for idx=1:8
figure(idx);
clf
subplot(2,2,1);
plot(t,eval(RSPC(4*(idx-1)+1)));
title('Respuesta: u(t)');
subplot(2,2,2);
plot(t,eval(RSPC(4*(idx-1)+2)));
title('Respuesta: 2t');
subplot(2,2,3);
plot(t,eval(RSPC(4*(idx-1)+3)));
title('Respuesta: sin 4t');
subplot(2,2,4);
plot(t,eval(RSPC(4*(idx-1)+4)));
title('Respuesta: sin t + u(t)');
end
Referencias
• Libros: