Sin categoría

Resolver ecuaciones diferenciales en tiempo discreto con Matlab

Un sistema LTI (lineal e invariante en el tiempo) de tiempo discreto puede ser descrito mediante una ecuación diferencial lineal (ó ecuación lineal en diferencias) con coeficientes constantes de la forma:

La ecuación (1) describe un método recursivo para calcular la salida y[n], dado los valores de la entrada x[n] y valores previos de la misma salida y[n]. En la práctica, esta ecuación se calcula hacia adelante en el tiempo, de n=-∞ a n=∞. En consecuencia, otra forma de escribir esta ecuación es:

Una solución para la ecuación (2) puede ser obtenida de la forma:

La parte homogénea yh[n] está dada por:

Donde zk, k=1,…,N son N raíces (también conocidas como frecuencias naturales) de la ecuación característica:

La ecuación característica es importante porque determina la estabilidad del sistema. Si las raíces zk satisfacen la siguiente condición:

Entonces el sistema causal de la ecuación (2) es estable. La solución particular, yp[n], está determinada por la parte derecha de la ecuación (1), para lo cual utilizaremos la transformada z (z-transform) en la determinación de la solución de una ecuación en diferencias.

Matlab solving

Una función llamada filter está disponible en Matlab para resolver Discrete-Time difference equations, dados los valores de la entrada y los coeficientes de la ecuación en diferencias. En su forma más simple la función es invocada por:

y=filter(b,a,x)

Donde b y a son las matrices de los coeficientes de la ecuación (1), y x es la matriz de la secuencia de entrada. Debemos asegurarnos de que el coeficiente a0 no sea igual a cero.

Para determinar y graficar la respuesta al impulso, Matlab además provee la función impz:

h=impz(b,a,n);

Calcula muestras de la respuesta al impulso del filtro en los índices de muestra dados en n con coeficientes de numerador en b y coeficientes de denominador en a.

Ejemplo 1.

Dada la siguiente ecuación en diferencias:

  1. Calculate and plot the impulse response h[n] at n=-20,…,100
  2. Calculate and plot the unit step response s[n] at n=-20,…,100
  3. Is the system specified by h[n] stable?

Solution:

  1. To determine h[n] we use the following script:

n=[-20:120];
a=[1,-1,0.9];
b=[1];
h=impz(b,a,n);
stem(n,h)
grid
xlabel(‘n’); ylabel(‘h[n]’)

The script yields:

Figure 1. Impulse response h[n] for example 1.
  1. 2. To determine s[n] we use the following script:

n=[-20:120];
a=[1,-1,0.9];
b=[1];
x=stepseq(0,-20,120);
s=filter(b,a,x);
stem(n,s)
xlabel(‘n’); ylabel(‘s[n]’);

The script yields:

Figure 2. Step response s[n] for example 1.
  1. Is the system specified by h[n] stable?

From Figure 1 we see that h[n] is practically zero n>120. Hence the sum:

Can be determined with the following script:

sum(abs(h))

This yields:

ans = 14.8785

That is to say:

This result implies that the system is stable. An alternate approach is to use the stability condition of the roots:

z=roots(a);
magz=abs(z)

magz =

0.9487
0.9487

Since the magnitude of both roots are less than one, the system is stable.

Puede estar interesado también en:

Revisión literaria hecha por:

Prof. Larry Francis Obando – Technical Specialist – Educational Content Writer

Se hacen trabajos, se resuelven ejercicios!!

WhatsApp:  +34633129287  Atención Inmediata!!

Twitter: @dademuch

Copywriting, Content Marketing, Tesis, Monografías, Paper Académicos, White Papers (Español – Inglés)

Escuela de Ingeniería Electrónica de la Universidad Simón Bolívar, USB Valle de Sartenejas.

Escuela de Ingeniería Eléctrica de la Universidad Central de Venezuela, UCV CCs

Escuela de Turismo de la Universidad Simón Bolívar, Núcleo Litoral.

Contacto: España. +34633129287

Caracas, Quito, Guayaquil, Jaén. 

WhatsApp:  +34633129287     

Twitter: @dademuch

FACEBOOK: DademuchConnection

email: dademuchconnection@gmail.com

21 comentarios sobre “Resolver ecuaciones diferenciales en tiempo discreto con Matlab”

Deja un comentario