Este documento describe los pasos para desarrollar una serie de Fourier para aproximar la función f(x) = {0 para -π < x < 0, π - x para 0 < x < π}. Primero se define la función, el dominio y las series de Fourier para n = 1, 10 y 100. Luego, se grafican las funciones original y aproximadas para comparar cómo la aproximación mejora al aumentar n.
1. Jorge Luis Flores Guaman
GRAFICAR SERIES DE FOURIER
Desarrollar f(x) en serie de Fourier.
Sea: 𝒇(𝒙) = {
𝟎, − 𝜋 < 𝑥 < 0
𝝅 − 𝒙, 0 < 𝑥 < 𝜋
CÓDIGOS DE PROGRAMACIÓN EN MATLAB:
Códigos:
syms n
x=-pi:0.1:pi;
f=((x>=-pi)&(x<0)).*(0)+((x>=0)&(x<=pi)).*(pi-x);
f1=(pi/4+((2/pi)*cos(x))+sin(x));
ff10=pi/4+symsum((((1-(-1)^n)/(pi*n^2))*cos(n*x))+((1/n)*sin(n*x)),1,10);
ff100=pi/4+symsum((((1-(-1)^n)/(pi*n^2))*cos(n*x))+((1/n)*sin(n*x)),1,100);
f10=double(ff10);
f100=double(ff100);
plot(x,f,x,f1,x,f10,x,f100)
2. Jorge Luis Flores Guaman
Detalle de cada paso:
a. Definimos: variables implícitas, “n”; dominio de trabajo, “x”; y la función original, f(x);
1. syms n
2. x=(-pi:0.0.5:pi)’;
3. f=((x>=-pi)&(x<0)).*(0)+((x>=0)&(x<=pi)).*(pi-x);
En 1 indicamos a “n” como variable implícita
En 2 indicamos el dominio de trabajo inicia en “-pi”, termina en “pi” en saltos de “0.05”. (La comilla
al cerrar el paréntesis indica que la matriz se coloque en columna de valores [ ’ ]. El punto y coma
colocado al final indica que se oculten dichos valores [ ; ], esto se usará en cada en cada línea para
ocultar los valores de cada cálculo).
En 3 definimos la función original: 𝒇(𝒙) = {
𝟎, − 𝜋 < 𝑥 < 0
𝝅 − 𝒙, 0 < 𝑥 < 𝜋
, como “f”. Donde “((x>=-
pi)&(x<0)).*(0)” indica el primer intervalo y la función equivalente en dicho intervalo y
“((x>=0)&(x<=pi)).*(pi-x)” indica el segundo intervalo y la función equivalente en ese intervalo.
b. Indicamos las funciones aproximadas en serie de Fourier, para valores: n=1 (f1), n=10
(ff10) y n=100 (ff100)
4. f1=(pi/4+((2/pi)*cos(x))+sin(x));
5. ff10=pi/4+symsum((((1-(-1)^n)/(pi*n^2))*cos(n*x))+((1/n)*sin(n*x)),1,10);
6. ff100=pi/4+symsum((((1-(-1)^n)/(pi*n^2))*cos(n*x))+((1/n)*sin(n*x)),1,100);
En 4 definimos la serie para n=1, cabe recalcar que el remplazo de n=1 fue realizado a mano como un
cálculo extra en el cual se obtuvo: 𝒇𝟏 =
𝝅
𝟒
+
𝟐
𝝅
𝐜𝐨𝐬 𝒙 + 𝐬𝐢𝐧 𝒙
En 5 y 6 definimos las funciones aproximadas para n=10 y n=100, respectivamente.
symsum(f(n),a,b): es el código de cálculo en sumatoria en Matlab, donde “f(n)”
es la función en términos de n; “a” indica el inicio de la sumatoria; y “b” indica el
final de la sumatoria (este puede ser un número o el infinito representado por
“inf”)
NOTA 1: previo a esto se debe indicar que “n” es una variable implícita, como lo
hemos hecho en el paso 1
Nota 2: obsérvese que tanto para ff10 y ff100 el término “pi/4” no está dentro de
la función “symsum”, esto se debe a que este término no contiene a la expresión
“n” y se obtiene el mismo resultado si se lo incluye o no dentro de la función
“symsum”.
c. Cambiamos el tipo de datos (valores matriciales) de las matrices ff10 y ff100
7. f10=double(ff10);
8. f100=double(ff100);
Tanto en 7 y 8 se cambian el tipo de datos con los que se trabaja, el uso de la función “syms” en el
paso 1 hace que los datos sean simbólicos y para realizar gráficos los datos deben ser matriciales
simples (doublé). De esta forma los valores válidos se obtienen en f10 y f100.
d. Realizar gráficos en un mismo espacio
9. plot(x,f,x,f1,x,f10,x,f100)
En 9 con la función “plot” graficamos las distintas funciones, donde “x” es el dominio para cada
función y f, f1, f10 y f100 son las funciones con distintos rangos.
3. Jorge Luis Flores Guaman
Gráfico obtenido:
Líneas:
Azul: Función original
: función aproximada para n=1Verde
Rojo: función aproximada para n=10
Celeste: función aproximada para n=100
Bibliografía:
DENNIS G. ZILL; Ecuaciones Diferenciales; Segunda edición; página 435