No entiendo/encuentro como llegaste a esa formula.
Aprovecho que las antitransformadas Z salen con relaciones de recurrencia.
Conociendo la
transformada del seno , la recurrencia queda:
X
n - 2*cos(a)*X
n-1 + X
n-2 = sin(a)*E
n-1Usando de la excitación un impulso, simplificando y ordenando llegás a la expresión que puse.
Puedo pensar en matematica discreta pero sigo sin ver el aproximado de la misma. Y sino podrías dar un ejemplo de como serian las primeras 4 resultados de esa ecuación?, Segun mi entendimiento seria:
Xn = k*Xn-1 - Xn-2
n = 0
Xn = k*0 - 0
n = 1
Xn = 2*cos(ang)*A*sen(ang) - 0
n = 2
Xn = ¿?¿??¿ - 2*cos(ang)*A*sen(ang)
Si me decís que tengo que variar el angulo de coseno y seno, significa que necesito implementar 2 tablas, una de seno y otra de coseno! para obtener el seno ¿?¿?
O sigue entrando un A*sen(ang) ?
No, como k es una constante se evalúa al inicio de acuerdo al ángulo de avance deseado.
Lo mismo con X
1 = A*sen(ang) , es un valor inicial.
Un ejemplo en C (para PC) largando una lista de valores puede ser:
#include <stdio.h>
#include <math.h>
void main(void){
// Declaracion de variables
int n ;
double k , ang , A ;
double xn1 , xn ;
// Inicializacion
ang = 4*M_PI/180 ; // Angulo de avance de 4°
A = 1000 ; // Amplitud 1000
k = 2*cos(ang) ;
xn1 = 0 ; xn = A*sin(ang) ; // Valores iniciales
// Salida de 200 valores , para no hacer
// un bucle infinito
printf("%.3lf\n%.3lf\n",xn1,xn); // Muestro los dos
// primeros
for(n=2;n<200;n++){
xn = -xn1 + k*(xn1=xn) ; // Esto es la única operación que se repite
printf("%.3lf\n",xn) ;
}
}
Yo soy un amante de C porque los operadores permite bonitas fórmulas compactas (aunque díficil de interpretar)

Por ejemplo, si a la recursión anterior la trabajamos un poco algebraicamente llegamos a la siguiente:
dn = dn-1 - k*xn
xn = xn-1 + dn
Esas dos líneas , en C equivalen a: xn += dn -= k*xn ;
Este ejemplo genera exactamente la misma secuencia que el anterior (ojo que la definicion de k es diferente)
#include <stdio.h>
#include <math.h>
void main(void){
// Declaracion de variables
int n ;
double k , ang , A ;
double xn , dn ;
// Inicializacion
ang = 4*M_PI/180 ; // Angulo de avance de 4°
A = 1000 ; // Amplitud 1000
k = 2*sin(ang/2);
k *= k ;
xn = 0 ; dn = A*sin(ang) ; // Valores iniciales
// Salida de 200 valores , para no hacer
// un bucle infinito
printf("%.3lf\n",xn); // Muestro el valor inicial
for(n=1;n<200;n++){
xn += dn -= k*xn ;
printf("%.3lf\n",xn) ;
}
}
Incluso puede implementarse sin ni siquiera calcular al inicio senos y cosenos sino manejarse con aproximaciones, ya que el avance angular siempre es un valor bajo.
En todos lados veo que usan series de taylor, o se puede usar los polinomios de Chebyshev, pero la anti trasformada como la planteas no la vi nunca.
Eso lo usás para calcular la función en un punto y lo lógico es usarlo para tablas de lookup o interpolar una tabla.
Acá la antitransformada es para hallar la ley de recurrencia y meterla en un bucle infinito.
Por mi:
Si quiere un calculo con una ecuación en diferencia, que cargue una tabla con la diferencia entre un punto y otro, y no el valor total. Algo simple y sigue siendo una ecuación en diferencia, el concepto esta, es culpa de el docente por no ser especifico.
Y por supuesto, la suma de todos los valores que cargues en la tabla te debe dar 0 si o si. Y nunca sobrepasar los limites 0 y el limite superior que elijas ( ejemplo 4095 )
Ojo, "ecuación en diferencias"
se refiere a ecuaciones de este tipo , no al incremento respecto del valor anterior. Salvo claro, que el docente haya abusado del lenguaje.
Saludos.