SERIES DE FOURIER
SERIES DE FOURIER
TABLA DE CONTENIDO
I.
Introducción …………………………………………………………..2
II.
Objetivos……………………………………………………………….3
III.
Marco teórico………………………………………………………….4
IV.
Desarrollo de Series de Fourier…………………………………….7 I. Series de Fourier complejas…………………………………7 II. Señales en Matlab………………………………………….12 III. Serie de Fourier……………………………………………..21 i. Método analítico……………………………………….........21 ii. Programando en Matlab……………………………………23
V.
Conclusión……………………………………………………………28
VI.
Bibliografía……………………………………………………………29
1
SERIES DE FOURIER
I.
INTRODUCCION
La idea básica de las series de Fourier es que toda función o señal periódica de periodo T puede ser expresada como una suma trigonométrica de senos y cosenos del mismo periodo. Descubierta a finales del siglo XVIII por Jan Baptiste Joseph Fourier (1768 - 1830) para tratar la solución de problemas de valores en la frontera en la conducción del calor, hoy día sus aplicaciones son amplias en telecomunicaciones, audio, video, imagen (médica, satelital), geofísica, entre otras. La noción de señal es bastante amplia y aparece en diferentes situaciones en las cuales ciertas cantidades varían en el tiempo o el espacio de una magnitud física o de otra naturaleza. Por tanto está ligada al concepto de función. El análisis armónico también conocido como el Análisis de Fourier juega un papel muy importante en la Ingeniería, en los sistemas de telecomunicaciones, y a través del uso de espectros de frecuencia. En este documento se presentan algunos ejemplos y ejercicios de la realización manual y en el software MATLAB, el cual es un programa de cálculo científico de gran versatilidad y facilidad de uso con un gran numero de herramientas orientadas a una amplia diversidad de aplicaciones entre ellas la modelación y representación grafica de las series de Fourier.
2
SERIES DE FOURIER
II.
OBJETIVOS
OBJETIVO GENERAL Desarrollar funciones con series de Fourier de forma analítica y en el software Matlab. OBJETIVOS ESPECIFICOS Analizar las aproximaciones de las funciones combinaciones lineales de funciones trigonométricas.
periódicas
mediante
Representar funciones en términos de series de Fourier. Establecer las herramientas fundamentales para el manejo de las series de Fourier de una función periódica con Matlab.
3
SERIES DE FOURIER III.
MARCO TEORICO
Una serie de Fourier es una ampliación de una función periódica en términos de una suma infinita de senos y cosenos. Estas series hacen uso de las relaciones de ortogonalidad de las funciones seno y coseno. El cálculo y estudio de series de Fourier es extremadamente útil como una manera de romper una función arbitraria periódica a un conjunto de términos simples que pueden ser conectados, resuelto individualmente, y luego recombinados para obtener la solución al problema original o una aproximación a ella, la precisión que se desea o la más útil. Sea f(t) una función periódica de periodo T, llamaremos SERIE DE FOURIER asociada a f(t) a una serie trigonométrica. La serie puede desarrollarse para igualar cualquier función deseada durante cualquier duración finita de tiempo mientras la componente fundamental de la serie pasa por un ciclo completo. Si llamamos t1 al principio y t2 al final del período T de la componente fundamental será t2 – t1 = T y con ello: wT = 2p ; T = 2p/w ó w = 2p/T El método de encontrar los coeficientes, llamado análisis de Fourier, se basa en que las funciones seno y coseno constituyen un sistema ortogonal, esto es el promedio de sus productos en cruz es cero. Y con esto resulta:
4
SERIES DE FOURIER Casos particulares Podemos demostrar que hay condiciones de simetría que permiten establecer la existencia o no de determinados términos en la serie, lo que nos ahorra trabajo en el cálculo. Función impar: f(x) = -f(-x) sólo tienen términos en senos, haciendo uso del hecho que f(t) = -f(-t) = -f(t'):
Y también
Función par: f(x) = f(-x) sólo tienen términos en cosenos y la constante.
Y también.
LA SERIE DE FOURIER COMPLEJA Comenzamos recordando la formula de Euler3: eiµ = cos µ + i sin µ. Si tenemos en cuenta las paridades de las funciones sin µ y cos µ, entonces resulta que podemos invertir la relación de Euler de la siguiente forma: Fig. 1. Ejemplo de una grafica de una serie de Fourier
5
SERIES DE FOURIER
Entonces las funciones {eiµ; e¡iµ ] también forman un sistema libre. En realidad, la sucesión de funciones {einµ ª1 n=¡1 }no solo forma un sistema libre sino que es además un sistema ortogonal de funciones respecto del producto interior de
Ahora, dada una señal arbitraria x(t) 2 L2(¡¼; ¼), podemos asociarle su serie formal) de Fourier compleja:
6
SERIES DE FOURIER IV.
DESARROLLO DE SERIES DE FOURIER
IV.I. Series de Fourier complejas Determina la serie de Fourier Compleja: ()
1.
(
)
()
T=3
∫
∫
[
∫
]|
[
( )
( )
]
]
∫ 𝑓′(𝑡)
[ [
[
(
(
)
)
(
(
)
)
[ (
)
(
)
)
(
)
)
]
t
𝑒
𝑖𝑛 𝑡
-
1
𝑒
𝑖𝑛 𝑡
+
0
𝑒
𝑖𝑛 𝑡
)
(
(
)
[ (
7
𝜋
+
)
] (
3 0
(
( (
] |
𝑔 (𝑡) 𝑑𝑡
] )
)
(
)
𝜋
𝜋
( 𝑖𝑛
𝜋
( 𝑖𝑛
𝜋
) )
SERIES DE FOURIER La serie de Fourier Compleja es
( )
2.
()
∑ (
(
{
)
)
()
T=4
[∫
∫
[ (
)
]
(
)]
[∫
[
)
(
|
(
)
( (
[
∫
(
[(
[ ∫
(
) )
)
)
( (
∫
]
]
[
(
]
[ ∫
(
)
)
∫
(
)
)]
(
)
(
8
| ]
[ ]
| ]
)
|
) )
]
SERIES DE FOURIER [
(
)
(
)
(
)
(
)
[ ]
]
La serie de Fourier Compleja es
() 3.
() (
)
()
T=6
[∫(
[(
∫(
)
)
]
[∫
( ) (
( )
)
∫
)]
[ |
]
[
]
[∫
| ]
[
∫
𝑓′(𝑡)
]
𝑔 (𝑡) 𝑑𝑡 𝜋
+
t
𝑒
𝑖𝑛 𝑡
-
1
𝑒
𝑖𝑛 𝑡
+
0
𝑒
𝑖𝑛 𝑡
𝜋
𝜋
9
]
𝜋
( 𝑖𝑛 ) 𝜋
( 𝑖𝑛 )
SERIES DE FOURIER [
[
[
[
(
)
(
)
(
)
(
)
(
)
(
[
|
(
(
)
)
(
(
(
(
)
)
]
)
(
(
)]
)
)
(
)
(
)
(
) (
(
)
)
] (
)
(
)
La serie de Fourier Compleja es ( )
)
] (
)
)
(
(
)| ] (
∑ (
10
)
)
SERIES DE FOURIER
4.
() (
)
()
T=5
[∫
]
| ]
[
∫
[ (
[∫
[
(
)
(
)
[
] (
(
(
(
)
)
]
(
]
[
[
)
)
La serie de Fourier Compleja es ()
)
(
)
(
)
(
(
)
)]
∑ (
)
11
]
)
]|
SERIES DE FOURIER
IV.II. Señales en Matlab 1. >> t=0 :0.01 :pi;
Los : se usan para generar matrices, indica todas las filas o todas las columnas de esta; en una función con los dos puntos se colocan el primer y ultimo valor que esta tomara y el incremento por defecto será 1, pero si se desea usar un incremento diferente se coloca entre estos dos números en este caso, el incremento será de 0.01.
>> y=t;
El ; separa filas en una definición de matriz, suprime salida cuando se usa en comandos, cabe recordar que la matriz es el tipo de datos principal que se usa en Matlab y puede retener información numérica así como otros tipos de información.
>> for n=-3:3
Los bucles se usan cuando se necesita repetir un conjunto de instrucciones muchas veces, Matlab soporta dos tipos de bucles uno de ellos es for, este es la opción mas sencilla cuando se sabe cuantas veces se repetirá el bucle, la primera línea de su estructura identifica el bucle y define el indice en este caso n, que es un numero que cambia en cada paso a traves del bucle. Después viene el grupo de comandos que se quiere ejecutar. Finalmente la terminación del bucle se identifica mediante el comando end.
tt=t+n*pi hold on
hold : congela la grafica actual, de modo que se puede recubrir una grafica adicional, la creación de una grafica con mas de una línea se puede lograr en muchas formas. Por defecto, la ejecución de un segundo enunciado plot (comando que crea una grafica x-y) borrara la primera grafica. Sin embargo, se pueden apilar las graficas unas encimas de otras con el comando hold on. Matlab continuara poniendo en capa las graficas hasta que se ejecute el comando hold off.
plot(tt,y) hold off end
12
SERIES DE FOURIER
2. >> x1=-5:0.1:-2; >> y1=x1+1; >> x2=-2+eps:0.1:1;
eps: reconoce diferencia mas pequeña, la distancia entre 1 y el siguiente numero punto flotante de doble precisión mas grande.
>> y2=ones(size(x2));
La función ones crea una matriz m X m de unos, se usa como un marcador de posición para futuros cálculos.
>> x3=1+eps:0.1:3;
size (x): determina el numero de filas y columnas en la matriz x. Si x es un arreglo multidimensional, size determina cuantas dimensiones existen y cuan grandes son.
>> y3=x3.^2;
En todos los cálculos matemáticos es importante entender el orden en el que se realizan las operaciones. En Matlab primero se realizan los cálculos adentro de paréntesis, desde el conjunto mas interno hasta el más externo.
>> x=[x1,x2,x3];
Los [] forma matrices cuyos elementos son separados por la (,) que también separa subíndices y los () se usa en enunciados para agrupar operaciones o se usa con un nombre de matriz para identificar elementos específicos. 13
SERIES DE FOURIER >> y=[y1,y2,y3]; >> plot(x,y) >> grid on
grid : agrega una retícula o rejilla solo a la grafica actual, mientras que grid on agrega una retícula o rejilla a la grafica actual y a todas las subsecuentes en la figura actual.
3. >> t1=-1:0.01:0; >> xt1=-t1+1; >> plot(t1,xt1); >> t2=0:0.01:2; >> xt2=t2; >> hold on >> plot(t2,xt2); >> t3=2:0.01:3; >> xt3=2; >> plot(t3,xt3) >> t4=3:0.01:7; 14
SERIES DE FOURIER >> xt4=0; >> plot(t4,xt4) >> hold off >> axis([-2 7 -1 4])
axis (v) : la entrada al comando axis es un vector de cuatro elementos que especifica los valores mínimo y máximo para los ejes x y y, ejemplo [xmin xmax ymin ymax].
>> xlabel('t')
xlabel : agrega una etiqueta (titulo) al eje x.
>> ylabel('x(t)')
ylabel : agrega una etiqueta al eje y.
>> title('Señal a trozos')
title : agrega un titulo a la grafica. El apostrofe (') al principio de los comandos anteriores le advierte que comienza una cadena o lista de caracteres string (solo letras). El color del texto cambia a púrpura cuando escribe el apóstrofe final ('), lo que indica que completó la cadena.
15
SERIES DE FOURIER
4. >> t=-10:0.01:10;
>> f_escalon=[zeros(1,1000),ones(1,1001)]; zeros (m, n) : crea una matriz m X n de ceros. Si se usan dos argumentos escalares como en este caso, el primer valor especifica el numero de filas y el segundo argumento especifica el numero de columnas, esta función se utiliza para crear matrices con valores “marcadores de posición” que se llenaran mas tarde.
>> plot(t,f_escalon);
f_escalon : Calcula la respuesta al escalón unitario de un sistema lineal. Se emplea para representar la respuesta de varios sistemas LTI, en la misma figura.
16
SERIES DE FOURIER
5. >> t=-10:0.01:10; >> f_pulso=[zeros(1,950),ones(1,101),zeros(1,950)]; >> plot(t,f_pulso);
f_pulso : calcula la respuesta a la señal de pulso de un sistema lineal.
6. >> t=-10:0.01:10; >> f_impulso=[zeros(1,1000),1,zeros(1,1000)]; >> plot(t,f_impulso);
f_impulso : calcula la respuesta al impulso de un sistema lineal. Para un sistema discreto, la respuesta al impulso es la respuesta a un impulso unitario para el instante de tiempo t=0. Se emplea para representar la respuesta de varios sistemas LTI.
17
SERIES DE FOURIER
7. >> t=-10:0.01:10; >> width=0.10;
width : devuelve el tamaño de la columna en la que se encuentra un grupo de datos.
>> f_sierra=sawtooth(2*pi*0.1*t,width);
sawtooth : genera una onda de “dientes de sierra” triangular de periodo 2 para los elementos del vector t, donde width es un parámetro escalar entre 0 y 1 que determina el punto entre 0 y 2 en el cual el máximo ocurre. La función aumenta de -1 a 1 en el intervalo de 0 a 2 *width, y decrece de la misma forma.
>> plot(t,f_sierra);
f_sierra : calcula la respuesta a la onda de “dientes de sierra” de un sistema lineal.
18
SERIES DE FOURIER
8. >> t=-10:0.01:10; >> f_triangular=sawtooth(2*pi*0.1*t,0.5); >> plot(t,f_triangular)
19
SERIES DE FOURIER
9. >> t=-10:0.01:10;
>> duty=50;%porcentajedelperiodoenelquelaseñalespositiva
%: indica un comentario en un archivo-m, usar un archivo-m permite trabajar en un proyecto y guardar la lista de comandos para uso futuro. Matlab no ejecutara código alguno en una línea comentada, también se pueden agregar comentarios después de un comando, pero en la misma línea.
>> f_cuadrada=square(2*pi*0.5*t,duty); >> plot(t,f_cuadrada);
square: genera una onda cuadrada con periodo 2 para los elementos del vector tiempo t, con ciclo especifico duty, que es un numero entre 0 y 100. El ciclo duty es el porcentaje del periodo en el cual la señal es positiva.
20
SERIES DE FOURIER
IV.III. Serie de Fourier i.
Método analítico
Hallar la Serie de Fourier de forma analítica
4.
()
{
∫ ()
[∫
∫
(
[ (
))
]
[
(
)]
|
| ]
[
]
∫ ()
( )
[∫
Como
(
∫
( )
]
( )
[
) [ ] ∫ ()
21
[ ]
( )
( )
|
( )
| ]
SERIES DE FOURIER [∫
Como
( [
( )
)
( (
∫
) )
( )
( (
(
)
(
)
( )
[
]
)(
)
)]
[
( (
) )
{
()
∑[
()
( )
∑[
22
( )]
( ) | ]
|
( )]
]
(
)
SERIES DE FOURIER
ii.
Programando en Matlab Usaremos Matlab, para determinar la serie de Fourier, la sintaxis para la grafica f(t) es: >> t=-pi:0.01:pi; >> f=(t<0).*(-2)+(t>=0).*(2); >> plot(t,f)
Y su grafica es:
Veamos como calculamos los coeficientes con Matlab. Primero calcularemos los coeficientes del coseno (an), como funciones de n >> syms n pi t; >> an=(1/pi)*(int(-2*cos(n*t),-pi,0)+int(2*cos(n*t),0,pi)) an = 0
23
SERIES DE FOURIER
Los coeficientes de los senos (bn) están dados por: >> syms n pi t; >> bn=(1/pi)*(int(-2*sin(n*t),-pi,0)+int(2*sin(n*t),0,pi)); >> pretty(bn) (
(
)
(
)
)
Matlab no reconoce a n como un entero, así que: >> bn=subs(bn,'(-1)^n','cos(pi*n)'); >> pretty(bn) (
)
((
)
)
Ahora usaremos el comando FourierSum para hallar la serie de Fourier y el comando ezplot para graficar la serie: >> fouriersum=(8/pi)*sin(t); >> for k=1:2:30 fouriersum=fouriersum+subs((8/pi)*sin(n*t)/n,k,n); end >> fouriersum fouriersum = (8*sin(3*t))/(3*pi) + (8*sin(5*t))/(5*pi) + (8*sin(7*t))/(7*pi) + (8*sin(9*t))/(9*pi) + (8*sin(11*t))/(11*pi) + (8*sin(13*t))/(13*pi) + (8*sin(15*t))/(15*pi) + (8*sin(17*t))/(17*pi) + (8*sin(19*t))/(19*pi) + (8*sin(21*t))/(21*pi) + (8*sin(23*t))/(23*pi) + (8*sin(25*t))/(25*pi) + (8*sin(27*t))/(27*pi) + (8*sin(29*t))/(29*pi) + (16*sin(t))/pi >> ezplot(fouriersum,3.1416*[-2 4]) >> title('Serie de Fourier')
24
SERIES DE FOURIER
La grafica es:
Comandos utilizados:
Plot: crea una grafica x-y. Este comando ploteará los elementos del vector x en el eje horizontal de una figura, y los elementos del vector y en el eje vertical de la figura. Por defecto, cada vez que se use el comando plot, se borrará la figura que estaba, quedando solo la nueva. Los : se usan para generar matrices, indica todas las filas o todas las columnas de esta; en una función con los dos puntos se colocan el primer y ultimo valor que esta tomara y el incremento por defecto será 1, pero si se desea usar un incremento diferente se coloca entre estos dos números en este caso, el incremento será de 0.01. El ; separa filas en una definición de matriz, suprime salida cuando se usa en comandos, cabe recordar que la matriz es el tipo de datos principal que se usa en Matlab y puede retener información numérica así como otros tipos de información. Syms: crea variables simbólicas, note en la ventana del área de trabajo que x y y se mencionan como variables simbólicas y que el tamaño del arreglo para cada una es 1 x 1. Cada argumento de entrada debe comenzar con una letra y puede contener sólo caracteres alfanuméricos. Para la compatibilidad con versiones anteriores del software. El comando syms es particularmente conveniente porque se puede usar para crear múltiples variables simbólicas al mismo tiempo, como con el comando. En 25
SERIES DE FOURIER las funciones y scripts, no utilice el comando syms para crear variables simbólicos con los mismos nombres que las funciones de MATLAB. Para estos nombres MATLAB no crea variables simbólicas, pero mantiene los nombres asignados a las funciones. Si desea crear una variable simbólica con el mismo nombre que una función MATLAB dentro de una función o un script, utilice el comando sym. En todos los cálculos matemáticos es importante entender el orden en el que se realizan las operaciones. En Matlab primero se realizan los cálculos adentro de paréntesis, desde el conjunto mas interno hasta el más externo . En algunos casos la lectura de la salida que proporciona MATLAB no es muy legible. El comando pretty genera en ocasiones una visualización mas usual, es decir, visualiza una expresión simbolica de forma parecida a como esta suele escribirse realmente (forma algrebaica). Subs: es otra forma ligeramente distinta para sustituir más de una variable simbólica por uno o varios valores numéricos.
Las variables var1, var2,…, varN son variables simbólicas de la expresión S que se pretenden sustituir por números, estas deben teclearse entre llaves. Los números numero1, numero2,…, numeroN son los que se sustituirán en las variables simbólicas comentadas anteriormente, los números pueden ser escalares, vectores o matrices. Los bucles se usan cuando se necesita repetir un conjunto de instrucciones muchas veces, Matlab soporta dos tipos de bucles uno de ellos es for, este es la opción mas sencilla cuando se sabe cuantas veces se repetirá el bucle, la primera línea de su estructura identifica el bucle y define el indice en este caso n, que es un numero que cambia en cada paso a traves del bucle. Después viene el grupo de comandos que se quiere ejecutar. Finalmente la terminación del bucle se identifica mediante el comando end. Sin: Seno de argumento en radianes. Y = sin (X) devuelve el seno circular de los elementos de X. La función pecado elemento opera-sabio en las matrices. Dominios de la función y rangos incluyen valores complejos. Todos los ángulos están en radianes. Los bucles se usan cuando se necesita repetir un conjunto de instrucciones muchas veces, Matlab soporta dos tipos de bucles uno de ellos es for, este es la opción mas sencilla cuando se sabe cuantas veces se repetirá el bucle, la primera línea de su estructura identifica el bucle y define el indice en este caso n, que es un numero que 26
SERIES DE FOURIER cambia en cada paso a traves del bucle. Después viene el grupo de comandos que se quiere ejecutar. Finalmente la terminación del bucle se identifica mediante el comando end. title : agrega un titulo a la grafica. El apostrofe (') al principio de los comandos anteriores le advierte que comienza una cadena o lista de caracteres string (solo letras). El color del texto cambia a púrpura cuando escribe el apóstrofe final ('), lo que indica que completó la cadena. Ezplot: representa gráficamente una expresión simbólica, dibuja curvas como plot en cartesianas y paramétricas de una manera mas sencilla ya que genera automáticamente los valores de la variable independiente. También se utiliza para dibujar curvas en implícitas. Sea S una función simbólica que contiene una variable var, ezplot creara un grafico de S (var) frente a var.
27
SERIES DE FOURIER
V.
CONCLUSIÓN
El estudio efectuado pone de manifiesto, que las series de Fourier son de mucha importancia en la Ingeniería, gracias a ellas se logra identificar la frecuencia, amplitud y fase de cada una de las modulaciones de tipo seno generadas por una función infinita. Además de lograr identificar la forma adecuada de realizar una serie de Fourier en Matlab, desarrollando su respectivo grafico. Los resultados obtenidos en este trabajo evidencian que este tipo de análisis de las series de Fourier proporcionan información complementaria a la suministrada por parámetros de forma convencionales.
28
SERIES DE FOURIER
VI.
BIBLIOGRAFÍA
Tratamiento digital de señales-Prolakis-Manolakis. Apuntes de la cátedra Teoría de circuitos de I –FRMUTN. Series de Fourier, Transformadas de Fourier y aplicaciones. G. González. Consultado 30 de noviembre de 2012, en http://www.emis.de/journals/DM/v5/art6.pdf H. Dym, H. P. McKean. Fourier series and Integrals. Academic Press. New York, 1972. G. Amos. Matlab, Una introducción con ejemplos prácticos. Barcelona, España. Editorial Reverte s.a. 2005. 340 pág. H. Moore. Matlab para ingenieros. Editorial Pearson, Prentice Hall. 600 pág.
29