Práctica 1: Comprobación de linealidad con MATLAB#

En esta práctica se comprueba la propiedad de linealidad para sistemas, en forma de estructura \(Transf\{x(t)\}\) para los sistemas:

\[\begin{split} \begin{eqnarray} &y(t)=2.5x(t)\\ &y(t)=4.5x(t)-3\\ &y(t)=(x(t))^2-5x(t)+2\\ &y(t)=cos(3x(t))+2x(t)\\ &y(t)=e^{(-4.5x(t))}cos(20x(t)) \end{eqnarray} \end{split}\]

Con dos funciones impulso arbitrarias \(x_1(t)=sen(2\pi t)\) y \(x_2=e^{-4t}cos(3.5t)\). Para realizar la prueba de linealidad, se utiliza el código siguiente:

clear
close all
t = [0:0.01:4];               % Vector de tiempo
x1 = sin(2*pi*t);           % Tseñal 1
x2 = exp(-0.5*t).*cos(3.5*t);             % señal 2
k1 = 4.5;                   % constante k1
k2 = 5.25;                %   constante k2
x = k1*x1+k2*x2;      % Señal combinada
% Se deinen las funciones Transf para el sistema
Transf_a = @(x) 2.5*x;
Transf_b = @(x) 4.5*x+3;
Transf_c = @(x) x.^2-5*x+2;
Transf_d = @(x) cos(3*x)+2*x;
Transf_e = @(x) exp(-4.5*x).*cos(20*x);
% Prueba de linealidad
y1 = Transf_a(x1);
y2 = Transf_a(x2);
y_esperada= k1*y1+k2*y2;  % Respuesta esperada para un sistema lineal
y_real = Transf_a(x);             % Respuesta real del sistema
clf;                          % Limpiar figura
subplot(1,2,1);               
plot(t,y_esperada);                % Se grafica la respuesta esperada
title('y_{esp} = k_1 y_1 + k_2 y_2') 
xlabel('t (segundos)');
ylabel('Amplitud');
subplot(1,2,2);
plot(t,y_real);                % Se grafica la respuesta real   
title('y_{real} = Transf\{k_1 x_1 + k_2 x_2\}') 
xlabel('t (segundos)');
ylabel('Amplitud');
figure
plot(t,y_esperada);
hold on
plot(t,y_real,'k--');  
title('Comparación') 
xlabel('t (segundos)');
ylabel('Amplitud');
legend("y_{esp} = k_1 y_1 + k_2 y_2","y_{real} = Transf\{k_1 x_1 + k_2 x_2\}")
_images/8e7ed00377f4ad2af70dfc5076a42696ba30e55aa313df2bbf9b7b7cc6e58be2.png _images/d7059e17896af0df4259cd0dadecb8c7c65b5234e3037d053b490094fcae6ae1.png

Como es posible observar en la gráfica anterior, el sistema \(y(t)=2.5x(t)\) es lineal, dado que cumple con el principio de superposición, dado que las gráficas de \(y_{esperada}\) y \(y_{real}\) son exactamente las mismas, si el mismo código se ejecuta, pero esta vez evaluando el sistema definido como \(y(t)=x(t)^2-5x(t)+2\) se obtiene:

clear
close all
t = [0:0.01:4];               % Vector de tiempo
x1 = sin(2*pi*t);           % Tseñal 1
x2 = exp(-0.5*t).*cos(3.5*t);             % señal 2
k1 = 4.5;                   % constante k1
k2 = 5.25;                %   constante k2
x = k1*x1+k2*x2;      % Señal combinada
% Se deinen las funciones Transf para el sistema
Transf_a = @(x) 2.5*x;
Transf_b = @(x) 4.5*x+3;
Transf_c = @(x) x.^2-5*x+2;
Transf_d = @(x) cos(3*x)+2*x;
Transf_e = @(x) exp(-4.5*x).*cos(20*x);
% Prueba de linealidad
y1 = Transf_c(x1);
y2 = Transf_c(x2);
y_esperada= k1*y1+k2*y2;  % Respuesta esperada para un sistema lineal
y_real = Transf_c(x);             % Respuesta real del sistema
clf;                          % Limpiar figura
subplot(1,2,1);               
plot(t,y_esperada);                % Se grafica la respuesta esperada
title('y_{esp} = k_1 y_1 + k_2 y_2') 
xlabel('t (segundos)');
ylabel('Amplitud');
subplot(1,2,2);
plot(t,y_real);                % Se grafica la respuesta real   
title('y_{real} = Transf\{k_1 x_1 + k_2 x_2\}') 
xlabel('t (segundos)');
ylabel('Amplitud');
figure
plot(t,y_esperada);
hold on
plot(t,y_real,'k--');  
title('Comparación') 
xlabel('t (segundos)');
ylabel('Amplitud');
legend("y_{esp} = k_1 y_1 + k_2 y_2","y_{real} = Transf\{k_1 x_1 + k_2 x_2\}")
_images/dfab7d9407e8295b04e27a4400efefb9dd20c14525d4c5d80a414a38817c1e8d.png _images/99de3d7a47fe52c272c1e51fca3c4cfe5729970e9523df03822a7f380aa5fe0f.png

En este caso el sistema es no-lineal, dado que las gráficas de \(y_{esperada}\) y \(y_{real}\) son diferentes. Finalmente, si las constantes \(k_1\) y \(k_2\) cambian, incluso de signo, para un sistema lineal, el principio de superposición se sigue cumpliendo:

clear
close all
t = [0:0.01:4];               % Vector de tiempo
x1 = sin(2*pi*t);           % Tseñal 1
x2 = exp(-0.5*t).*cos(3.5*t);             % señal 2
k1 = -4.5;                   % constante k1
k2 = 15.25;                %   constante k2
x = k1*x1+k2*x2;      % Señal combinada
% Se deinen las funciones Transf para el sistema
Transf_a = @(x) 2.5*x;
Transf_b = @(x) 4.5*x+3;
Transf_c = @(x) x.^2-5*x+2;
Transf_d = @(x) cos(3*x)+2*x;
Transf_e = @(x) exp(-4.5*x).*cos(20*x);
% Prueba de linealidad
y1 = Transf_a(x1);
y2 = Transf_a(x2);
y_esperada= k1*y1+k2*y2;  % Respuesta esperada para un sistema lineal
y_real = Transf_a(x);             % Respuesta real del sistema
clf;                          % Limpiar figura
subplot(1,2,1);               
plot(t,y_esperada);                % Se grafica la respuesta esperada
title('y_{esp} = k_1 y_1 + k_2 y_2') 
xlabel('t (segundos)');
ylabel('Amplitud');
subplot(1,2,2);
plot(t,y_real);                % Se grafica la respuesta real   
title('y_{real} = Transf\{k_1 x_1 + k_2 x_2\}') 
xlabel('t (segundos)');
ylabel('Amplitud');
figure
plot(t,y_esperada);
hold on
plot(t,y_real,'k--');  
title('Comparación') 
xlabel('t (segundos)');
ylabel('Amplitud');
legend("y_{esp} = k_1 y_1 + k_2 y_2","y_{real} = Transf\{k_1 x_1 + k_2 x_2\}")
_images/a258b27207cdb56c469408ce8a9290b87558134afa5692259036f6f1bbc2a87f.png _images/cc899f6b1b170ca28a3349be648bdb62cff1d62c63d0b3637cce32b5a01a8f01.png