Graficación de señales singulares

En el estudio de Sistemas Lineales Invariantes en el tiempo (SLI) y el procesamiento de señales, se definen dos funciones de vital importancia que son: el escalónu(x)  e impulso\delta(x) unitario.

Esta funciones, conocidas como señales singulares, son particularmente útiles en el tratamiento de SLI en el dominio de Laplace. Además, muchas funciones escritas por tramos se pueden expresar como combinaciones lineales de ellas.

Las definiciones de las funciones escalón  e impulso  unitario en los programas usados en el curso son:

Máxima:

unit_step(x)Maxima
delta(x)

iPython:

Se encuentran definidas en la librería sympy, módulo functions.special, como:

pythonHeaviside(x)
DiracDelta(x)

Sin embargo, la función escalón se puede definir usando la función piecewise() del módulo numpy (que viene por defecto), como:

def u(x): return piecewise(x,[x<0.0,x>=0.0],[0,1])python

Matlab:

heaviside(x)Matlab
delta(x)

De esta manera, usando estas definiciones podemos graficar funciones que se expresan como combinaciones de estas funciones singulares.

Tenga en cuenta que la función impulso no se suele graficar en los programas mencionados, por lo que lo más probable usted no obtenga la representación gráfica teórica de dicha función (flecha unitaria).  Esta normalmente está definida para las operaciones en el dominio de Laplace.

Para la representación de funciones por tramos en función de señales singulares, es necesario tener presente algunas operaciones básicas entre las funciones escalón u(t) y rampa r(t).  La función rampa unitaria se define simplemente como una función lineal t de pendiente unitaria multiplicada por el escalón, esto es: r(t)=tu(t).

Las operaciones más comunes que se realizan son restas con funciones trasladadas. Por ejemplo, si se quiere obtener una función pulso como la ilustrada en la figura 1, simplemente deberemos restar una función escalón con otra trasladada en el valor del ancho del pulso, esto es: p(t)=u(t)-u(t-a). En este caso a=1.

PulsoUnitario

Figura 1. Restas de escalones unitarios u(t)-u(t-a)

Entonces, restas de escalones generan pulsos.

En el caso de restas de rampas: r(t)-r(t-a)=tu(t)-(t-a)u(t-a) generan señales como la ilustrada en la figura 2. (caso para a=1)

RestasRampas

Figura 2. Restas de Rampas: r(t)-r(t-a)

De esta manera, si quiero obtener una señal como la ilustrada en la figura 3 (un “triangulo rectángulo” o un “diente de sierra”), deberé restarle a la señal anterior una señal escalón unitaria trasladada en a, esto es: f(t)=r(t)-r(t-a)-u(t-a)= tu(t)-(t-a)u(t-a)-u(t-a)=t[u(t)-u(t-a)]

SignTriangRect

Figura 3. Función t[u(t)-u(t-a)]

Observe que la expresión simplificada obtenida t[u(t)-u(t-a)] es equivalente a multiplicar la función t por un pulso u(t)-u(t-a), lo cual hace que dicha recta solo exista en el intervalo 0<t<a.

Entonces restas de rampas (con misma pendiente) generan rampas+escalones.  Para generar señales “triangulares rectas” se requiere restar el escalón.

De esta manera se pueden realizar muchas combinaciones de funciones singulares que generan todo tipo de señales por tramos, o dicho de otra manera, siempre será posible escribir señales definidas a tramos en función de señales singulares.  Para la correcta escritura de la función pedida, es aconsejable obtener la expresión funcional tramo a tramo y al final sumar todos los tramos.

Es importante notar que para adquirir la habilidad de escribir funciones por tramos en función de señales singulares es indispensable realizar ejercicios manualmente.  De tal forma usted podrá reconocer “a ojo” la expresión y no será necesario realizar todo el proceso de construcción paso a paso.

Los siguientes ejercicios ilustrarán el proceso y con la ayuda de software graficaremos las funciones obtenidas.

Ejemplo 1:

Represente gráficamente y obbtenenga la expresión en función de señales singulares de la función definida como: f(t)=\begin{cases} 0 & \text{ , si } t<0 \\ t & \text{ , si } 0 \leq t \leq 1 \\ 2 & \text{ , si } t>1 \end{cases}

Solución:

Primero que todo, la representación gráfica de la función por tramos es:

Cap3_graf06a

Para escribir en función de señales singulares, iremos construyendo paso a paso la función por tramos.  En primera instancia, vemos que la función f(t) se puede obtener como la suma de dos funciones: un “triángulo rectángulo” de base 1 y un pulso trasladado en t=1 de amplitud 2.

Entonces, en el tramo: 0<t<1 tenemos: f(t)_1=tu(t)-(t-1)u(t-1)-u(t-1)

Para el tramo: t>1: f(t)_2=2u(t-1)

Sumando las dos señales obtenidas, nos queda:

f(t)= tu(t)-(t-1)u(t-1)-u(t-1)+2u(t-1)=tu(t)-(t-1)u(t-1)+u(t-1)

Entonces, la función definida por tramos se puede escribir en función de señales singulares como:

f(t)=tu(t)-(t-1)u(t-1)+u(t-1)

Observe que simplificando, se obtiene: f(t)=t[u(t)-u(t-1)]+2u(t-1) que equivale justamente a lo que se expresó arriba: “un triángulo rectángulo+un escalón trasladado de amplitud 2”.

El código correspondiente para obtener la gráfica en Python es:

# Graficas de funciones singulares
from matplotlib.pyplot import *
from numpy import *

# funcion escalon unitario
def u(t): return piecewise(t,[t<0.0,t>=0.0],[0,1])

# funcion f(t)
def f(t): return t*(u(t)-u(t-1))+2*u(t-1)
 
t=linspace(-1,5,1000)
plot(t,f(t),'k',label=r'$f(t)$',lw=2)
xlim(-1,3);ylim(0,2.2);
legend(loc='best');python
title(r'Funci\'on $f(t)=tu(t)-(t-1)u(t-1)+u(t-1)$')

Cuyo resultado es:

Ejem1_SigSing

Ejemplo 1

En Máxima, se escribirá como:

(%i1) f(t):=t*unit_step(t)-(t-1)*unit_step(t-1)+unit_step(t-1);
      plot2d(f(t),[t,-1,3],[y,0,2.2])Maxima


Y en Matlab:

>>t=0:0.1:5; 
>>f=t.*heaviside(t)-(t-1).*heaviside(t-1)+heaviside(t-1);Matlab
>>plot(t,f);