Cómo verificar numéricamente un problema integral de convolución

  1. Educación
  2. Ciencia
  3. Ingeniería
  4. Cómo verificar numéricamente un problema integral de convolución

Libro Relacionado

Señales y sistemas para tontos

Por Mark Wickert

Aquí hay una solución analítica detallada para un problema integral de convolución, seguido de una verificación numérica detallada, usando PyLab del shell interactivo de IPython (la versión QT en particular). La intención de la solución numérica es demostrar cómo las herramientas informáticas pueden verificar las soluciones analíticas a los problemas de convolución.

Configurar PyLab

Para comenzar con PyLab y el shell interactivo de IPython, puede configurar fácilmente las herramientas en Mac OS, Windows y Ubuntu Linux.

La configuración en Ubuntu Linux es quizás la más fácil, ya que puede utilizar el Centro de software de Ubuntu. En los sistemas operativos Mac y Windows, puede utilizar una instalación monolítica, que instala casi todo lo que necesita de una sola vez. Echa un vistazo a la versión gratuita de Enthought, pero hay otras disponibles en la web.

Verificar la convolución de tiempo continuo

Aquí hay un ejemplo de convolución que emplea señales de extensión finita. Se incluyen soluciones analíticas completas, pero la atención se centra en la verificación numérica, en particular, utilizando PyLab y el módulo de código personalizado de libre acceso ssd.py mencionado anteriormente.

Considere la integral de convolución para dos señales de tiempo continuo x(t) y h(t) mostradas.

Crédito: Ilustración de Mark Wickert, PhDPara

llegar a la solución analítica, es necesario dividir el problema en cinco casos, o intervalos de tiempo t donde se puede evaluar la integral para formar una solución contigua por partes. Cuando se unen estos cinco intervalos contiguos, se obtiene una solución completa para todos los valores de t:

A partir del estudio de las integrales de convolución, se descubre que se puede escribir el intervalo de soporte o activo para la salida y(t) en términos de los intervalos de soporte para cada una de las señales de entrada. Este resultado indica que el intervalo de soporte de salida se calcula a partir de la suma de los valores iniciales de x(t) y h(t) y termina en los valores finales. Por lo tanto, el intervalo de soporte para y(t) es como mucho

En este ejemplo, cada caso es tratado como un paso en la solución que sigue:

  • Caso 1: Comienza con t + 1 < 0, o su equivalente t < -1. El producto de las formas de onda (λ) y x(t – λ) no se superponen en la convolución integral integrand, así que para el Caso 1 la integral es sólo y(t) = 0 para t < -1.
  • Caso 2: Considere el siguiente intervalo a la derecha del Caso 1. Este caso está formado por la condición conjunta del borde de la señal en t + 1 ≥ 0 y t + 1 < 3, lo que equivale a escribir -1 ≤ t < 2. El integrando de la integral de convolución es 2 x 3 con los límites de integración que van de 0 a t + 1. Usted encuentra y(t) en este intervalo evaluando la integral de convolución:
  • Caso 3: El siguiente intervalo en la serie es t + 1 ≥ 3 y t – 4 < 0 o 2 ≤ t < 4. El integrando es de nuevo 2 x 3, pero ahora los límites de integración van de 0 a 3. La evaluación de la integral de convolución produce lo siguiente:
  • Caso 4: El intervalo final de superposición de señales se produce cuando t – 4 ≥ 0 y t – 4 < 3, lo que implica que 4 ≤ t ≤ 7. Los límites de integración van de t – 4 a 3, por lo que el resultado integral de la convolución es
  • Caso 5: Se puede ver que cuando t – 4 > 3 o t > 7, no se produce solapamiento entre las señales del integrando, por lo que la salida es y(t) = 0, t > 7.

Recogiendo las distintas piezas de la solución, se obtiene lo siguiente:

Verificar esta solución con Python implica dos pasos: (1) representar gráficamente la solución analítica y (2) compararla con el gráfico de la solución numérica, utilizando las funciones que se encuentran en el módulo de código ssd.py. Aquí están los detalles para completar estos pasos:

  1. Puede escribir esta función directamente en el shell de IPython como se muestra aquí: En[68]: def pulse_conv(t): ….: y = ceros(len(t)) # …: para k,tk en enumerate(t): # make y(t) values ….: if tk >= -1 and tk < 2: …: y[k] = 6*tk + 6 …: elif tk >= 2 y tk < 4: …: y[k] = 18 …: elif tk >= 4 y tk <= 7: ……: y[k] = 42 – 6*tk …: return yNota que el lenguaje Python es sensible a los sangrados, así que presta atención a los sangrados cuando introduzcas este código en IPython. La buena noticia es que IPython entiende las necesidades de Python y hace un buen trabajo de sangrar el bloque de código automáticamente.
  2. Para obtener acceso a las funciones del módulo ssd.py, necesita importar el módulo en su sesión de IPython, usando In[69]: import ssd. Entonces puede acceder a las funciones del módulo usando el prefijo de espacio de nombres ssd. La función y, ny = ssd.conv_integral(x1, tx1, x2, tx2, extent=(‘f’, ‘f’)) realiza la convolución real. Las cuatro variables son NumPy ndarrays. La función devuelve el resultado de la convolución y seguido de ny, como una tupla de Python. Las formas de impulsos rectangulares se crean con la función ssd.rect(n,tau) y el eje de tiempo desplazándose en los argumentos de la función. sumándolo todo, el código para aproximar numéricamente la salida integral de la convolución es el siguiente (sólo se muestran declaraciones de código críticas):En[89]: t = arange(-8,9,.01)En[90]: xc1 = 2*ssd.rect(t-1.5,5)En[91]: hc1 = 3*ssd.rect(t-1.5,3)En[93]: subtrama(211)En[94]: trama(t,xc1)En[99]: subtrama(212)En[100]: trama(t,hc1)En[101]: savefig(‘c1_intputs.pdf’)En[115]: yc1_num,tyc1 = ssd.conv_integral(xc1,t,hc1,t)Soporte de salida: (-16.00, +17.98)En[116]: subtrama(211)En[117]: plot(t,pulse_conv(t))En[123]: subtrama(212)En[125]: plot(tyc1,yc1_num)En[130]: savefig(‘c1_outputs.pdf’)En la siguiente figura se muestran gráficas de las señales x(t) y h(t).Crédito: Ilustración de Mark Wickert, PhD

Finalmente, se grafica la representación numérica de y(t) junto con la solución analítica mostrada.

Crédito: Ilustración de Mark Wickert, PhDF Desde la

perspectiva de la trama, las dos soluciones concuerdan, por lo que se confirma la solución analítica.

Post A Comment

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *