Ecuación en diferencias
clc, close all, clear all
disp(‘Ecuación en diferencias de 2do orden:’);
disp(‘a0 y(n) + a1 y(n-1) + a2 y(n-2) = b0 x(n) + b1 x(n-1)’);
disp(‘Variable independiente -tiempo (n = ni:nf) para la y(n)’);
n=input(‘ni:nf : ‘);
disp(‘Ingrese los coeficientes ak’);
a=input(‘Utilizar corchetes [a0 a1 a2]: ‘);
disp(‘Ingrese los coeficientes bk’);
b=input(‘Utilizar corchetes [b0 b1]: ‘);
ci=input(‘Ingrese las condiciones iniciales [y(-1) y(-2)]: ‘);
x=input(‘Ingrese la señal de entrada x(n): ‘);
sw=input(‘x(n) es similar (1) o diferente (2) a una de las raices de la solución homogenea? ‘);
disp(‘Solución total: y(n) = C1*r1^n + C2*r2^n + yp(n). yp(n)=K*x(n) o yp(n)=K*n*x(n)’);
disp(‘Ingrese los coeficientes C1 y C2 de su solución analítica’);
C=input(‘Utilizar corchetes [c1 c2]: ‘);
disp(‘Ingrese las raices r1 y r2 de la ecuación característica’);
r=input(‘Utilizar corchetes [r1 r2]: ‘);
K=input(‘Ingrese la constante K de la solución particular: ‘);
% Solución analítica
if sw==1,
y1 = C(1,1)*r(1,1).^n + C(1,2)*r(1,2).^n + K*n.*x,
else
y1 = C(1,1)*r(1,1).^n + C(1,2)*r(1,2).^n + K*x,
end
% Solución de Matlab
ci = filtic(b,a,ci);
y2 = filter(b,a,x,ci)
subplot(2,1,1), stem(n,y1,‘LineWidth’,2),
axis([min(n)-1,max(n)+1,min(y1)-2,max(y1)+2]);
xlabel(‘n’); ylabel(‘y(n)’); title(‘Solución analítica y(n)’);
ntick = [n(1):n(length(n))];
set(gca,‘XtickMode’,‘manual’,‘XTick’,ntick,‘FontSize’,10)
subplot(2,1,2), stem(n,y2,‘LineWidth’,2),
axis([min(n)-1,max(n)+1,min(y2)-2,max(y2)+2]);
xlabel(‘n’); ylabel(‘y(n)’); title(‘Solución y(n) de Matlab’);
ntick = [n(1):n(length(n))];
set(gca,‘XtickMode’,‘manual’,‘XTick’,ntick,‘FontSize’,10)
dif=y1-y2, % Solución analítica correcta si la diferencia y1(n)-y2(n) es 0
% Señal x(n)
function y=delta(n),
y = 1.*(n==0);
end
function y=escalon(n)
y=1.*(n>=0);
end
Nota. Cambiar la comilla simple por apóstrofe en la hoja de editor de Matlab.
Ejemplo: Calcular la respuesta del sistema caracterizado por la ecuación en diferencias: , con condiciones iniciales:
, a la señal de entrada
.
Solución: Se verifica la solución analítica:.
Ejecutando el programa, se ingresan los siguientes datos:
Ecuación en diferencias de 2do orden: a0 y(n) + a1 y(n-1) + a2 y(n-2) = b0 x(n) + b1 x(n-1)
Variable independiente -tiempo (n = ni:nf) para la y(n)
ni:nf : 0:11
Ingrese los coeficientes ak
Utilizar corchetes [a0 a1 a2]: [3 -5 2]
Ingrese los coeficientes bk Utilizar corchetes [b0 b1]: [1 2]
Ingrese las condiciones iniciales [y(-1) y(-2)]: [1 -1]
Ingrese la señal de entrada x(n): (2/3).^n.*escalon(n)
x(n) es similar (1) o diferente (2) a una de las raices de la solución homogenea? 1
Solución total: y(n) = C1*r1^n + C2*r2^n + yp(n). yp(n)=K*x(n) o yp(n)=K*n*x(n)
Ingrese los coeficientes C1 y C2 de su solución analítica
Utilizar corchetes [c1 c2]: [14 -34/3]
Ingrese las raices r1 y r2 de la ecuación característica
Utilizar corchetes [r1 r2]: [1 2/3]
Ingrese la constante K de la solución particular: -8/3