Ecuación en diferencias

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: 3 y(n) - 5 y(n-1) + 2 y(n-2) = x(n) + 2 x(n-1), con condiciones iniciales: y(-1)=1, y(-2)=-1, a la señal de entrada x(n)=(2/3)^nu(n).

Solución: Se verifica la solución analítica:
y1 = (14)*(1)^n-(34/3)(2/3)^n-n(8/3)(2/3)^n.

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

No Comments Yet.