
a) Resolver la siguiente ecuación en diferencias, siendo u(k) una entrada impulsiva (delta de Kronecker [1]):
$y(k)=0.5 y(k-1) - 0.25 y(k-3) - u(k) -1.5 u(k-1) + 2 u(k-2)$
b) Obtener $y(k)$ mediante la simulación de la ecuación en diferencia (comando filter), mediante la función de transferencia (comando impulse) y mediante la resolución de la ecuación en diferencias (programando la solución de dicha ecuación).
c) Calcular $y(\infty)$ mediante el teorema del valor final y comprobar con la solución obtenida en el apartado anterior, haciendo $\lim_{ k \rightarrow \infty} \; y(k)$, que es resultado es correcto.
Resolución del apartado a):
Haciendo la transformada $\mathbf{Z}$ a la ecuación en diferencias anterior, obtenemos:
$Y(z)=0.5 z^{-1} Y(z) - 0.25 z^{-3} Y(z) - U(z) - 1.5 z^{-1} U(z) + 2 z^{-2}U(z)$
$Y(z) (1 - 0.5 z^{-1} + 0.25 z^{-3}) = U(z) (-1 - 1.5 z^{-1} + 2 z^{-2})$
$Y(z)=\dfrac{(-1 - 1.5 z^{-1} + 2 z^{-2})}{(1 - 0.5 z^{-1} + 0.25 z^{-3})} U(z)$
Como $u(k) = \delta (k)$ tenemos que $U(z) = 1$. Por lo tanto:
$ Y(z) = \dfrac{(-1 - 1.5 z^{-1} + 2 z^{-2})}{(1 - 0.5 z^{-1} + 0.25 z^{-3})} = \dfrac{-z^3-1.5z^2+2z}{z^3-0.5z^2+0.25}$
Para obtener $y(k)$ debemos calcular $\mathbf{Z^{-1}}\left \{ Y(z) \right \}$, para ello empezaremos obteniendo la descomposición en fracciones simples de $\dfrac{Y(z)}{z}$.
Las raices de la expresión $1 - 0.5 z^{-1} + 0.25 z^{-3} = 0$ son: $\left \{ \begin{array}{l}z = 0.5 +- 0.5j \\ z = 0.5\end{array} \right.$
$\dfrac{Y(z)}{z} = \dfrac{-z^2-1.5z^1+2}{z^3-0.5z^2+0.25} = \dfrac{A}{(z+0.5)} + \dfrac {Bz+C}{(z-0.5-0.5j)(z-0.5+0.5j)} = \dfrac{A}{(z+0.5)} + \dfrac {Bz+C}{(z-0.5)^2 + {0.5}^2}$
Como A es el residuo de una raiz real simple, podemos calcularlo como:
$\left. A = \dfrac{(-z^2-1.5z^1+2)}{(z+0.5)((z-0.5)^2 + {0.5}^2)}(z+0.5) \right | _ {z=-0.5} = \dfrac {-(-0.5)^2-1.5 (-0.5)+2}{(-0.5-0.5)^2+{0.5}^2}= 2$
Para calcular B y C podemos sumar la expresión $\dfrac{Y(z)}{z}$ y compararla con la original:
$\dfrac{Y(z)}{z} = \dfrac{A(z^2-z+0.5)+(Bz+C)(z+0.5)}{(z+0.5)((z-0.5)^2 + {0.5}^2)} = \dfrac{A(z^2-z+0.5)+Bz^2+0.5Bz+Cz+0.5C}{z^3-0.5z^2+0.25}$
Como los denominadores son idénticos (debe ser siempre así), comparamos los numeradores:
${-z^2-1.5z^1+2} = z^2(A+B) + z (-A+0.5B+C) + 0.5(A+C)$
Comparando término a término, debe cumplirse:
$\begin{array}{rcl}-1 &=& A+B \\ -A+0.5B+C &=& -1.5 \\ 0.5(A+C)&=&2 \end{array}$
Tenemos 3 ecuaciones con 3 incógnitas, por lo que podemos resolver A, B y C. Como A ya lo hemos calculado antes, A=2, podemos obtener B y C despejando:
$ B= -1-A = -1 -2 = -3$
$C= \dfrac {2-0.5A}{0.2} = \dfrac {2-0.5 \cdot 2}{0.2} = 2$
Se puede comprobar que $-A+0.5B+C = -2+0.5 \cdot (-3) + 2 = 1.5$
Por lo tanto,
$\dfrac {Y(z)}{z} = \dfrac{2}{(z+0.5)} + \dfrac {-3z+2}{(z-0.5)^2 + {0.5}^2} \Rightarrow Y(z) = \dfrac{2z}{(z+0.5)} + \dfrac {-3z^2+2z}{(z-0.5)^2 + {0.5}^2}$
La descomposición en fracciones simples también puede realizarse mediante el comando residue de MATLAB. Para ello tecleamos:
B=[-1,-1.5,2]; A=[1,-0.5,0,0.25]; % Polinomios numerador y denominador de Y(z)/z
[R,P,K]=residue(B,A)
Que nos retorna:
R =
-1.5 - 0.5i
-1.5 + 0.5i
2
P =
0.5 + 0.5i
0.5 - 0.5i
-0.5
K =
[]
Por lo tanto la descomposición en fracciones simples es:
$\dfrac {Y(z)}{z} = \dfrac {(-1.5-0.5i)}{(z-0.5-0.5j)} + \dfrac{(-1.5+0.5i)}{(z-0.5+0.5j)} + \dfrac{2}{(z+0.5)}$
Las dos primeras fracciones tienen residuos y polos complejos, con lo que no nos servirán para aplicar las tablas de transformadas. Para corregir esto debemos realizar la suma de dichas fracciones. Podemos hacerlo con MATLAB:
num = R(1)*[1,-P(2)]+R(2)*[1,-P(1)]
Cuyo resultado es [3,2], esto es, $3z+2$.
El denominador podemos hacerlo como "suma por diferencia, diferencia de cuadrados":
$(z-0.5-0.5j)(z-0.5+0.5j) = (z-0.5)^2 + {0.5}^2$
Es decir, obtenemos exactamente la misma expresión que antes:
$\dfrac {Y(z)}{z} = \dfrac{2}{(z+0.5)} + \dfrac {-3z+2}{(z-0.5)^2 + {0.5}^2} \Rightarrow Y(z) = \dfrac{2z}{(z+0.5)} + \dfrac {-3z^2+2z}{(z-0.5)^2 + {0.5}^2}$
Una vez descompuesta Y(z) en fracciones simples, podemos buscar cada una de estas en las tablas de transformadas para realizar la transformada $\mathbf{Z^{-1}}$:
$\mathbf{Z^{-1}}\left \{ \dfrac{2}{(z+0.5)} \right \} = 2(-0.5)^k$
Para obtener $\mathbf{Z^{-1}}\left \{ \dfrac{-3z^2+2z}{(z-0.5)^2+0.5^2} \right \}$ debemos realizar algunas operaciones previamente:
Si la parte real del polo es $\sigma = -0.5$, y la parate imaginaria $\omega = 0.5$,
el módulo es $c = \sqrt {\sigma ^2 + \omega ^2} = \sqrt {(-0.5)^2 + 0.5^2} = sqrt{0.5}$.
$sen(b) = \omega / c = 0.5 / \sqrt{0.5} = \sqrt{0.5}$,
$cos(b) = \sigma / c = 0.5 / \sqrt{0.5} = \sqrt{0.5}$
$b = arccos(\sqrt{0.5})$
Necesitamos obtener un numeradr igual a $z^2 -c \cdot z \cdot cos(b) = z^2 - \sqrt{0.5} \cdot z \cdot \sqrt{0.5} = z^2 -0.5 z$ para obtener una expresión de la forma $c^k\; cos(bk)$, y un numerador igual a $c \cdot z \cdot sen(b) = \sqrt{0.5} \cdot z \cdot \sqrt{0.5} = 0.5 z$ para obtener una expresión de la forma $c^k\; sen(bk)$.
$\mathbf{Z^{-1}}\left \{ \dfrac{-3z^2+2z}{(z-0.5)^2+0.5^2} \right \} = (-3) \mathbf{Z^{-1}}\left \{\dfrac{z^2-\dfrac {2}{3}z}{(z-0.5)^2+0.5^2} \right \} = (-3) \mathbf{Z^{-1}}\left \{\dfrac{z^2 -0.5z+0.5z-\dfrac {2}{3}z}{(z-0.5)^2+0.5^2} \right \} =$
$= -3 \mathbf{Z^{-1}}\left \{\dfrac{z^2 -0.5z}{(z-0.5)^2+0.5^2} \right \}+ \mathbf{Z^{-1}}\left \{ \dfrac{0.5z}{(z-0.5)^2+0.5^2}\right \}$
Ya tenemos las 2 expresiones buscadas, con lo que podemos calcular la transformada $\mathbf{Z^{-1}}$de cada una de ellas:
$-3 \mathbf{Z^{-1}}\left \{\dfrac{z^2 -0.5z}{(z-0.5)^2+0.5^2} \right \} = (-3)\sqrt{0.5}^k\; cos(bk)$
$\mathbf{Z^{-1}}\left \{ \dfrac{0.5z}{(z-0.5)^2+0.5^2}\right \} = \sqrt{0.5}^k\; sen (bk)$
Con este paso ya hemos concluido y podemos poner la expresión definitiva de y(k):
$y(k) = 2 (-0.5)^k + 0.5^{k/2} \left ( sen(bk)-3cos(bk) \right )$, siendo $b = arccos(\sqrt{0.5})$.
Resolución del apartado b):
En primer lugar vamos a realizar la simulación creando la funcíón de transferencia mediante el comando de Matlab "tf".
El comando tf crea una función de transferencia con los exponentes positivos a partir de los coeficientes que acopañan a Z en el numerador y el denominador.
La función de transferencia ya la tenemos calculada anteriormente:
$ G(z) =\dfrac{-z^3-1.5z^2+2z}{z^3-0.5z^2+0.25}$
Por lo que los coeficientes del numerador y denominador quedarían así:
Numerador --> [-1, 1.5, 2, 0]
Denominador-->[1, -0.5, 0, 0.25]
La función tf necesita un tercer parámetro que se corresponde con el periodo de muestreo. En nuestro caso no tendremos periodo de muestreo y lo indicaremos con un vector vacio [] como tercer parámetro.
La función quedaría de la siguiente forma:
G= tf([-1, 1.5, 2, 0], [1, -0.5, 0, 0.25], []);
Para simular esta función con una entrad impulso usamos el comando de Matlab "impulse", al que pasamos la función G como parámetro.
[y1,k]= impulse(G);
y1 contendrá la salida del sistema tras aplicarle la función impulso como entrada.
k tiene un vector de coordenadas en el eje X con una serie de valores que da Matlab para ajustar la gráfica de una forma correcta.
A continuación realizaremos la misma simulación con el comando "filter"
El comando Filter de Matlab se utiliza para crear secuencias de ponderación. Sus tres parámetros son el vector A de constantes que acompañan a las Y(k), el vector B de constantes que acompañan a las U(k) y un tercer vector como entrada al sistema.
En nuestro caso el vector de entrada será una delta de Kronecker. Para simularla crearemos un vector con todas las componentes a cero excepto la primera, simulando el comportamiento de la delta.
[1 0 0 0 0 0 0 0 0 0 0 .....]
Para ajustar el tamaño del vector en todas las representaciones utilizaremos el vector k obtenido con tf.
delta=zeros(size(k));
delta(1)=1;
A continuación creamos los vectores con los coeficientes, tomándolos directamente de la ecuación en diferencias después de agrupar las Y(k) y U(k) a un lado y a otro de la igualdad:
$$y(k)-0.5 y(k-1) +0.25 y(k-3) =- u(k) -1.5 u(k-1) + 2 u(k-2)$$
B=[-1, -1.5, 2];
A=[1, -0.5, 0, 0.25]
Para simular capturamos en y2 los valores de la salida del sistema.
y2=filter(B,A,delta);
La tercera simulación la realizamos con la ecuación obtenida en el apartado A de forma manual.
b=arcos(sqrt(0.5));
y3=2*(-0.5).^k+0.5.^(k/2).*(-3*cos(b*k)+sin(b*k));

Instrucciones en Matlab
%funcion de transferencia
G=tf([-1, -1.5, 2, 0],[1,-0.5,0,0.25],[]);
[y1,k]=impulse(G);
%funcion en diferencias
delta=zeros(size(k));delta(1)=1;
B=[-1,-1.5,2];
A=[1,-0.5,0,0.25];
y2=filter(B,A,delta);
%funcion calculada
b=acos(sqrt(0.5));
y3=2*(-0.5).^k+0.5.^(k/2).*(-3*cos(b*k)+sin(b*k));
plot(k,y1,'ro');
hold on
plot(k,y2,'bx');
plot(k,y3,'g+');
xlabel('k'),ylabel('Salida y(k)')
legend('Impulse','Filter','Ecuación')
Resolución del apartado c):
Haciendo el límite a y(k) obtenida en el apartado a) tenemos:
$\lim_ {k \rightarrow \infty}\, y(k) = \lim_ {k \rightarrow \infty} \, 2(-0.5)^k + 0.5^{k/2} \left ( sen(bk)-3cos(bk) \right ) = 0.$
Es 0 porque tanto $0.5^k$ como $0.5^{k/2}$ tienden a 0 al aumentar k, y la expresión formada por el seno y el coseno está acotada.
Aplicando el Teorema del Valor Final:
$y(\infty) = \lim_ {z \rightarrow 1} {\dfrac {(z-1)}{z}\, Y(z)} = \lim_ {z \rightarrow 1} \, \dfrac {(z-1)}{z} \, \dfrac{(-z^3-1.5z^2+2z)}{(z^3-0.5z^2+0.25)} = \dfrac{0 (-1-1.5+2)}{1 (1-0.5+0.25)} = 0$
Como es lógico se obtiene el mismo resultado que además coincide con el de la simulación.
Enlaces:
[1] http://es.wikipedia.org/wiki/Delta_de_Kronecker