ingeniero informático - universidad de sevillama1.eii.us.es/material/ci_ii_cuad1.pdf · • en los...

92
Ingeniero Informático - Cálculo Infinitesimal 2º Cuaderno de Prácticas 1: Sucesiones y series de funciones. Inicio Previamente se debe inicializar el programa y cargar el paquete de gráficos plots con los comandos restart y with respectivamente. > restart; > with(plots): > interface(showassumed=1); 1.1 Sucesiones de funciones. En esta sección vamos a ver como Maple puede ayudar a estudiar la convergencia de sucesiones de funciones (y por lo tanto, también de series de funciones), sobre todo desde el punto de vista gráfico, analizando algunos ejemplos. Utilizaremos las capacidades simbólicas para hacer "las cuentas" y las capacidades gráficas para "visualizar" geométricamente los resultados. Función límite puntual de una sucesión de funciones. Utilizaremos como ejemplo de sucesión uno suficientemente fácil para que se pueda comparar la forma de utilizar el programa, como alternativa al "papel y lápiz", y se puedan utilizar luego las capacidades de Maple con ejemplos más complicados. Convergencia punto a punto. Ejemplo 1.1.1________________________ Considérese la sucesión de funciones ( ) f n , definida por = ( ) f n x x n , para , , = n 01 ... Veamos cómo utilizar Maple para determinar la función límite puntual y analizar gráficamente el tipo de convergencia de la sucesión. 1

Upload: others

Post on 10-May-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

Ingeniero Informático - Cálculo Infinitesimal 2º

Cuaderno de Prácticas 1: Sucesiones y series de funciones.

Inicio

Previamente se debe inicializar el programa y cargar el paquete de gráficos plots con los comandos restart y with respectivamente.

> restart;

> with(plots):

> interface(showassumed=1);

1.1 Sucesiones de funciones.

En esta sección vamos a ver como Maple puede ayudar a estudiar la convergencia de sucesiones de funciones (y por lo tanto, también de series de funciones), sobre todo desde el punto de vista gráfico, analizando algunos ejemplos. Utilizaremos las capacidades simbólicas para hacer "las cuentas" y las capacidades gráficas para "visualizar" geométricamente los resultados.

Función límite puntual de una sucesión de funciones.

Utilizaremos como ejemplo de sucesión uno suficientemente fácil para que se pueda comparar la forma de utilizar el programa, como alternativa al "papel y lápiz", y se puedan utilizar luego las capacidades de Maple con ejemplos más complicados.

• Convergencia punto a punto.

Ejemplo 1.1.1________________________

Considérese la sucesión de funciones ( ) fn

, definida por = ( )fn

x xn, para , , = n 0 1 ...

Veamos cómo utilizar Maple para determinar la función límite puntual y analizar gráficamente el tipo de convergencia de la sucesión.

1

Page 2: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

La sucesión de funciones = ( )fn x xn, , , = n 0 1 ... , está formada por las funciones:

, , , , ,1 x x2

x3

x4

...

En cada x tenemos una sucesión numérica ( ) ( )fn x y, cómo Maple puede calcular en algunos casos

límite de sucesiones numéricas, particularizando ( ) ( )fn a podemos hallar, punto a punto, el valor

= ( )f a lim → n ∞

an

que define la función limite f en el punto = x a considerado.

- Por ejemplo, para = x1

2 podemos calcular el límite usando la forma inerte Limit (la inicial del

nombre del comando activo, en mayúsculas) y luego el comando value. Entonces:

> Limit((1/2)^n,n=infinity);

lim → n ∞

1

2

n

> value(%);

0

También podemos utilizar directamente la forma activa limit (la inicial del nombre del comando en minúsculas) y obtener el resultado de una vez

> limit((1/2)^n,n=infinity);

0

Observación técnica: Puede presentarse el resultado completo utilizando en una igualdad la forma inerte y activa del comando, lo que produce la salida en la forma matemática usual o estándar:

> Limit((1/2)^n,n=infinity)= limit((1/2)^n,n=infinity);

= lim → n ∞

1

2

n

0

Se puede expresar el código ejecutable en la forma matemática usual, situando el cursor en cualquier punto del código y utilizando el botón secundario o pulsando el botón etiquetado con x en la barra de contexto (comprobar que funciona en la siguiente línea de código). En tal caso, el código del comando se vería directamente en el modo estándar en el que Maple representa las salidas, pero manteniendo el color rojo que indica código ejecutable:

2INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 3: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

> lim → n ∞

1

2

n

0

• En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la primera vez que se utilice, a modo de ejemplo, y luego utilizar la forma más cómoda o simplificada al emplearlo de nuevo.

____________|

De cualquiera de las formas en que se presente el resultado obtenido anteriormente, lo que se tiene, desde el punto de vista matemático es el valor de la función límite f en el punto = x 1 / 2, es decir,

se conoce = ( )f 1 / 2 0.

Por otra parte, la función límite f no está definida en = x 5, ya que ( )f 5 debería ser:

> lim → n ∞

5n

Tampoco está definido el valor ( )f −1 , ya que la sucesión ( ) , , , ,1 −1 1 −1 ... es oscilante, cosa que Maple es capaz de detectar, informando con " .. −1 1" (indica el intervalo de oscilación).

> lim → n ∞

( )−1 n

.. -1 1

• Entonces, para hallar algunos valores de la función límite, siempre se puede usar Maple de modo "inteligente" para analizar de esta manera una "razonable" cantidad de puntos, utilizando por el ejemplo el comando seq para evaluar f en una sucesión de puntos:

> seq(Limit((x/2)^n,n=infinity),x=-3..3);

, , , , , ,lim → n ∞

-3

2

n

lim → n ∞

( )-1 n lim → n ∞

-1

2

n

lim → n ∞

0 lim → n ∞

1

2

n

lim → n ∞

1 lim → n ∞

3

2

n

>

> value([%]); # Obsérvese el corchete sobre % ...

3INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 4: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

, , , , , ,lim

→ n ∞

-3

2

n

.. -1 1 0 0 0 1 ∞

Por supuesto, Maple devuelve las expresiones que no es capaz de evaluar, como por ejemplo

lim → n ∞

3

2

n

,

cuyo valor lo deja entonces al "conocimiento" del usuario.

- Ejercicio 1.1: Comprobar que = ( )f x 0 en los puntos = x -0'9, -0'8, ..., 0'8, 0'9, siendo

= y ( )f x la función límite de la sucesión de funciones = ( )fn x xn del Ejemplo 1.1.1.

Indicación: Evaluar cuando → n ∞ la sucesión de límites

x

10

n

, = x .. −9 9.

_________________________________________|

Aunque en la sucesión "elemental" de funciones del Ejemplo 1.1.1 es fácil detectar la convergencia punto a punto en cada x del intervalo ( ,−1 1], en otros casos más complicados, Maple puede ser de gran ayuda.

• Otra forma de estudiar la función límite puntual con Maple.

Si utilizamos directamente el comando limit sin especificar un valor de x, Maple no es capaz de calcular la función límite puntual, porque no está especificado el dominio sobre el que deben ser consideradas las funciones de la sucesión.

> limit(x^n,n=infinity);

lim → n ∞

xn

No obstante, a veces, pueden calcularse límites funcionales con Maple, especificando un intervalo

de variación o rango para la variable independiente x.

Maple permite especificar dominios para una variable con el comando assume, en cuyo caso la

4INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 5: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

renombra añadiéndole tilde "~" a su nombre original; posteriormente se puede modificar el dominio asignado, con el comando additionally. Por otro lado, el comando about informa de las restricciones a que está sujeta una variable.

> assume(x>=0);

> about(x);Originally x, renamed x~:

is assumed to be: RealRange(0,infinity)

> additionally(x<1);

about(x);Originally x, renamed x~:

is assumed to be: RealRange(0,Open(1))

> x;

x~

Obsérvese cómo Maple denota al intervalo [ ,0 ∞) por RealRange(0,infinity), y el

intervalo [0,1) por RealRange(0,Open(1)). Es decir, cuando el extremo α no pertenece al

intervalo, se utiliza " ( )Open α " para indicarlo; en otro caso, α sería considerado del intervalo.

Por supuesto, se puede declarar un intervalo determinado para una variable empleando directamente el comando RealRange:

> assume(x, RealRange(Open(-1),1)); # intervalo (-1,1]

> about(x);Originally x, renamed x~:

is assumed to be: RealRange(Open(-1),1)

Observación técnica: Por comodidad, si se especifica la opción showassumed=0 del comando interface, la variable que se declara restringida se presenta sin tilde en pantalla, aunque Maple la mantenga internamente como se puede observar al informar de la restricción. > interface(showassumed=0);

0> x;

x

> about(x); Originally x, renamed x~:

is assumed to be: RealRange(Open(-1),1)

Para volver a la forma original, y presentar con tilde las variables con restricciones (a veces Maple

5INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 6: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

da problemas con esta opción de interface al operar) se especifica la opción showassumed=1, que está asignada inicialmente por defecto.

> interface(showassumed=1);

> x;

x~

____________|

• La asunción de una variable se elimina como cualquier otra asignación que tuviera, asignándole a

la variable como nuevo valor su propio nombre encerrado entre apóstrofes:

> x:='x'; # o usando unassign('x')

:= x x

> about(x);x:

nothing known about this object

- Ejercicio 1.2: Declarar la variable y del intervalo ( ) ,−∞ 0 y comprobar que cuando → n ∞,

Maple sabe que → e( )n y

0. Luego eliminar la restricción y comprobar si pasa lo mismo.

• NUEVA IDEA: Si se restringe el dominio de una variable a un intervalo donde una sucesión de funciones ( ) fn converja puntualmente, y se utiliza el comando limit para pedir el límite de la

expresión resultante para ( )fn x , entonces Maple puede a veces ser capaz de dar información

sobre el límite pedido, que entonces debe ser interpretado (con cuidado) como la función límite.

Ejemplo 1.1.2________________________

Veamos cómo usar esta utilidad de Maple con la sucesión = ( )fn x xn en ( ) ,1 1 .

> limit(x^n,n=infinity); # no se obtiene nada...

lim → n ∞

xn

>

> assume(x, RealRange(-1,1)); # x en intervalo [-1,1]

> limit(x^n,n=infinity); # Maple evalúa el limite

0

6INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 7: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

Así, ahora el resultado anterior indica entonces que la sucesión de funciones = ( )fn x xn converge

puntualmente a la función límite, definida por = ( )f x 0, en el intervalo [-1,1].

En particular, Maple asume el resultado erróneo = = = = ( )f −−−−1 ( )f 1 = = = = 0.

_________________________________________|

Observación importante: Maple ha cometido un error en los puntos = x −1 y = x 1.

Operando punto a punto, se obtuvieron bien los resultados, y Maple informó correctamente que no

existía = ( )f −1 lim → n ∞

( )−1 n y que = ( )f 1 lim → n ∞

1n = 1.

Sin embargo, después de asumir un intervalo para la variable, funcionalmente ha evaluado ambos

límites a cero. Es como si esperase que con un resultado correcto en una "infinidad" de puntos no debieran importar "algunos" errores concretos. Pero, desafortunadamente, los puntos = x −1 y = x 1 son especialmente relevantes y esos errores no puede ser pasados por alto, así que:

Regla: Aunque Maple (o cualquier otro programa) sea capaz de proporcionar un límite para una

sucesión de funciones, supuestamente válido en un intervalo, se debe estudiar en detalle el valor en

los extremos y/o en cualquier otro punto que pudiera ser considerado especialmente relevante.

____________|

En el Ejemplo 1.1.2 que venimos considerando, eliminando el valor = ( )f −1 0 y corrigiendo = ( )f 1 1, tenemos la función límite = y ( )f x en el intervalo ( ,−1 1], que podemos definir con el

comando piecewise, específico de Maple para definir funciones a trozos:

> interface(showassumed=0);

> f:=x->piecewise(-1<x and x<1, 0, x=1, 1, `no definido`):

> f(x);

0 and < − − 1 x 0 < − x 1 01 = x 1

no definido otherwise

Análisis gráfico de la convergencia a la función límite.

> x:='x': # Elimina la restricción de x (mejor dicho, de x~)

7INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 8: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

Utilizando la expresión de ( )f x , podemos dibujar primeramente la función límite f con el estilo

de puntos (aunque no sea el predeterminado de Maple), y enfatizar así que = y ( )f x se ha obtenido como límite puntual de una sucesión de funciones. Emplearemos algunas opciones de las que permite el comando plot (consultar la ayuda) para familiarizarnos con ellas.

Ejemplo 1.1.3________________________

Siguiendo con la sucesión = ( )fn

x xn del Ejemplo 1.1.2 y su función límite = y ( )f x , tenemos:

> plot(f(x),x=-1..1, y=-1..1,

style=point,numpoints=100,symbol=circle,labels=[`Eje x`,f],

scaling=constrained);

Observación técnica: La opción scaling=constrained establece los ejes con la misma unidad y aparece como botón (etiquetado 1:1) en la barra de herramientas contextual, que se muestra al hacer "clic" en un gráfico. El botón permite intercambiar rápidamente y sin necesidad de código el aspecto del gráfico representado tanto con un escalado de ejes (la opción por defecto de Maple, que mejora la apariencia de los gráficos, pero puede "disimular" su verdadero aspecto) como sin escalar, que es a veces preferible.

____________|

- Ejercicio 1.3: Dibujar la gráfica anterior del Ejemplo 1.1.3 eliminando la opción constrained y etiquetando los ejes con t e y(t). Utilizar el botón de la barra de contextos para alternar entre la gráfica escalada y sin escalar rápidamente.

Podemos ver gráficamente cómo las primeras funciones ( ) , , , , ,1 x x2

x3

x4

... de = ( )fn x xn se

aproximan a la función límite puntual f, haciendo uso del comando seq para almacenar en una variable algunos términos de la sucesión de funciones y, posteriormente, dibujarlos junto a la función límite.

8INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 9: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

> fns:=seq(x^n,n=0..5);

:= fns , , , , ,1 x x2

x3

x4

x5

>

> plot([f(x), fns], x=-1..1,

color=[black,pink,yellow,magenta,green,blue,red], style=point,

numpoints=100, symbol=circle, labels=[x,`fn(x)`]);

La curva de puntos negros corresponde a la función límite f y la curva roja es la gráfica de f5 .

Observación técnica: El código que necesita Maple para dibujar la curva puede almacenarse como cualquier expresión en una variable, pero se debe terminar la asignación con ":" para no verlo (en los gráficos interesa normalmente el dibujo, no el código del dibujo); posteriormente, se pueden cambiar algunas de las opciones (depende del gráfico) o mezclarlo con otros dibujos con el comando display. Algunas de las opciones más usuales aparecen en la barra gráfica contextual en forma de botones, en modo análogo al escalado.

____________|

> salida_puntos:=%:

> display(salida_puntos,axes=none,scaling=constrained);

9INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 10: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

• Comportamiento gráfico en puntos particulares.

Podemos ver gráficamente el modo en que la sucesión ( )fn x , , , , = n 0 1 2 ..., converge a = ( )f x 0

en los puntos = x − 0'8 y = x 0'8, dibujando las gráficas de los puntos ( ) ,x ( )fn x para algunos n utilizando el comando pointplot. Cuando hay muchas opciones suele ser útil almacenarlas en una variable (en el ejemplo está llamada opciones) para que el código del dibujo resulte "más claro"

> opciones:= symbol=circle, color=blue, labels=[x,`fn(x)`],

tickmarks=[[-1,-0.8,0.8,1],[-1,0,1]], view=[-1..1,-1..1]:

>

> puntos:=seq(pointplot([[-0.8,(-0.8)^n],[.8,.8^n]],opciones),

n=0..25):

>

> display(puntos, scaling=constrained);

En forma animada los dibujos de la sucesión, con la opción insequence=true, se observa

mejor cómo ( ) ( )fn x converge en cada punto de un modo distinto.

> display(puntos, scaling=constrained, insequence=true);

10INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 11: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

Observación técnica: La barra contextual en una animación reproduce los botones de movimiento (comienzo, pausa, velocidad, etc.). No obstante, en el extremo derecho (señalado con dos botones etiquetados con "flechas") aparece un acceso a los botones usuales de gráficos, algunos de los cuales se pueden utilizar para cambiar el aspecto de las gráficas que intervienen en la animación.

____________|

- Ejercicio 1.4: Siguiendo con la sucesión de funciones = ( )fn x xn , representar en una

animación el comportamiento de la sucesión ( ) ( )fn x , primero sólo en el punto = x 0'9 y luego con los puntos anteriores simultáneamente. Cambiar las opciones utilizando la barra de contexto gráfico.

_________________________________________|

• Comportamiento gráfico global.

Aunque la opción de puntos permite visualizar globalmente la gráfica de una función, la forma usual de representarla con Maple es "uniendo los puntos" en los que se produce la evaluación (que Maple selecciona automáticamente mediante un algoritmo específico que utiliza más puntos del dominio si detecta un comportamiento más complicado), lo que supone que la función es continua.

En general, esta forma gráfica es la adecuada para la mayoría de las gráficas que se manejan, pero a veces conviene enfatizar las discontinuidades de salto con la opción discont=true.

> f(x);

0 and < − − 1 x 0 < − x 1 01 = x 1

no definido otherwise

>

> plot(f(x),x=-1..1,color=red,thickness=3);

11INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 12: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

> plot(f(x),x=-1..1,color=red,thickness=3,discont=true);

> graf_f:=%:

Obsérvese de nuevo que funcionalmente, el punto del extremo = ( ),1 ( )f 1 ( ),1 1 es ignorado en la gráfica, a pesar de que el valor = ( )f 1 1 está almacenado correctamente. Así, una discontinuidad "evitable" será ignorada por Maple al emplear la forma usual (en este caso, el salto sí es detectado y desaparece la barra vertical que lo hacía continuo...):

> f(1);

1

Si se quiere ser demasiado exigente, se puede dibujar el punto que falta, utilizando el comando pointplot, y podemos visualizar "completamente" la función límite:

> display(graf_f,pointplot([1,1],symbol=circle, color=red));

> graf_f:=%:

Ejemplo 1.1.3_(continuación)__________

Dibujando las gráficas de la sucesión = ( )fn x xn en la forma usual (son funciones continuas...), se

puede obtener una imagen global del comportamiento de las funciones a su límite.

12INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 13: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

> sld_linea:=plot([f(x),fns],x=-1..1,color=black,discont=true):

> display(sld_linea,thickness=2);

Por otro lado, si se quiere se pueden visualizar las gráficas en la forma usual junto a las que ya se tenían dibujadas con la opción de puntos y obtener así una representación conjunta en un rectángulo que interese, mostrando ambos aspectos:

> display(salida_puntos,sld_linea, view=[0..1,0..1],

scaling=constrained);

• Analizando gráficamente el tipo de convergencia.

Una vez conocida la función límite de una sucesión de funciones, la convergencia uniforme en un intervalo se muestra gráficamente cuando las gráficas de los elementos de la sucesión "terminan" por confundirse con la gráfica de la función límite.

En realidad, dibujando la gráfica de la función límite en un trazo más grueso que las de los términos de la sucesión de funciones, lo que se tiene en realidad es una banda sobre la función límite; en el caso de convergencia uniforme, las gráficas de los elementos de la sucesión de funciones se tienen que incluir en la banda... Así, desde el punto de vista gráfico, los elementos de la sucesión deben llegar a ser confundidos con la función límite cuado hay convergencia uniforme.

Por supuesto, podemos crear una animación de la convergencia de la sucesión de funciones a la

13INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 14: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

función límite en la forma usual de representar las funciones. El comando animate permite la construcción de animaciones (sin usar seq ), pero para dibujar una sucesión se debe ajustar la

opcion frames al numero entero de elementos que determine el rango de variación del índice n. Ejemplo 1.1.4________________________

Siguiendo con la sucesión = ( )fn x xn y su función límite = y ( )f x , tenemos la sucesión de

funciones animada:

> animate(x^n, x=-1..1, n=0..25, frames = 26,

color=blue, thickness=2, tickmarks=[2,3],

scaling=constrained);

> fn_animada:=%:

y la sucesión animada con la función límite dibujada anteriormente:

> display(graf_f,fn_animada);

• Obsérvese que la imagen de la no convergencia uniforme en ( ,−1 1] para la función del ejemplo es ilustrada, en este caso, por la verticalidad de las gráficas. En efecto, se puede observar cómo dicha "verticalidad" no disminuye en los extremos, verificándose por lo tanto que

= αn

− fn

f∞ no tiende a 0.

14INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 15: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

De hecho, = αn − fn f∞

= sup − ( )fn x ( )f x = 1, y se tiene para → x 1 (o para → x −1) la

sucesión = αn ( ), , ,1 1 1 ... , por lo que ≠ lim → n ∞

αn 0 y la convergencia no es uniforme en el

intervalo ( ,−1 1] .

• En efecto, podemos poner una banda estrecha, ( )B ,f ε , sobre la función límite f :

> banda_1:=plot([0.1+f(x),-0.1+f(x)],x=-1..1,y=-1.2..1.2,

thickness=2, color=green, discont=true):

> banda_2:=pointplot([[1,0.9],[1,1.1]],

symbol=circle,color=green):

> display(banda_1,banda_2,graf_f);

> banda:=%:

• Superponiendo la banda con la animación anterior se puede observar cómo las funciones fn

nunca podrían entrar dentro de la banda si consideramos todo el intervalo ( ,−1 1], lo que descarta la convergencia uniforme de la sucesión en el intervalo:

> todo:=display(banda,fn_animada):

> display(todo,insequence=true);

Sugerencia: Pasando las imágenes una a una y luego automáticamente con una velocidad moderada, se ven y se comprenden mejor las animaciones.

15INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 16: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

Por supuesto, también prueba que la convergencia no es uniforme en ( ,−1 1] el hecho de que cada

= ( )fn x xn sea continua en todo el intervalo y que la función límite f no lo sea.

_________________________________________|

- Ejercicio 1.5:

(1) Seleccionar el intervalo [ ],0 1 y visualizar en la animación correspondiente cómo el

comportamiento gráfico detecta en él la no convergencia uniforme de = ( )fn x xn a la función

límite = y ( )f x .

(2) Probar gráfica y analíticamente la convergencia uniforme de la sucesión a la función límite = ( )f x 0 en el intervalo [ ],−0'9 0'8 . ¿A partir de que N se verifica < − fn f

∞0'1 ?

Indicación: Dibujar la banda ( )B ,f ε , con = ε 0'1 en el intervalo junto a las fn .

- Ejercicio 1.6: Analizar gráficamente si la sucesión = ( )fn x e( )x n

del Ejercicio 1.2 converge

uniformemente en el intervalo [ ,−2 −1) . Repetir el análisis en el intervalo [ ,−2 0).

1.2 Caracterización del supremo de la convergencia uniforme.

> restart;

> with(plots):

> interface(showassumed=0);

Además de ayudar a obtener la función límite y facilitar el estudio geométrico, a veces, se puede operar simbólicamente con Maple para hallar el supremo de = ( )αn x − ( )fn x ( )f x en un intervalo

I, y por tanto determinar = αn − fn f∞.

• Según la caracterización del supremo, → { }αn

0 si y sólo si la convergencia es uniforme.

Ejemplo 1.2.1________________________

Considérese la sucesión de funciones = ( )fn x x e( )−n x

, , , = n 0 1 ..., en el intervalo [0,1].

16INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 17: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

Las primeras funciones son:

> seq(x*exp(-n*x),n=0..5);

, , , , ,x x e( )−x

x e( )−2 x

x e( )−3 x

x e( )−4 x

x e( )−5 x

Para operar, puede ser cómodo definir directamente la función de dos variables = ( )f ,x n ( )fn x , para usarla posteriormente en las "cuentas" y en los gráficos.

> f:=(x,n)->x*exp(-n*x);

:= f → ( ),x n x e( )−n x

> f(x,n);

x e( )−n x

Antes que nada, hay que ver si Maple es capaz de obtener la función límite puntual en [0,1] ...

> assume(x, RealRange(0,1));

> lim → n ∞

( )f ,x n

0

En los extremos = x 1 y = x 0, comprobamos que ( ) ( )fn

x también tiende a 0.

> Limit(f(1,n),n=infinity)=limit(f(1,n),n=infinity);

= lim → n ∞

e( )−n

0

> lim → n ∞

( )f ,0 n

0

Luego, la función límite puntual en el intervalo [ ],0 1 es la función nula = ( )f x 0.

- Ejercicio 2.1: Declarar la variable x de [ ,0 ∞) y comprobar si también Maple da la solución correcta al límite puntual de la sucesión de funciones en el intervalo infinito.

17INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 18: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

• Análisis gráfico de la convergencia.

Veamos cómo las gráficas de las primeras funciones fn se aproximan a = ( )f x 0 en [ ],0 1 .

> x:='x':

> plot([seq(f(x,n),n=0..4)],x=0..1,fn, thickness=2,

scaling=constrained);

Algunas funciones más en una animación:

> fns:=seq(plot(f(x,n),x=0..1,fn=0..0.5, color=blue), n=0..20):

> display(fns, thickness=3, insequence=true);

Desde el punto de vista geométrico no hay duda (¿por qué?) de que la convergencia es uniforme en el intervalo seleccionado.

- Ejercicio 2.2: Representar la animación anterior dibujando una banda ( )B ,f ε , para = f 0, con

= ε 0'05 y observar sobre la animación (contando...) a partir de qué función fn se introducen todas en la banda.

18INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 19: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

• La convergencia uniforme analíticamente.

Veamos cómo utilizar Maple en este caso (y similares) para hallar = αn − fn f∞ y su límite para

probar ahora formalmente la convergencia uniforme de la sucesión a la función límite.

Antes que nada observamos que al ser = ( )f x 0 en el intervalo [ ],0 1 , es = − fn f∞

fn∞ y que

como las funciones son derivables también son continuas y el supremo es el valor máximo.

- Determinación de = αn fn∞

A la vista de las gráficas, es claro que f0 y f1 alcanzan el máximo en = x 1, al ser crecientes en el

intervalo [ ],0 1 . Para n > 1 el supremo de fn se alcanza en un máximo local del intervalo ( ) ,0 1 ,

situado en el punto de abscisa = x xn , en el que la derivada fn' se anula.

1) Hallemos la abscisa = x xn del máximo buscado, determinando primero, con la ayuda de

Maple, la solución de la ecuación = ( )

xfn x 0 en el intervalo ( ) ,0 1 , utilizando para derivar

el comando diff (y su versión inerte Diff para mostrar la expresión a derivar).

> Diff(f(x,n),x)=diff(f(x,n),x); # Derivamos,

= ∂

x( )x e

( )−n x − e

( )−n xx n e

( )−n x

> eqn:=factor(rhs(%)); # simplificamos la ecuación...

:= eqn −e( )−n x

( )− + 1 n x

> solve(eqn,x); # ... y resolvemos en x

1

n

2) La salida obtenida es la abscisa = xn 1 / n del máximo en [ ],0 1 para cada función fn . El

supremo buscado, para cada n, será entonces el valor = αn ( )fn 1 / n , que se encuentra

evaluando = ( )fn xn ( )f ,1 / n n .

19INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 20: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

> f(1/n,n);

e( )-1

n

- Ejercicio 2.3: Dibujar el punto = ( ),xn αn ( ),1 / n 1 / n e sobre la gráfica de fn , para algunos

n, hasta convencerse de que el punto coincide con el extremo relativo de la función correspondiente.

- Cálculo del límite = lim → n ∞

αn lim → n ∞

e( )−1

n

Finalmente, calculamos el límite de la sucesión ( ) αn , para comprobar si es nulo. > limit(exp(-1)/n,n=infinity);

0

Por tanto, efectivamente = lim → n ∞

αn 0 y la sucesión de funciones = ( )fn x x e( )−n x

converge

uniformemente a la función límite, = ( )f x 0, en el intervalo [0,1]. _________________________________________|

En el Ejemplo 1.2.1 las "cuentas" son tan sencillas que no era necesario usar Maple (¿o si...?), pero en otros casos similares (por ejemplo, si el supremo α

n es un máximo interior de cálculo

complicado) la ayuda en el cálculo puede ser significativa, aunque por supuesto el proceso no siempre tendrá éxito.

- Ejercicio 2.4:

(1) Declarar ≤ 0 b < 1 y comprobar geométricamente que la sucesión de funciones

= ( )fn x − + x xn converge uniformemente a su función límite en [ ],0 b .

Indicación: Considerar algunos valores < b 1 hasta convencerse.

(2) Utilizando Maple, probar la convergencia uniforme analíticamente.

(3) ¿Converge uniformemente la sucesión en el intervalo [0,1)?

20INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 21: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

1.3 Series de potencias.

> restart;

> with(plots):

> interface(showassumed=1);

Series numéricas y series de funciones.

Iniciamos en esta sección el estudio de las series de funciones, recordando previamente como opera Maple con series.

• Series numéricas.

Con Maple pueden calcularse algunas sumas, tanto finitas como "infinitas", haciendo uso del comando sum (también tiene una versión inerte Sum).

Ejemplo 1.3.1________________________

Maple puede evaluar una suma parcial finita de una serie dando el valor exacto o aproximado:

∑ = n 1

10 + 1 n

+ 1 n4 = + + + + 1

3

+ 1 24

4

+ 1 34...

11

+ 1 104

> sum( (1+n)/(1+n^4), n=1..10);

51508056727594732913722

40626648938819200088497> evalf(%); # valor aproximado

1.267839166

... y a veces también permite obtener la suma de la serie numérica correspondiente:

∑ = n 1

∞ + 1 n

+ 1 n4 = + + + + + 1

3

+ 1 24

4

+ 1 34...

11

+ 1 104...

(Recuerde que si Maple no conoce cómo evaluar "algo" devolverá la entrada...)

> ∑ = k 1

∞ + 1 k

+ 1 k4

21INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 22: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

∑ = _α ( )RootOf + 1 _Z

4

− −

1

4_α

1

4_α

2 ( )Ψ − 1 _α

En este último caso y en otros análogos, en los que la salida es una expresión "complicada", el programa suele disponer de un algoritmo apropiado para obtener una aproximación de la salida simbólica, con el comando evalf.

> evalf(%);

1.272650602_________________________________________|

• Maple tiene implementado el empleo de fórmulas simbólicas para obtener el valor "exacto" de la suma de algunas series numéricas:

Ejemplo 1.3.2________________________

Maple conoce las series más conocidas que se utilizan en la Introducción al Cálculo, como la serie

geométrica ∑ = n 0

rn y la serie armónica generalizada ∑

= n 1

∞1

na , que está implementada con la función

zeta de Riemann, = z ( )ζ a .

> Sum(r^n, n=0..infinity) = sum(r^n, n=0..infinity);

= ∑ = n 0

rn −

1

− r 1

>

> Sum(1/n^a, n=1..infinity) = sum(1/k^a, k=1..infinity);

= ∑ = n 1

∞1

na

( )ζ a

En los casos particulares, a veces, devuelve el valor exacto operando simbólicamente, por lo que suele ser necesario utilizar el comando evalf para conocer el valor aproximado:

> Sum(1/n^2, n=1..infinity)= sum(1/k^2, k=1..infinity);

= ∑ = n 1

∞1

n2

1

2

> evalf(rhs(%));

1.644934068

22INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 23: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

> ∑ = n 1

∞1

n3

( )ζ 3> evalf(%);

1.202056903

Por supuesto, también tiene implementado casos particulares que divergen:

> , ,∑ = n 0

2n ∑ = n 1

∞1

n∑ = n 1

∞1

n

, ,∞ ∞ ∞

Aunque a veces, al utilizar series de términos positivos y negativos se "cuela":

> ∑ = n 0

( )−2 n

1

3

NOTA: En versiones posteriores está corregido y al menos Maple retorna la entrada como salida, indicando así que no conoce el resultado y devolviendo la pelota al usuario...

_________________________________________|

- Ejercicio 3.1:

(1) Comprobar que el resultado de la serie ∑ = n 1

∞1

n4 es un múltiplo de π4.

(2) Obtener el valor de Maple para la serie armónica alternada − + − + 11

2

1

3

1

4... .

• Por supuesto, no se puede suponer que Maple conoce todas las respuestas: es una ayuda, no el compendio del saber universal (y como hemos visto, a veces contiene errores...).

23INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 24: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

Ejemplo 1.3.3________________________

Aunque trivialmente la serie ∑ = n 1

∞( )cos n

n2

es absolutamente convergente (obsérvese que la serie

∑ = n 1

( )cos n / n2 está mayorada por ∑ 1 / n

2 ), Maple no conoce ni la suma ni su carácter, y en

consecuencia no devuelve una aproximación de la suma:

> sum(cos(n)/n^2,n=1..infinity);

∑ = n 1

∞( )cos n

n2

> evalf(%);

∑ = n 1

∞( )cos n

n2

No obstante, Maple permite aproximar las sumas parciales de la serie, pero si ésta no fuera convergente, podríamos estar aproximando... ¡un límite que no existe!

>

evalf ∑

= n 1

10( )cos n

n2

0.3169046738_________________________________________|

- Ejercicio 3.2: Crear una sucesión con las 30 primeras aproximaciones de las sumas parciales

de la serie ∑ = n 1

∞( )cos n

n2

y ver si tiene "pinta" de convergente. Hacer lo mismo con la serie

armónica para observar que una divergencia muy lenta puede hacer creer que converge.

• Series de funciones.

Cuando se trata de serie de funciones, Maple también suele tener implementados algoritmos que dan "fórmulas" para la suma de algunas series conocidas. Por ejemplo, pueden obtenerse las sumas de algunas series de potencias, empleando el comando sum, como anteriormente se ha hecho con las series numéricas.

24INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 25: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

Ejemplo 1.3.4________________________

Como se vio en el Ejemplo 1.3.2, Maple conoce la suma de la serie geométrica:

> Sum(x^n, n=0..infinity) = sum(x^n, n=0..infinity);

= ∑ = n 0

xn −

1

− x 1

Observación importante: No obstante, Maple no indica el intervalo de convergencia de la serie de funciones; por lo tanto, se puede hacer un mal uso de las fórmulas de sumación "infinita", que sería imputable solamente al usuario "poco cuidadoso".

____________|

Por ejemplo, si hacemos = x 5 en la igualdad anterior, se obtiene una barbaridad:

> subs(x=5,%);

= ∑ = n 0

5n-1

4

Por supuesto, al ser una serie geométrica de términos positivos Maple implementa correctamente

que la serie numérica ∑ 5n es divergente.

> ∑ = n 0

5n

Lo que provoca el error es la utilización de la función suma = ( )S x1

− 1 x para evaluar series

numéricas, ∑ = n 0

αn, en puntos = x α que están fuera del intervalo de convergencia de la serie de

funciones ∑ xn, para los que obviamente la igualdad = ∑

= n 0

αn 1

− 1 α no es cierta.

_________________________________________|

• Moraleja: (Seamos usuarios con criterio para no meter la pata...) Las sumas simbólicas infinitas que conoce Maple son correctas sólo en el intervalo de convergencia de la serie considerada. ¡¡Y ése intervalo se supone conocido por el usuario!!

25INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 26: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

- Ejercicio 3.3: Utilizar Maple para encontrar las sumas de las series de potencias

∑ = n 0

∞x

( ) + n 1

!n , ∑

= n 1

n xn y ∑

= n 0

∞( )−1 n

xn

+ n 1

y justificar en cada caso el porqué de las salidas.

Radio de convergencia de una serie de potencias.

Como Maple tiene implementado el cálculo de límites y la resolución de inecuaciones, además de visualizar gráficos, puede ayudar a veces a calcular el radio de convergencia de una serie de potencias, así como a determinar el intervalo de convergencia, haciendo "cuentas" por nosotros.

Ejemplo 1.3.5________________________

Vamos a analizar paso a paso la obtención del radio de convergencia de la serie de potencias

∑ ( )fn x = = ∑ an xn ∑

= n 0

∞( )−2 n

x( )2 n

+ 3 n 1 .

1º) Creamos una función de dos variables, que llamamos fn, para obtener precisamente el término n-ésimo no nulo de la serie de funciones:

> fn:=(n,x)->(-2)^n*x^(2*n)/(3*n+1);

:= fn → ( ),n x( )-2 n

x( )2 n

+ 3 n 1> fn(n,x);

( )-2 nx

( )2 n

+ 3 n 1

Conviene declarar la variable n como natural, para que Maple la trate y simplifique como tal.

> assume(n,natural);

> interface(showassumed=0);

Los 4 primeros términos no nulos de la serie de funciones, por ejemplo, serían

26INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 27: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

> seq(fn(k,x),k=0..3);

, , ,1 −1

2x

2 4

7x

4 −4

5x

6

Obsérvese que los términos son de la forma an xn, pero los correspondientes a las potencias

impares de n son = ( )fn x 0, ya que no aparecen en la serie. Por otro lado, las 4 primeras sumas parciales distintas son:

> seq(sum(fn(k,x),k=0..n),n=0..3);

, , ,1 − 11

2x

2 − + 11

2x

2 4

7x

4 − + − 11

2x

2 4

7x

4 4

5x

6

Formalmente, los distintos elementos, an , ( )an x , ( )Sn x y ( )f x , que intervienen en la serie de

funciones del ejemplo, ∑ ( )fn x , cuando se trata como serie de potencias ∑ an xn serían:

= an

( )−2 k

+ 3 k 1 = n 2 k ( ) par

0 = n impar

,

= ( )an x an xn, = ( )Sn x + + ( )a0 x ... ( )an x y = ( )f x lim

→ n ∞

( )Sn x .

O mejor:

= a2 n

( )−2 n

+ 3 n 1 , = a + 2 n 1 0 , , , , = n 0 1 2 ... ,

= ( )a2 n x( )−2 n

x( )2 n

+ 3 n 1 , = ( )a + 2 n 1 x 0 , , , , = n 0 1 2 ... ,

( )S2 n x = = ( )S + 2 n 1 x ∑ = k 1

n( )−2 k

x( )2 k

+ 3 k 1 , , , , = n 0 1 2 ... ,

= ( )f x ∑ = n 1

∞( )−2 n

x( )2 n

+ 3 n 1

¡¡ Cada uno tiene su papel y confundirlos es una fuente de errores!!

27INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 28: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

No obstante, como serie de funciones se puede considerar = ( )fn x a2 n x( )2 n

y hemos definido así la función fn porque resulta más cómodo para operar... Pero atención, en tal caso, cuidado con algunos aspectos de la teoría, que no pueden aplicarse "a la ligera"; por ejemplo, no se puede

confundir an con a2 n al hallar el radio de convergencia de la serie de potencias: las sucesiones

a + n 1

an

y an

1

n

no son convergentes y de ellas no se obtiene por tanto el radio de convergencia r de la serie de

potencias ∑ an xn con las "fórmulas"

= 1

rlim → n ∞

a + n 1

an

ó = 1

rlim → n ∞

an

1

n

- Ejercicio 3.4: Representar gráficamente las funciones ( )a6 x y ( )S6 x en el intervalo [ ],−1 1

. ¿Qué significado puede tener que ( )a6 x esté tan "pegado" al eje de abscisas en las

proximidades de = x 0?

2º) Así, para hallar el radio de convergencia de la serie podemos obtener la expresión que resulta de aplicar algún criterio de convergencia absoluta de series numéricas a la serie de funciones, en la que x se considera "un número"; por ejemplo, para utilizar el criterio del cociente se hace:

> := eqxn( )fn , + n 1 x

( )fn ,n x

:= eqxn( )-2

( ) + n 1x

( ) + 2 n 2( ) + 3 n 1

( ) + 3 n 4 ( )-2 nx

( )2 n

Por supuesto, se puede simplificar la expresión anterior (como se haría a mano):

> eqxn:=simplify(eqxn);

:= eqxn 2x

2 ( ) + 3 n 1

+ 3 n 4

3º) Al tomar límite para → n ∞ (y tiene que desaparecer la variable n, que ya no interviene):

28INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 29: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

> := eqx lim → n ∞

eqxn

:= eqx 2 x2

4º) Finalmente, se determina para qué valores de x es el límite obtenido < 1 utilizando el comando

solve para resolver la inecuación < 2 x2 1 (se puede hacer de dos formas).

> solve(eqx<1,x); # una forma de usar solve

RealRange ,

Open −

1

22

Open

1

22

> solve(eqx<1,{x}); # otra forma de usar solve

{ }, < x1

22 < −

1

22 x

Así, concluimos que la serie converge absolutamente para < x2

2 y diverge para <

2

2x ,

luego el radio de convergencia es = r2

2 .

Observación importante: en este caso, al ser nulos los coeficientes an con n impar, para poder determinar el radio de convergencia utilizando alguna de las "fórmulas"

= 1

rlim → n ∞

a + n 1

an

ó = 1

rlim → n ∞

an

1

n

se tiene que hacer un cambio de variables. Por ejemplo, poniendo = y x2, el radio ry de la serie de

potencias = ∑ an

yn ∑

= n 0

∞( )−2 n

yn

+ 3 n 1 se obtiene directamente de a

n ...

> lim → n ∞

( )−2 n

+ 3 n 1

1

n

2

Es decir, de = 1 / ry 2 se determina = ry 1 / 2, y deshaciendo posteriormente el cambio se tiene el

radio de convergencia de la serie original = rx 2 / 2. ____________|

29INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 30: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

5º) Al estudiar el comportamiento en los extremos = x −2

2 y = x

2

2 , se obtienen series

numéricas, que podemos tratar como tales:

>

simplify

fn ,n

2

2

( )-1 n

+ 3 n 1

La serie ∑ = n 0

∞( )−1 n

+ 3 n 1 es convergente (Leibniz) y Maple puede incluso evaluar la suma:

> ∑ = n 0

∞( )−1 n

+ 3 n 1

+ 1

9π 3

1

3( )ln 2

> evalf(%);

0.8356488485

Obsérvese que en el otro extremo del intervalo se obtiene también una serie convergente (la misma, en este caso); no obstante, la convergencia en los extremos no es absoluta, ya que la serie resultante

de términos positivos tiene el mismo carácter de la serie armónica ∑ 1 / n , que es divergente:

> ∑ = n 0

∞( )−1 n

+ 3 n 1

• Una vez determinado el radio de convergencia, se pueden resumir los resultados relativos a la convergencia de la serie de potencias:

La serie de potencias ∑ = n 0

∞( )−2 n

x( )2 n

+ 3 n 1 , de radio de convergencia = r

1

2 , converge

absolutamente en cualquier x del intervalo

,−

2

2

2

2 y puntualmente en el intervalo

,−

2

2

2

2 , en el que la convergencia de la serie a la función suma es además uniforme.

_________________________________________|

30INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 31: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

- Ejercicio 3.5: Utilizar Maple para hallar el radio de la serie ∑ = n 1

∞( ) − n

2 3 n x( ) + 5 n 7

3( ) + 2 n 1

a partir de

la sucesión = an

− n2 3 n

3( ) + 2 n 1

, considerando el oportuno cambio de variables.

• Suma de series numéricas usando series de potencias.

Una vez que se conoce el radio de convergencia de una serie de potencias, se puede aproximar el

valor de la suma en cualquier x del intervalo de convergencia

Ejemplo 1.3.6________________________

Podemos aproximar el valor de la función suma = ( )f x ∑ = n 0

∞( )−2 n

x( )2 n

+ 3 n 1 en cualquier punto x del

intervalo

,−

2

2

2

2 . Por ejemplo, siguiendo con la definición anterior de fn, se tiene que el

valor = ( )f 2 / 3 ∑ = n 0

∞( )−2 n ( )2 / 3

( )2 n

+ 3 n 1, es aproximado con 11 sumandos de la serie como:

> Sum(fn(n,2/3),n=0..10);

∑ = n 0

10 ( )-2 n

2

3

( )2 n

+ 3 n 1

> evalf(%);

0.8529411639

Obsérvese que al ser ∑ = n 0

∞( )−2 n ( )2 / 3

( )2 n

+ 3 n 1 una serie alternada, el error cometido es menor que el

primer término que se desprecia:

> < error

evalf

211

2

3

( )2 ( )11

+ 3 ( )11 1 < error 0.008050879677

31INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 32: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

- Ejercicio 3.6: ¿Cuántos sumandos de la serie ∑ = n 0

∞( )−2 n ( )2 / 3

( )2 n

+ 3 n 1 habría que tomar para

garantizar 5 cifras decimales exactas para la aproximación de ( )f 2 / 3 ?

Al tratar series numéricas, como hemos indicado antes, Maple proporciona un valor simbólico "exacto" de la suma (si puede), en término de funciones elementales que ya tiene implementadas (a lo mejor en términos de funciones "no tan elementales"); posteriormente, el valor simbólico de la suma puede ser aproximado con Maple, que emplea algoritmos más "sofisticados" que sumar directamente los términos de la serie numérica correspondiente (en realidad, cuando es necesario, se sustituye la serie numérica por otra que acelera la convergencia).

Por ejemplo, Maple proporciona un valor simbólico para la serie que evalúa ( )f 2 / 3 :

> Sum(fn(n,2/3),n=0..infinity)=

sum(fn(n,2/3),n=0..infinity);

= ∑ = n 0

∞ ( )-2 n

2

3

( )2 n

+ 3 n 1

1

3

LerchPhi , ,

-8

91

1

3

Y también el valor aproximado de la suma, utilizando el comando evalf:

> f(2/3)=evalf(rhs(%));

=

f

2

30.8485035316

De modo análogo, si puede, Maple presenta la función suma de la serie de potencias que usa para evaluar series numéricas en los x del intervalo de convergencia. En este ejemplo, utiliza la función LerchPhi, que está definida en realidad como la suma de otra serie de potencias que se toma como referencia (consultar la ayuda).

> ∑ = n 0

∞( )−2 n

x( )2 n

+ 3 n 1

1

3

LerchPhi , ,−2 x

2 11

3_________________________________________|

32INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 33: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

Aproximación gráfica de las sumas parciales.

Como en las secciones anteriores, es evidente que, aunque la teoría de series de potencias es muy clara al respecto, Maple permite el análisis gráfico del tipo de convergencia en cada intervalo.

Ejemplo 1.3.7________________________

Siguiendo con el Ejemplo 1.3.6 anterior, para ver gráficamente las primeras aproximaciones de ( )S

nx a ( )f x , primero creamos la función Sn, en las variables n y x, para que calcule la suma

parcial ( )Sn

x de la serie de funciones (en realidad, S2 n como serie de potencias...), y luego se

podrán dibujar algunas sumas parciales junto a la función suma = ( )f x lim → n ∞

( )Sn

x .

> Sn:=(n,x)->sum(fn(k,x),k = 0..n);

:= Sn → ( ),n x ∑ = k 0

n

( )fn ,k x

> Sn(0,x);Sn(1,x);Sn(2,x);

1

− 11

2x

2

− + 11

2x

2 4

7x

4

Asignamos a f la expresión cerrada para la suma de la serie y la dibujamos, en azul, junto a las 15 primeras sumas parciales de la serie de funciones. A efectos prácticos, el intervalo que se debería tomar es

>

,−

evalf

2

2

evalf

2

2[ ],-0.7071067810 0.7071067810

pero lo reducimos al intervalo [ ],−.7 .7 y usamos evalf siempre que sea posible para que las aproximaciones no consuman un tiempo "exagerado" (Maple intenta operar en simbólico).

> f:= x -> evalf(1/3*LerchPhi(-2*x^2,1,1/3));

:= f → x

evalf

1

3

LerchPhi , ,−2 x

2 11

3

33INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 34: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

Como siempre, asignamos el dibujo de la gráfica a la variable dib_f y el de las sumas parciales a la variable dib_Sn para mezclarlas posteriormente con el comando display (no olvidar terminar las asignaciones de gráficos en : para evitar mostrar el código).

> dib_f:=plot(f(x), x=-0.7..0.7, y, thickness=2, color=blue):

> dib_Sn:=display( seq(plot(evalf(Sn(n,x)), x=-0.7..0.7, y),

n=1..15)):

>

> display(dib_f,dib_Sn);

Para verlo animado, asignamos la animación de las sumas parciales a Sn_animada (recuérdese la

opción insequence=true ) para insertar el dibujo de f en cada ventana.

> Sn_animada:=display( seq(plot(evalf(Sn(n,x)), x=-0.7..0.7, y),

n=0..15), insequence=true):

>

> display(Sn_animada,dib_f);

Si ponemos en los ejes la misma unidad, se verá algo "más parecido" a la realidad...

> display(%,scaling=constrained,insequence=true);

34INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 35: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

Como la función es par, veamos sólo uno de los laterales en detalle

> display(dib_f,dib_Sn, view=[0.6..0.7,0.8..0.9],

tickmarks=[2,3]);

Finalmente, veámoslo animado:

> display(Sn_animada, dib_f, view=[0.6..0.7,0.8..0.9],

tickmarks=[2,3]);

- Ejercicio 3.7: (Una vez más). Dibujar una banda ( )B ,f ε sobre la función límite en el intervalo del dibujo anterior para mostrar gráficamente la convergencia uniforme de la serie de potencias.

35INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 36: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

Para concluir, dibujamos la función f , junto a la aproximación ( )S10 x , por ejemplo, destacando el intervalo de convergencia y el recinto donde las sumas parciales aproximan a la función suma.

> dib_S10:=plot(Sn(10,x), x=-0.805..0.805, y, thickness=2):

> dib_int := polygonplot(

[[-.707,0.78],[-.707,1.04],[.707,1.04],[.707,0.78]],

thickness=2, color=gray):

>

> display(

dib_f,dib_S10,dib_int,tickmarks=[[-.707,0,.707],[0,0.8,1]]);

_________________________________________|

- Ejercicio 3.8: Para la serie = ( )S x ∑ ( )fn x del Ejemplo 1.3.6, obtener la serie integral

d⌠⌡

0

x

( )S t x y el valor aproximado para = x 1 de d⌠

0

x

( )S3 t x ¿Se irá aproximando el valor a la

integral de la suma en = x 1 si se van integrando las sumas parciales ( )Sn x , para → n ∞ ?

Desarrollos limitados en serie de Taylor.

Si buscamos el desarrollo en serie de una función analítica en el punto = x a,

= ( )f x ∑ = n 0

f( ) n

( ) a

!n( ) − x a

n

36INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 37: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

el comando taylor (o series, que es más general) proporciona el desarrollo limitado hasta el orden n que se quiera, en el que lógicamente está implícita la suma parcial (n-1)-ésima.

Ejemplo 1.3.8________________________

Si tenemos = ( )f x − ( )ln − 1 x y queremos el polinomio de Taylor de grado ≤ 3, en el origen, calculamos previamente el desarrollo de orden 4 usando taylor :

> f:=x->-ln(1-x);

:= f → x − ( )ln − 1 x

> des4:=taylor(f(x), x=0, 4 );

:= des4 + + + x1

2x

2 1

3x

3 ( )O x4

Maple distingue el desarrollo limitado de una función del polinomio de Taylor correspondiente y tiene implementado algunas operaciones con desarrollos, como la derivada y la integral, que emplean los mismos comandos que las funciones:

> diff(des4,x); int(des4,x);

+ + + 1 x x2 ( )O x

3

+ + + 1

2x

2 1

6x

3 1

12x

4 ( )O x5

No obstante, hay comandos que no se pueden emplear con desarrollos; en particular, no se puede emplear el comando gráfico plot con desarrollos limitados:

> plot(des4,x=-1..1); # no se pueden dibujar desarrollosPlotting error, empty plot

Sin embargo, siempre es posible seleccionar el polinomio correspondiente a un desarrollo limitado, usando el comando convert con la opción polynom :

> p3:=convert(des4,polynom);

:= p3 + + x1

2x

2 1

3x

3

Y entonces se puede manejar el polinomio como cualquier otra expresión:

> plot(p3,x=-2..2);

37INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 38: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

Por supuesto p3 es la suma parcial correspondiente del desarrollo en serie de potencias de la

función = ( )f x − ( )ln − 1 x y sus gráfica son "parecidas" en el intervalo de convergencia:

> plot([f(x),p3],x=-1..1,color=[blue,red],thickness=2);

_________________________________________|

- Ejercicio 3.9: (De ICI, para recordar...) Calcular el limite

lim → x 0

− − ex 1 ( )sen x

− 1 ( )cos x

haciendo uso de los desarrollos de Taylor apropiados de las funciones ex, ( )sen x y ( )cos x . Comprobar que si los desarrollos no se toman suficientemente altos, se cometen errores.

Observación importante: Nótese que obtener el desarrollo limitado de Taylor de una función no proporciona el término general del desarrollo en serie de potencias; de hecho, incluso en casos sencillos no se podría deducir el término general a partir de los valores obtenidos con el desarrollo limitado... En la sección siguiente se muestran ejemplos de cómo obtener con Maple el término general de algunos desarrollos.

____________|

38INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 39: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

1.4 Aplicaciones de las series de potencias: Transformada Z.

Hemos visto en la sección anterior cómo las series de potencias permiten aproximar series numéricas e incluso obtener una expresión simbólica de la suma, a partir de una fórmula cerrada conocida para una serie de potencias. En esta sección vamos a considerar una aplicación de las series de potencias, la transformada Z, que permite en algunos casos obtener fórmulas cerradas y resolver recurrencias de forma casi "automática", por lo que los programas de Cálculo Simbólico suelen tener implementado su uso.

Función generatriz y Transformada Z.

> restart;

> interface(showassumed=1):

• El desarrollo en serie de potencias = ( )G x ∑ = n 0

an xn es considerado en esta sección como la

función generatriz, = y ( )G x , de la sucesión de sus coeficientes = ( ) an ( ), , ,a0 a1 a2 ... .

• La transformada Z, = y ( )A z , de la sucesión = ( ) an ( ), , ,a0 a1 a2 ... es la función generatriz

"cambiando" la variable x por la variable z, mediante la relación = x1

z en el desarrollo, es

decir = ( )A z ( )G z( )−1

.

Notación: usaremos el nombre de la sucesión en mayúsculas para su transformada Z y la letra G, si no hay confusión, para su función generatriz. Además, respetaremos los símbolos z y x para sus variables. Así, la función generatriz y la transformada Z de la sucesión ( ) a

n son relacionadas

mediante la equivalencia

= ( )G x ∑ = n 0

an xn <===> = ( )A z ∑

= n 0

an

1

z

n

.

En la notación de Maple, se pueden definir las series respectivas mediante el comando sum.

> G := x->sum(a[n]*x^n,n = 0 .. infinity);

:= G → x ∑ = n 0

an xn

39INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 40: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

> A := z->sum(a[n]*(1/z)^n, n=0..infinity);

:= A → z ∑ = n 0

an

1

z

n

Dado que teniendo ( )G x y sustituyendo x por 1/z se obtiene ( )A z , y viceversa, usaremos la forma que más nos convenga para obtener cualquiera de ellas.

En general, nos limitaremos a utilizar las expresiones cerradas más generales que devuelve el comando sum al evaluar sumas infinitas, o emplearemos el comando ztrans, que calcula transformadas Z para algunas sucesiones.

• Usando el comando sum .

Cuando a Maple se le pide la suma de la serie de potencias, con sum, nos devuelve una forma

cerrada para la función generatriz ( )G x , si conoce la respuesta. Así que para obtener la forma cerrada de la transformada Z podemos calcular = ( )A z ( )G 1 / z .

Ejemplo 1.4.1________________________

Si consideramos = a0 0, = an 1 / n (nótese que es necesario asignar un valor al término a0 ),

entonces la función generatriz de la sucesión (an) se obtiene inmediatamente con Maple:

> := Gx ∑ = n 1

∞x

n

n

:= Gx − ( )ln − 1 x

Para obtener la expresión de la transformada Z de la sucesión utilizamos subs en la expresión

resultante, o bien aplicamos directamente sum sobre 1 / z :

> Az:=subs(x=1/z,Gx);

:= Az −

ln − 1

1

z

> := Az ∑ = n 1

1

z

n

n

:= Az −

ln − 1

1

z

40INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 41: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

Observación técnica: Como sum recibe y devuelve expresiones, la asignación de Gx no ha sido reconocida como una función y por eso ha sido necesario utilizar el comando subs. El resultado

Az también se ha obtenido como expresión. Si se quieren manejar como funciones (en el sentido matemático), se pueden declarar en la forma x->Ax y z->Az, o recuérdese que las expresiones se pueden convertir directamente en funciones con el comando unapply.

____________|

Podemos convertir la expresión de la función generatriz en una función:

> G:=unapply(Gx,x);

:= G −( ) → x ( )ln − 1 x

> G(x);

− ( )ln − 1 x

En modo análogo, evaluando G en 1 / z se obtiene la función generatriz:

> A:=unapply(G(1/z),z);

:= A −

→ z

ln − 1

1

z

> A(z);

ln − 1

1

z

_________________________________________|

- Ejercicio 4.1: Obtener la forma cerrada de la función generatriz y de las transformada Z de las

sucesiones = ( ) bn

, , , , ,1 1

1

2

1

!3

1

!4... y = ( ) cn

, , , , ,−3 3

−3

2

3

!3

−3

!4... .

• Usando el comando ztrans

El comando ztrans o ztransform calcula directamente la transformada Z de una sucesión de término general a(n) y la expresa en la variable z (obviamente, aunque hemos decidido no hacerlo, se pueden cambiar los nombres de las variables que intervienen). Si a(n) es el término general

de una sucesión que empieza en = n 0, la sintaxis del comando es la siguiente:

> ztrans(a(n),n,z);

( )ztrans , ,( )a n n z

41INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 42: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

Ejemplo 1.4.2________________________

- La transformada Z de la sucesión = ( ) cn

, , , , ,−1 3

−3

2

3

!3

−3

!4... , obtenida en el Ejercicio 4.1,

debería haber resultado:

>

ztrans , ,−

( )−1 n 3

!nn z

−3 e

1

z

- En el caso de la sucesión = ( ) cn

, , , , ,0 1

1

2

1

3

1

4... del Ejemplo 1.4.1, Maple tratará de evaluar

= an 1 / n en = n 0, y resulta un problema:

> ztrans(1/n,n,z);Error, (in convert/hypergeom) Summand is singular at n = 0 in the interval of

summation

Con un poco de habilidad se puede evitar este inconveniente, calculando la transformada Z de la

sucesión 1

+ n 1 . Como la salida es la suma de una serie de potencias (en potencias de 1 / z), no

hay más que "ajustar" el resultado (multiplicando por 1 / z ) para obtener la transformada de an .

> ztrans(1/(n+1),n,z);Error, (in ztrans/ztrans) too many levels of recursion

Ohhhhhhhhhhhhh, no sale el resultado −z

ln − 1

1

z previsto...

En consecuencia, con esta versión de Maple no se podrían obtener con el comando ztrans la transformada Z de las sucesiones análogas a la del Ejemplo 1.4.1.

NOTA: Versiones posteriores de Maple dan la salida correcta._________________________________________|

• Obteniendo desarrollos en serie de potencias con la transformada Z.

Bueno, Maple no va a resolver todos los problemas del mundo. Seguro que el comando ztrans

42INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 43: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

tiene otras posibilidades. En efecto, con sum podemos obtener la función generatriz ( )G x , de la

sucesión = ( )a n 1 / !n , pero, como hemos indicado al final de la sección anterior, no tenemos un

comando que nos dé el término general del desarrollo en serie de ( )G x .

Sin embargo, cuando es capaz de obtener la transformada Z de una sucesión, Maple sabe invertir la

transformada Z de la función con el comando invztrans, y proporciona el término general de la sucesión. ¡Y eso es, precisamente, obtener el término general del desarrollo en serie!

Ejemplo 1.4.3________________________

Maple puede calcular directamente la transformada Z de la sucesión de termino general = an

1

!n

> ztrans(1/n!,n,z);

e

1

z

Y en consecuencia es capaz de calcular la transformada inversa de la función e

1

z

> invztrans(exp(1/z),z,n);

1

!n

Atención: Cuidado con los papeles que juegan z y n en cada comando (¡orden cambiado!).

Convirtiendo ahora la variable z en 1

x (es decir, haciendo =

1

zx ) tenemos el desarrollo en serie

de potencias de la función = ( )f x ex en la forma usual:

> exp(x)=sum(1/(n!)*x^n,n);

= ex ∑

n

xn

!n

Así, hemos obtenido el desarrollo en serie de potencias de la función = ( )f x ex en el origen,

operando en potencias de 1 / z. Es decir:

• Si Maple es capaz de invertir la transformada Z de una función y tenemos en cuenta el cambio de variables, tenemos directamente el desarrollo:

43INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 44: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

> = ex ∑

= n 0

invztrans , ,e

1

zz n x

n

= ex ∑

= n 0

∞x

n

!n

_________________________________________|

En modo análogo al del ejemplo anterior, se puede utilizar Maple para obtener el desarrollo en serie de potencias de aquellas funciones en las que el comando invztrans tiene éxito). Entre ellas, por ejemplo, las funciones racionales que Maple puede descomponer en fracciones simples; es decir, cuando puede hallar las raíces del denominador.

Ejemplo 1.4.4________________________

Para obtener el desarrollo en serie de potencias de = ( )G x1

+ 2 x 1 , definimos la función:

> G:=x->1/(2*x+1);

:= G → x1

+ 2 x 1

Y Maple proporciona la transformada Z inversa de ( )A z , directamente de la función ( )G x :

> invztrans(G(1/z),z,n); # 1/z por x ...

( )-2 n

Por lo que, teniendo en cuenta que son valores obtenidos son los coeficientes an de la serie de

potencias = ( )G x ∑ an xn, podemos expresar en este caso el desarrollo de la función:

= ( )G x ∑ = n 0

( )−2 nx

n .

Obsérvese que una vez definida la función = y ( )G x se puede obtener el desarrollo con una línea de código:

> G(x)=Sum(invztrans(G(1/z),z,n)*x^n, n=0..infinity);

= 1

+ 2 x 1∑ = n 0

( )-2 nx

n

44INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 45: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

Atención: ¡¡falta indicar el intervalo donde es válido el desarrollo en serie o al menos el radio de convergencia de la serie de potencias!!

• Evidentemente si utilizamos el comando sum para obtener la suma de la serie ∑ = n 0

( )−2 nx

n , se

debe obtener la función que se ha desarrollado:

> ∑ = n 0

( )−2 nx

n

1

+ 2 x 1_________________________________________|

- Ejercicio 4.2:

(1) Hallar el desarrollo en serie de potencias de la función = ( )f x− + 3 7 x

− + 2 7 x 6 x2 .

( )f x = − + 3 7 x

− + 2 7 x 6 x2 = −

1

− 1 2 x

5

− 2 3 x .

(2) Obtener la descomposición en fracciones simples = ( )f x + 1

− 1 2 x

−5

− 2 3 x y comprobar que

la suma de los desarrollos de las fracciones coincide con el obtenido en el apartado (a).

Indicación: El comando convert, en la forma convert(q(x),parfrac,x), puede a veces descomponer la expresión racional q(x) en fracciones simples...

Por supuesto, en los casos en que funciona la transformada Z, se puede obtener la expresión cerrada de la función generatriz de la sucesión sin tener que pasar por el comando sum .

Ejemplo 1.4.5________________________

Se puede hallar la función generatriz de la sucesión de término general = an 1

2

3

2

n

usando la

variable z para obtener la transformada Z, → z ( )A z , y luego haciendo el oportuno cambio de

variables = z1

x para recuperar así la función generatriz = ( )G x ( )A 1 / x :

45INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 46: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

> := A

unapply ,

ztrans , ,

3n

2( ) + n 1

n z z

:= A → z1

3

z

− 2

3z 1

> simplify(A(1/x));

−1

− + 2 3 x

Observación técnica: Dada una sucesión, la implementación de la transformada Z no permite el

cambio de variables = z1

x , utilizando directamente

1

x en vez de la variable z:

> ztrans((1/2)*(3/2)^n,n,1/x); Error, ztrans expects its 3rd argument, z, to be of type name, but received 1/x

____________|

En consecuencia, se debe hacer como en el ejemplo: primero se obtiene la transformada Z (en la variable z ) y luego la función generatriz.

_________________________________________|

- Ejercicio 4.3: Obtener la expresión cerrada de función generatriz = ( )G x ∑ = n 0

∞( )−1 n

x( )2 n

!( ) + 2 n 1

con el comando sum. ¿Es posible hallar ( )G x empleando el comando ztrans?

Resolviendo recurrencias con la transformada Z.

Vamos a utilizar las posibilidades de Maple para comprobar propiedades de la transformada Z. Posteriormente, veremos como se emplea para resolver ecuaciones de recurrencia.

Observación técnica: Los apóstrofes ', que se usan en la eliminación de variables, retrasan la ejecución de los comandos, es decir, 'comando' no ejecuta comando, por lo que se suele emplear en una igualdad para ver el efecto de un comando, cuando éste no tiene versión inerte, como es el caso de los comandos relacionados con la transformada Z.

46INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 47: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

Por ejemplo, para mostrar la linealidad de la transformada Z en la salida, si ,c1 c2 son constantes,

que no dependen de n, se puede escribir:

> 'ztrans'(c[1]*a(n)+c[2]*b(n),n,z)=

ztrans(c[1]*a(n)+c[2]*b(n),n,z);

= ( )ztrans , , + c1 ( )a n c2 ( )b n n z + c1 ( )ztrans , ,( )a n n z c2 ( )ztrans , ,( )b n n z

No obstante, también se muestra la linealidad presentando el código en la forma habitual:

> ( )ztrans , , + c1 ( )a n c2 ( )b n n z

+ c1 ( )ztrans , ,( )a n n z c2 ( )ztrans , ,( )b n n z

____________|

El uso principal de la transformada Z (o de la función generatriz) es para resolver recurrencias con el siguiente esquema:

1 Ecuación recurrencia. Incógnita: a(n) ------- > Transformada Z de la ecuación || | || X | 2 || v Transformada Z inversa de A(z) < ------- Ecuación algebraica. Incógnita: A(z) 3

Ya hemos visto que Maple aplica la linealidad. Veamos ahora cómo se comporta Maple con los distintos tipos de elementos que pueden intervenir en una ecuación de recurrencia.

Ejemplo 1.4.6________________________

Maple conoce las reglas para los desplazamientos , ,( )a + n 1 ( )a + n 2 ...

> ( )ztrans , ,( )a + n 1 n z

− z ( )ztrans , ,( )a n n z ( )a 0 z

> ( )ztrans , ,( )a + n 2 n z

− − z2 ( )ztrans , ,( )a n n z ( )a 0 z

2 ( )a 1 z

> ( )ztrans , ,( )a + n 3 n z

− − − z3 ( )ztrans , ,( )a n n z ( )a 0 z

3 ( )a 1 z2 ( )a 2 z

47INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 48: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

... y ya sabemos que tiene implementado la transformada Z de algunas sucesiones, como las de

término general 1, n, n2, ... , que son funciones racionales:

> ztrans(1,n,z);

z

− z 1> ztrans(n,n,z);

z

( ) − z 1 2

> ztrans(n^2,n,z);

z ( ) + z 1

( ) − z 1 3

... y algunas expresiones más complicadas, como la suma ∑ = k 0

n

k , de los n primeros naturales:

> ztrans(sum(k,k = 0 .. n),n,z);

+ 1

2

z ( ) + z 1

( ) − z 1 3

1

2

z

( ) − z 1 2

o el caso más general de la suma de los términos de una sucesión ∑ = k 0

n

( )a k , que expresada en

función de la transformada Z de la propia sucesión, resulta:

>

ztrans , ,∑

= k 0

n

( )a k n z

z ( )ztrans , ,( )a n n z

− z 1_________________________________________|

• En resumen, podemos auxiliarnos con Maple para resolver algunas ecuaciones de recurrencia usando la transformada Z.

Veamos un ejemplo desarrollado: ¿Fibonacci? ¡¡ ¿Por qué no? !!

48INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 49: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

Ejemplo 1.4.7________________________

Partimos de la ecuación de recurrencia de Fibonacci.

> eqr:=a(n+2)=a(n)+a(n+1);

:= eqr = ( )a + n 2 + ( )a n ( )a + n 1

(Paso 1) Obtenemos la transformada Z de la ecuación de recurrencia:

> ztrans(eqr,n,z);

= − − z2 ( )ztrans , ,( )a n n z ( )a 0 z

2 ( )a 1 z + − ( )ztrans , ,( )a n n z z ( )ztrans , ,( )a n n z ( )a 0 z

Si se hace la sustitución = ( )ztrans , ,( )a n n z ( )A z , = ( )a 0 0 y = ( )a 1 1, cambiando el nombre con que Maple denota la transformada por el usual, la ecuación queda

> subs({ztrans(a(n),n,z)=A(z), a(0)=0, a(1)=1},%);

= − z2 ( )A z z + ( )A z z ( )A z

(Paso 2) Luego, tenemos la ecuación algebraica en ( )A z :

> eqa:=%;

:= eqa = − z2 ( )A z z + ( )A z z ( )A z

Maple nos ayuda a resolver la ecuación con el comando solve . La solución = ( )A zz

− − z2 1 z

la

convertimos en función con el comando unapply:

> A:=unapply(solve(eqa,A(z)),z);

:= A → zz

− − z2 1 z

(Paso 3) Así que, la transformada inversa de ( )A z es:

> an:=invztrans(A(z),z,n);

:= an −1

5

∑ = _α ( )RootOf − + + 1 _Z

2_Z

− − + + ( )charfcn0 n 2 ( )charfcn0 n _α

1

n

2

1

n

49INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 50: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

Y ya tenemos el término general de la ecuación de Fibonacci. Por cierto, una forma muy "rara" de dar el término general de una sucesión...

Observación técnica: En versiones posteriores, la salida está más simplificada y no aparece ( )charfcn0 n . No obstante, por su interés, comentaremos los elementos que intervienen en la salida

de esta versión, que siguen siendo comandos válidos en las posteriores:

• En realidad, Maple usa RootOf para referirse a las raíces del polinomio − + + 1 Z2

Z , que

aparece en el índice del sumatorio, y que denota por _α . Así, en el sumatorio hay tantos sumandos como raíces del polinomio y en cada sumando se considera una raíz distinta.

• Por otro lado, Maple usa charfcn para referirse a valores de términos concretos de la sucesión

(en este caso, al término a0 ). El comando charfcn[0](n), que Maple presenta ( )charfcn0 n en la salida, es un caso particular de charfcn[A](x), que crea la función característica del

conjunto A (definida como 1, si x está en A, y 0 en otro caso).

La función característica se suele utilizar para anular todos los términos de una sucesión ( ) an ,

excepto uno solo, o bien para modificarlo. Por ejemplo, an0, tomando = A n0 y = x n.

> seq(n^2,n=1..7);

, , , , , ,1 4 9 16 25 36 49> seq(n^2*charfcn[5](n),n=1..7); # deja el término 5

, , , , , ,0 0 0 0 25 0 0> seq(n^2-125*charfcn[5](n),n=1..7); # ... o lo altera

, , , , , ,1 4 9 16 -100 36 49____________|

Una vez entendidos los elementos que empleó Maple para la salida de ( )invztrans , ,( )A z z n , podemos poner el término general de la sucesión de Fibonacci como se acostumbra utilizando la opción radical del comando convert y simplificando:

> simplify(convert(an, radical));

− + 1

55

− +

1

2

1

25

( )−n1

5( ) + 1 5

( )−n

( )-1 n 2n 5

Bueno, ... casi como se acostumbra. Vamos a convertir el término general en una función para

50INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 51: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

calcular algunos términos:

> a:=unapply(%,n);

:= a → n − + 1

55

− +

1

2

1

25

( )−n1

5( ) + 1 5

( )−n

( )-1 n 2n 5

> a(0),simplify(a(1)),simplify(a(2));

, ,0 −41

( )− + 1 5 ( ) + 1 5−16

1

( )− + 1 52

( ) + 1 52

El comando radnormal simplifica expresiones con radicales...

> seq(radnormal(a(n)),n=0..10);

, , , , , , , , , ,0 -1 -1 -2 -3 -5 -8 -13 -21 -34 -55

Obsévese que Maple no ha tenido mucho éxito (¡¡nosotros hemos hecho las cosas bien!!): resulta que ha cambiado el signo de los términos de la sucesión de Fibonacci...

NOTA: El problema está corregido en versiones posteriores... ¡faltaría más!_________________________________________|

- Ejercicio 4.4:

(1) Leer la información del comando rsolve y utilizarlo para resolver directamente la ecuación de Fibonacci y para encontrar la función generatriz de la solución de la ecuación.

(2) Utilizar la transformada Z para resolver la ecuación de recurrencia:

= ( )a + n 1 + + 1 ( )a n

= k 0

n

( )a k , = ( )a 0 0, = ( )a 1 1,

propuesta en el boletín de problemas, y que produce los términos de la sucesión de Fibonacci, para n par.

(3) Comprobar que la solución obtenida en el apartado anterior es, efectivamente correcta (esta versión de Maple resuelve mal la ecuación de Fibonacci y bien la recurrencia anterior, que es mucho más difícil... ¡¡estos programadores!!). Por otro lado, comprobar que la ecuación de recurrencia no podría haberse resuelto con rsolve.

51INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 52: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

1.5 Series de Fourier.

> restart;

> with(plots):

> interface(showassumed=0);

Coeficientes de Euler-Fourier.

Dada una función f de periodo mínimo T y frecuencia fundamental = ω2 π

T, que verifique las

condiciones de Dirichlet, su serie de Fourier

( )f x ~ + a0 ∑ = n 1

( ) + an ( )cos n ω x bn ( )sen n ω x

queda determinada cuando se conocen los coeficientes, dados por las fórmulas de Euler-Fourier

= a0

1

Td

⌠⌡

−T/2

T/2

( )f x x, = an

2

Td

⌠⌡

−T/2

T/2

( )f x ( )cos n ω x x, = bn

2

Td

⌠⌡

−T/2

T/2

( )f x ( )sen n ω x x .

• Ya que entre las capacidades de Maple está el cálculo de integrales (de algunas, obviamente), podemos obtener rápidamente los coeficientes de Fourier de una gran clase de funciones.

Ejemplo 1.5.1_______________________

Vamos a obtener con la ayuda de Maple la serie de Fourier de tipo seno de la función 2-periódica

impar = y ( )f x definida en el intervalo ( ) ,0 1 por = ( )f x x2 .

Obsérvese que al ser la función f de periodo = T 2 se verifica = ( )f −1 ( )f 1 y por otro lado, al ser impar debe ser = ( )f 0 0 y = ( )f −1 − ( )f 1 . En consecuencia, = ( )f −1 ( )f 1 = = ( )f 0 0.

1) Como f es 2-periódica, su frecuencia fundamental será = ω2 π

T = π ; los coeficientes an

son nulos y los coeficientes bn vienen dados por

= bn

2 1

T/2 = d⌠⌡

0

T/2

( )f x ( )sen n ω x x 2 d⌠

0

1

x2 ( )sen n π x x.

52INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 53: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

Observación técnica: El comando int permite obtener fácilmente los coeficientes de la serie de

Fourier. No obstante, cuidado con la función seno, cuyo código es sin, y con el número π que

es Pi, ya que Maple reserva el código pi (inicial minúscula) para la letra griega π.____________|

> := bn

simplify 2 d

0

1

x2 ( )sin n π x x

:= bn −2 − − + n

2 π2 ( )cos n π 2 ( )cos n π 2 n π ( )sin n π 2

n3 π

3

Ahora debemos sustituir las expresiones conocidas = ( )cos n π ( )−1 n y = ( )sen n π 0. Maple lo hace directamente asumiendo que n es un número entero. > assume(n,integer);

> bn;

−2 − + n

2 π2 ( )-1 n 2 ( )-1 n 2

n3 π

3

Y tenemos la serie de Fourier buscada:

( )f x ~ ∑ = n 1

bn ( )sen n π x = ∑ = n 1

2 ( ) − + n2 π

2 ( )−1 n 2 ( )−1 n 2

n3 π

3( )sen n π x .

2) Como f verifica las condiciones de Dirichlet, su serie de Fourier converge puntualmente a la

función = ( )S x + ( )f x+ ( )f x-

2 , que vale ( )f x en los puntos de continuidad; es decir, en los

puntos ≠ x 1 + 2 n se tiene la igualdad = ( )f x ∑ = n 1

bn

( )sen n π x .

Para operar con la expresión obtenida del coeficiente bn de una forma fácil, podemos convertir su

valor en una función de n, con el comando unapply, en la forma habitual:

> b:=unapply(bn,n):

53INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 54: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

> b(n);

−2 − + n

2 π2 ( )-1 n 2 ( )-1 n 2

n3 π

3

Por supuesto, no podemos esperar que Maple sepa que la suma de la serie vale ( )f x ...

> ∑ = n 1

( )b n ( )sin n π x

∑ = n 1

−2

( ) − + n2 π

2 ( )-1 n 2 ( )-1 n 2 ( )sin n π x

n3 π

3

... pero lo vale (si "alguien" no ha metido la pata). Por ejemplo, para = x 1 / 2 , puede verse cómo tomando 50 términos de la serie la suma parcial se aproxima a = ( )f 1 / 2 0'25 :

>

evalf ∑

= n 1

50

( )b n

sin n π

1

2

0.2563626270

Observación importante: Utilizando la igualdad = ( )f −x ( )f x , con = ( )f x x2 , sólo para definir

el valor en los puntos del intervalo ( ) ,−1 0 y asignando valores distintos de 0 en los puntos = x 0

y = x 1, se obtiene una nueva función = y ( )g x , que verifica = ( )g −x ( )g x , al extender la por periodicidad excepto en los puntos = x + n (nótese que, en rigor, si ≠ ( )g 0 0 o ≠ ( )g 1 0, la función = y ( )g x no sería impar).

No obstante, la serie de Fourier de la función = y ( )g x sería la misma que la de = y ( )f x (impar), ya que las integrales que definen a los coeficientes no cambian si sólo se altera un número finito de puntos del intervalo de integración. Evidentemente, la serie de Fourier de tipo seno obtenida para = y ( )g x converge puntualmente en R, pero va a seguir convergiendo a = ( )S x ( )f x .

____________|

_________________________________________|

- Ejercicio 5.1: Obtener la serie de Fourier de la función definida en [ ],−1 1 por = ( )g x x2 y

considerada 2-periódica. (Atención: ahora, = y ( )g x es una función par).

Algunos de los fenómenos que predice la teoría son fácilmente observables gráficamente, como la disminución de las amplitudes de las frecuencias, lo que permite seleccionar aquellas que son más interesantes para analizar y aproximar la función original.

54INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 55: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

Ejemplo 1.5.2________________________

Continuando con la función = y ( )f x del Ejemplo 1.5.1, algunos valores de las amplitudes bn de

los armónicos ( )sen n ω x son:

> seq(b(n),n=1..5);

evalf(%);

, , , ,−2− + π

2 4

π3

−1

π−

2

27

− + 9 π2 4

π3

−1

2

1

π−

2

125

− + 25 π2 4

π3

, , , ,0.3786074970 -0.3183098861 0.2026505806 -0.1591549431 0.1252598563 Podemos representar gráficamente los primeros valores del diagrama espectral de frecuencias, utilizando el comando seq para generar la sucesión de barras y la versión $ del comando para generar la sucesión de marcas en el eje de abscisas del dibujo:

> dib_r:=plot([seq([n,t,t=0..evalf(b(n))],n=1..13)], color=blue,

thickness=2):

> display(dib_r, labels=[`w`,`b[n]`], tickmarks=[[n$n=0..13],5],

view=[-1..13.5,-0.4..0.4]);

Es más rápido dibujar sólo el valor de la amplitud:

> dib_p:=pointplot([seq([n,evalf(b(n))],n=1..13)],symbol=circle):

> display(dib_p,tickmarks=[[(n)$n=1..13],5],labels=[`w`,`b[n]`]);

55INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 56: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

Uniendo los puntos, con la opción style=line, se aprecian mejor las amplitudes:

> dib_p2:=pointplot([seq([n,evalf(b(n))],n=1..13)], style=line):

> display(dib_p2,tickmarks=[[(n)$n=1..13],5],labels=[`w`,`b[n]`])

;

Obsérvese en los gráficos cómo las amplitudes bn de las frecuencias = ω n π van disminuyendo en módulo y cambiando alternativamente de signo. Por supuesto, no siempre tiene por qué ser así, aunque para la serie de Fourier de una función que verifique las condiciones de Dirichlet, también se verifica la identidad de Parseval

+ a0

1

2 ∑

= n 1

( ) + an

2bn

2 =

1

T d⌠

-T/2

T/2

( )f x2

x ,

que implica que las sucesiones ( ) an y ( ) bn tienden a 0.

- Ejercicio 5.2: Comprobar con algunas sumas parciales de la serie de Fourier de la función del Ejemplo 1.5.1 que la identidad de Parseval es una desigualdad (Bessel) cuando no se toman todos los términos de la serie.

Si se está interesado en analizar gráficamente los valores algunas de las frecuencias del espectro, se puede seleccionar la zona adecuada (si está ya en un dibujo, no hay que "calcularlo" de nuevo, sólo usar el comando display); por ejemplo, entre 3 y 8 el diagrama es:

> display(dib_r,view=[2.5..8.5,-0.3..0.3],

tickmarks=[[(n)$n=3..8],5], labels = [`w`,`b[n]`]);

_________________________________________|

56INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 57: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

- Ejercicio 5.3: Obtener los primeros elementos del diagrama de frecuencias correspondiente a

las amplitudes an de la serie de Fourier de la función = y ( )g x definida en el Ejercicio 5.1.

Aproximación gráfica de las sumas parciales.

El tipo de convergencia se puede observar al representar gráficamente la función junto a algunas sumas parciales. Para visualizar la aproximación de las sumas parciales de la serie a la función f, lo mejor es crear con Maple una función que calcule la suma parcial correspondiente, operando en modo análogo a como se hizo en el caso de las series de potencias.

Ejemplo 1.5.3________________________

Para la serie de Fourier tipo seno de la función = ( )f x x2 en [0,1), siguiendo con el Ejemplo 1.5.1,

y utilizando el mismo código del Ejemplo 1.3.6 para la suma parcial, podemos poner:

> fn:=(n,x)->b(n)*sin(n*Pi*x);

:= fn → ( ),n x ( )b n ( )sin n π x

> Sn:=(n,x)->sum(fn(k,x),k = 1..n);

:= Sn → ( ),n x ∑ = k 1

n

( )fn ,k x

obteniéndose expresiones "ligeramente" más complicadas que con las series de potencias:

> Sn(3,x);

− − − 2( )− + π

2 4 ( )sin π x

π3

( )sin 2 π x

π

2

27

( )− + 9 π2 4 ( )sin 3 π x

π3

• En el caso de una serie de Fourier quizá sea más ilustrativo definir el polinomio trigonométrico de modo que se muestre la serie trigonométrica en el modo usual:

> := Sn → ( ),n x ∑ = k 1

n

( )b k ( )sin k π x

:= Sn → ( ),n x ∑ = k 1

n

( )b k ( )sin k π x

57INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 58: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

Observación técnica: Como se van a manejar gráficas de funciones "complicadas", incluso es mejor definir una suma parcial Snf, que opere en coma flotante (poniendo el comando evalf en algún sitio "estratégico"). En tal caso, se emplean menos recursos en la evaluación (tardando mucho menos tiempo), ya que no intervienen valores simbólicos "exactos" en la obtención de los resultados...

> Snf:=(n,x)->sum(evalf(b(k))*sin(k*Pi*x),k=1..n);

:= Snf → ( ),n x ∑ = k 1

n

( )evalf ( )b k ( )sin k π x

Por ejemplo, la suma simbólica y numérica en el caso 2 adoptan la expresión:

> 'S[2](x)'=Sn(2,x); 'Sf[2](x)'=Snf(2,x);

= ( )S2 x − − 2( )− + π

2 4 ( )sin π x

π3

( )sin 2 π x

π

= ( )Sf2 x − 0.3786074969 ( )sin 3.141592654 x 0.3183098861 ( )sin 6.283185308 x

____________|

• Podemos representar ahora el dibujo de las 10 primeras sumas parciales en el intervalo [ ],−2 2 :

> dib_Sn:=seq(plot(Snf(n,x),x=-2..2, y), n=1..10):

> display(dib_Sn);

Todas las aproximaciones impares y 2-periódicas. Si queremos mostrarlas junto a la función límite

f, habrá que construirla ya que la igualdad = ( )f x x2 sólo es cierta en el intervalo [0,1).

Observación técnica: Maple (al menos, esta versión) no permite definición recursiva (que haría inmediata la definición de una extensión periódica), así que para evitar ahora la creación de un

programa para extensiones periódicas, se puede definir la función f para que valga sólo en el intervalo [ ],−2 2 , usando el comando piecewise:

58INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 59: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

> f:=x->piecewise(x<=-1,(x+2)^2,x<0,-x^2,x<=1,x^2,x<2,-(x-2)^2);

:= f → x ( )piecewise , , , , , , , ≤ x -1 ( ) + x 2 2 < x 0 −x2 ≤ x 1 x

2 < x 2 −( ) − x 2 2

> f(x);

( ) + x 2 2 ≤ x -1

−x2 < x 0

x2 ≤ x 1

−( ) − x 2 2 < x 2> plot(f(x),x=-2..2,thickness=2,color=blue,discont=true);

> dib_f:=%:

____________|

Ahora podemos construir una animación en el intervalo, utilizando la opción insequence=true del comando display, para mostrar el comportamiento de la sucesión de las primeras 25 sumas parciales de la serie de Fourier con relación a la función límite:

> Sn_animada:=display(seq(plot(Snf(n,x),x=-2..2,y),n=1..25),

insequence=true):

> display(Sn_animada, dib_f, tickmarks=[4,2]);

59INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 60: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

... y concentrarnos en algunos detalles. Por ejemplo, dónde es más rápida la convergencia, cómo se comporta en los puntos de "soldadura", dónde aparece el fenómeno de Gibbs, etcétera.

> display(Sn_animada, dib_f, view=[0.5..1.5,-1.2..1.2],

title=`El fenómeno de Gibbs en x=1` );

_________________________________________|

- Ejercicio 5.4: Obtener las primeras aproximaciones de las sumas parciales correspondiente a la

serie de Fourier de la función = y ( )g x del Ejercicio 5.1 (definida en el intervalo [ ],−1 1 por

= ( )g x x2 y considerada 2-periódica), y mostrar gráficamente si la convergencia es uniforme en el

intervalo [ ],−2 2 .

Extensión periódica de una función.

Las funciones de Dirac y Heaviside. Filtros.

> restart;

> with(plots):

> interface(showassumed=0);

• La distribución de Dirac.

La función Dirac implementa en Maple la distribución ( )δ x de Dirac, que suele llamarse a veces impulso instantáneo. Aunque no sea una "verdadera" función, Maple la trata como tal.

Obsérvese cómo la representa gráficamente Maple en el intervalo [ ],−3 3 :

60INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 61: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

> plot(Dirac(x),x=-3..3,thickness=3);

Como Maple permite el análisis del comportamiento asintótico, puede dibujarla en R:

> plot(Dirac(x), x=-infinity..infinity, y=-5..5, thickness=3);

> dib_dirac:=%:

Aunque parece nula en R, la distribución de Dirac no está definida en = x 0 :

> Dirac(0);

( )Dirac 0

La implementación de Maple recoge que el comportamiento en el origen de la ( )δ x de Dirac lo determina la integral de la función sobre cualquier intervalo que lo contenga:

> d⌠⌡

−∞

( )Dirac x x

1

> lim → +a 0

d⌠⌡

−a

a

( )Dirac x x

1

61INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 62: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

Ejemplo 1.5.4________________________

- La imagen de la función de Dirac que se suele tener es representada con el código siguiente:

> dib_fl:=plottools[arrow]([0,0],[0,0.3],0.01,0.06,.4,color=red):

> display(dib_dirac, dib_fl);

- La "anomalía" en = x 0 se puede desplazar al punto = x a, con la traslación ( )Dirac − x a .

> dib_dirac2:=plot(Dirac(x-1), x=-3..3, y=-5..5, thickness=3):

dib_fl2:=plottools[arrow]([1,0],[1,2],0.04,0.2,.4,color=red):

> display(dib_dirac2, dib_fl2, tickmarks=[[0,1],[0]]);

- Las integrales que involucran al producto de una función integrable = y ( )f x por la función de Dirac son muy sencillas de calcular:

> d⌠⌡

−∞

( )f x ( )Dirac x x

( )f 0_________________________________________|

Aunque no sea una función en el sentido usual, sí se puede obtener la serie de Fourier de la delta de Dirac. Las sumas parciales permiten una aproximación mediante funciones de ( )δ x .

62INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 63: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

- Ejercicio 5.5:

(1) Obtener el desarrollo en serie de Fourier de ( )δ x , definida en [ ],−π π y extendida periódicamente (se llama un tren de impulsos), sin usar Maple para obtener los coeficientes de

Fourier (¿Quiénes son los an y bn?).

(2) Representar en una animación las primeras sumas parciales en el intervalo [ ],−3 π 3 π , para comprobar la imagen de las aproximaciones (que sí son funciones).

• La función de Heaviside.

Como la mayoría de los programas de Cálculo Simbólico, Maple también tiene implementada la función escalón de Heaviside, que denota precisamente por Heaviside.

Veamos la gráfica que Maple nos proporciona de ella en el intervalo [ ],−3 3 y en R.

> plot(Heaviside(x),x=-3..3,y=-0.5..1.5,thickness=3);

> plot(Heaviside(x),x=-infinity..infinity,y=-0.5..1.5,thickness=3

);

Renombremos la función de Heaviside a H, más "cómodo" de escribir a la hora de operar:

> H:=Heaviside;

:= H Heaviside

> H(-Pi), H(-0.7), H(0.7), H(Pi);

, , ,0 0. 1. 1

63INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 64: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

Maple adopta el convenio generalmente aceptado de dejar indefinido el valor en = x 0.

> H(0);

( )Heaviside 0

Pero cuidado, en esta versión de Maple el comando simplify simplifica = ( )Heaviside 0 0, por lo que hay que tenerlo en cuenta si se usa este comando con funciones definidas a través de la función escalón.

> simplify(H(0));

0

NOTA: En versiones posteriores, el comando simplify deja indefinido a ( )Heaviside 0 .

Ejemplo 1.5.5________________________

- Eliminando la unión de los puntos en la discontinuidad, en un intervalo finito (o infinito) se tiene la forma usual de representar el escalón:

> plot(H(x), x=-3..3, `Heaviside(x)`=-0.5..1.5, color=blue,

thickness=3, tickmarks=[[0,1],[0,1]],discont=true);

- Para trasladar el escalón a = x a, se hace la traslación correspondiente, con el cambio de variables habitual: ( )H − x a . Por ejemplo, el escalón desplazando el salto a = x −1 sería:

> plot(H(x+1),x=-3..3,y=-0.5..1.5, thickness=3, discont=true,

tickmarks=[[0,-1],[0,1]], color=blue);

_________________________________________|

64INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 65: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

• La función de Heaviside permite filtrar fácilmente una zona del dominio de una función en la que estemos interesados.

Ejemplo 1.5.6________________________

Vamos a seleccionar algunos trozos de la función = ( )f x x2.

> f:=x->x^2;

:= f → x x2

La función que resulta de filtrar = ( )f x x2, en el intervalo [ ,−1 ∞), se puede definir como:

> f(x)*H(x+1);

x2 ( )Heaviside + x 1

... y la gráfica de la función resultante (en la salida/convenio de Maple) es:

> plot(f(x)*H(x+1), x=-infinity..infinity, thickness=2);

- El filtro define una nueva función = y ( )fn x distinta de la función = ( )f x x2 que se está filtrando:

> fn:=unapply(f(x)*H(x+1),x);

:= fn → x x2 ( )Heaviside + x 1

La gráfica de la función = ( )fn x ( )f x ( )H + x 1 anterior restringida, por ejemplo, al intervalo [ ],−3 3 , será entonces:

> plot(fn(x),x=-3..3,`fn(x)`,thickness=3,discont=true,color=blue)

;

65INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 66: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

- La aplicación de un nuevo filtro para la misma función = ( )f x x2 en el intervalo [ ],−1 2 sería

una nueva función = y ( )g x definida, utilizando la notación funcional de Maple, por:

> g:=x->x^2*(H(x+1)-H(x-2));

:= g → x x2 ( ) − ( )H + x 1 ( )H − x 2

... y la gráfica de la función = ( )g x ( )f x ( ) − ( )H + x 1 ( )H + x 1 , resultante del nuevo filtro es:

> plot(g(x), x=-infinity..infinity, y=-1..infinity, thickness=3);

Restringiendo = y ( )g x al intervalo [ ],−3 3 , se puede observar la diferencia con la función

= y ( )fn x que definió el filtro anterior:

> plot(g(x),x=-3..3,

y=0..9,thickness=3,discont=true,color=blue);

_________________________________________|

66INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 67: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

La función de Heaviside se puede emplear para definir funciones a trozos y la mayoría de los comandos de Maple están preparados para poder ser aplicados en tales casos.

Ejemplo 1.5.7________________________

Continuando con la función = ( )g x ( )f x ( ) − ( )H + x 1 ( )H − x 2 considerada en el Ejemplo 1.5.6

anterior, filtrando = ( )f x x2 en el intervalo [ ],−1 2 ...

> eval(g);

→ x ( )f x ( ) − ( )H + x 1 ( )H − x 2

Del mismo modo que se puede dibujar la función = y ( )g x , se puede integrar, derivar (cuidado con esto, sobre todo en esta versión de Maple), etc.

> d⌠⌡ ( )g x x

+ − + 1

3( )Heaviside + x 1 x

3 1

3( )Heaviside + x 1

1

3( )Heaviside − x 2 x

3 8

3( )Heaviside − x 2

En la figura siguiente se representan sobre unos mismos ejes la función = y ( )g x , en azul, y su

función integral = ( )G x d⌠⌡

−2

x

( )g t t, en rojo y trazo discontinuo, en el intervalo [ ],−3 3 .

> G:=unapply(int(g(t),t=-3..x),x):

> plot([g(x),G(x)], x=-3..3, y=-1..5,color=[blue,red],

thickness=3, linestyle=[1,3], discont=true);

La función derivada de G, en los puntos donde es derivable, coincide lógicamente con g (es el teorema fundamental del Cálculo):

67INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 68: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

> 'g'(x)=expand(g(x));

= ( )g x − ( )Heaviside + x 1 x2 ( )Heaviside − x 2 x

2

>

> Diff('G'(x),x)=simplify(diff(G(x),x));

= d

d

x( )G x − ( )Heaviside + x 1 x

2 ( )Heaviside − x 2 x2

Observación técnica: Atención, el ejemplo anterior ilustra uno de los casos que conviene tener cuidado en esta versión de Maple, al simplificar valores particulares de funciones definidas con el comando Heaviside. En efecto, G no es derivable en los puntos = x −1 y = x 2, y por tanto no pueden ser definidas

= d

d

x( )G −1 ( )g −1 y =

d

d

x( )G 2 ( )g 2 ;

sin embargo, Maple les asigna valores al simplificar:

> simplify(g(-1)),simplify(g(2));

,0 4____________|

El comando convert, con la opción apropiada, puede intercambiar los formatos piecewise y Heaviside en que los que puede venir definida una función a trozos. Los puntos indefinidos los señala en el último caso, con la función Dirac.

> convert(g(x), piecewise);

0 < x -1undefined = x -1

x2 < x 2

undefined = x 20 < 2 x

> convert(%,Heaviside);

+ − + ( )Dirac + x 1 ( )Heaviside + x 1 x2 ( )Heaviside − x 2 x

2 ( )Dirac − x 2_________________________________________|

Normalmente, los programas de cálculo simbólico suelen tratar mejor las funciones a trozos, cuando están definidas con la función de Heaviside.

68INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 69: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

- Ejercicio 5.6: Obtener mediante la función de Heaviside la expresión de la función f , definida

por = ( )f x −x, si ≤ 0 < x 1; = ( )f x 0, si < −1 x < 0. Hallar la serie de Fourier de la función f considerada 2-periódica.

1.6 Aplicaciones de las series de Fourier: Transformadas.

> restart;

> with(plots):

> interface(showassumed=0);

Transformada de una función periódica

En el análisis de Fourier, dada una función f de periodo mínimo T y frecuencia = ω2 π

T,

intervienen las ecuaciones

1) = ( )f x + a0

= n 1

( ) + an ( )cos n ω x bn ( )sen n ω x

2) = a0

1

Td

⌠⌡

−T/2

T/2

( )f x x, = an

2

Td

⌠⌡

−T/2

T/2

( )f x ( )cos n ω x x, = bn

2

Td

⌠⌡

−T/2

T/2

( )f x ( )sen n ω x x

que se suelen llamar en este contexto ecuaciones de síntesis y de análisis respectivamente.

• Por supuesto, en forma compleja adoptan una expresión más sencilla:

1) = ( )f x ∑ = n −∞

cn e( )i n ω x

(Síntesis)

2) = cn

1

T d⌠

−T/2

T/2

( )f x e( )−i n ω x

x (Análisis)

y por eso es la forma compleja la que suele emplearse mayoritariamente en las aplicaciones. Así,

69INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 70: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

uniendo ambas ecuaciones, se tiene:

= ( )f x1

T ∑

= n −∞

d⌠

−T/2

T/2

( )f x e( )−i n ω x

x e( )i n ω x

.

En este contexto, las ecuaciones que determinan los coeficientes de Fourier se conocen también como transformadas de Fourier de la función periódica f.

El fundamento del análisis de Fourier es, en principio, el mismo que el de las series de potencias:

• Descomponer una función en una serie de funciones apropiadas que permitan "transformar" el estudio de algún problema, complicado de analizar directamente sobre la función, en otro equivalente más sencillo de ser analizado. En el proceso, si es necesario, se cambia el espacio o "dominio" de trabajo.

Ejemplo 1.6.1________________________

Supongamos un fenómeno que produzca la curva periódica siguiente, en la que el eje de abscisas está midiendo el tiempo:

> plot(4+3*sin(13*x)+sin(15*x),x=0..4, labels=[`Tiempo

t`,`f(t)`]);

El fenómeno "complejo" descrito por la gráfica anterior en el dominio del tiempo puede de forma fácil interpretarse como la mezcla de dos ondas si se conoce su espectro de amplitudes:

> plot([[13,t,t=0..3],[15,t,t=0..1]], x=11.5..16.5, y=0..4,

thickness=2, color=blue, tickmarks=[[13,15],[0,1,3]],

labels=[`Frecuencia w`,`Amplitud bn`]);

70INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 71: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

Así, en el dominio de las frecuencias, se interpretan las frecuencias importantes, que constituyen una versión discreta del fenómeno, y esto permite separar elementos, eliminar distorsiones, etc.

En este caso, tenemos el "código" que identifica la función: la suma de los armónicos ( )sen 13 x y ( )sen 15 x convenientemente escalados. Entonces, lo que ilustra el diagrama espectral anterior es

que la onda está compuesta por una mezcla de las dos, siendo la amplitud la de frecuencia más baja (la que oscila menos) el triple que la de frecuencia más alta (la que oscila más), como se ve en la siguiente figura:

> plot([3*sin(13*x),sin(15*x)], x=0..4, labels=[`t `,`y(t)`]);

_________________________________________|

En general, se tiene sólo la gráfica de un fenómeno. Entonces, los coeficientes de Fourier se calculan para analizar sus frecuencias, que se representan en un diagrama, seleccionando las amplitudes que interesen según el estudio que se esté considerando.

• En resumen, el análisis de Fourier lo que pretende es transformar el estudio de problemas sobre una función (en el dominio del tiempo), en el estudio de las amplitudes y fases de su serie de Fourier (en el dominio de frecuencias).

71INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 72: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

- Ejercicio 6.1:

(1) Representar una onda en el dominio del tiempo que sea la mezcla de tres armónicos puros de tipo ( )sen ω

nx , con amplitudes respectivas 2, -5 y 0'1.

(2) Separar las tres gráficas que intervienen. Comparar los resultados que se obtienen cuando se

mantienen fijos ωn1 y ωn2 y se hace variar la frecuencia ωn3 .

Transformada discreta de Fourier.

> restart;

> with(plots):

Un problema habitual es que no se conoce una fórmula para la función que se considera, sino que sólo se tiene de ella una tabla de datos en un periodo. O bien, la función es conocida pero es preferible manejarla tabulada por diversos motivos. Entonces se suele usar la transformada discreta de Fourier para el análisis de las frecuencias.

Supongamos que f es T-periódica, con frecuencia fundamental = ω 2 π / T, y tenemos el soporte

{ }, , ,x0 x1 ... xN para el intervalo [ ],0 T , con = x0 0 y = xN T. Entonces, la tabla

[ ], , ,[ ],x0 ( )f x0 [ ],x1 ( )f x1 ... [ ],x − N 1 ( )f x − N 1

determina la función f, ya que la periodicidad de la función implica que = ( )f x0 ( )f xN .

• Tomando un soporte equidistante, cambiando la variable independiente xm por m y haciendo

= ( )f m ( )f xm , el conjunto de valores [ ],m ( )f m de la tabla

[ ], , ,[ ],0 ( )f 0 [ ],1 ( )f 1 ... [ ], − N 1 ( )f − N 1

representa a la función. La función tiene ahora periodo mínimo N y frecuencia = ω 2 π / N.

Obsérvese que si el conjunto de puntos del soporte es suficientemente grande, el análisis de Fourier para la representación tabular de f será bastante fiel.

72INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 73: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

El problema de hallar los coeficientes de Fourier en el caso discreto se reduce entonces a:

• Encontrar N números cn , de modo que se verifiquen las N ecuaciones:

= ( )f m ∑ = n 0

− N 1

cn e( )i n ω m

, , , , , = m 0 1 2 ... − N 1.

• Y la solución que se obtiene es:

= cn

1

N ∑

= m 0

− N 1

( )f m e( )−i n ω m

, , , , , = n 0 1 2 ... − N 1.

Podemos poner juntas, como antes, las ecuaciones de síntesis y análisis

1) = ( )f m ∑ = n 0

− N 1

cn

e( )i n ω m

, , , , , = m 0 1 2 ... − N 1.

2) = cn

1

N ∑

= m 0

− N 1

( )f m e( )−i n ω m

, , , , , = n 0 1 2 ... − N 1.

A la segunda ecuación se le llama transformada discreta de Fourier. Y se tiene la igualdad:

= ( )f m1

N ∑

= n 0

− N 1

= m 0

− N 1

( )f m e( )−i n ω m

e( )i n ω m

• La transformada discreta en el marco del álgebra lineal.

El problema de obtener la transformada discreta de Fourier de una nube de puntos puede ser interpretado desde el Álgebra, como un sistema

= F c f

en el que f es el vector con los valores ( )f m , c es el vector (incógnita) con los valores cn y F es

la matriz de Fourier.

73INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 74: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

• Si se pone = α e( )i ω

= e

i 2 π

N, la expresión de la matriz de Fourier F es muy sencilla:

= F

1 1 1 ... 1

1 α α2

... α( ) − N 1

1 α2

α( )2 ( )2

... α( )( ) − N 1 2

...

1 α( ) − N 1

α( )2 ( ) − N 1

... α( )( ) − N 1 ( ) − N 1

• Pero lo más curioso es que la matriz inversa de F es muy fácil de calcular:

= F -1

1

N F

denotando por F la matriz conjugada de F. Así que para resolver = F c f, simplemente:

- Se hace = cF f

N y se obtiene la transformada discreta de Fourier c.

- Haciendo = f F c, la transformada discreta inversa recupera el vector f.

NOTA: A veces (igual con otras transformadas de Fourier), para que haya una mayor simetría se

toma como matriz de Fourier = G F / N . Entonces la transformada discreta de Fourier del vector

f se obtiene de = c G f y la transformada inversa de = f G c. Otras notaciones son posibles.

Ejemplo 1.6.2________________________

Podemos calcular la transformada discreta de Fourier del vector = f ( ), , ,2 4 6 8 , con la ayuda de

Maple, determinando primero = α e( )i ω

y luego la matriz de Fourier:

> alpha:=exp(I*2*Pi/4); # En este caso, N=4

:= α I

> F:= matrix([[1,1,1,1], [1,alpha,alpha^2,alpha^(3)],

[1,alpha^2,alpha^(2*2),alpha^(3*2)],

[1,alpha^(3),alpha^(2*3),alpha^(3*3)]]);

74INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 75: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

:= F

1 1 1 11 I -1 −I

1 -1 1 -11 −I -1 I

Observación técnica: Maple está diseñado para suponer que una matriz puede tener "muchos" números y por defecto no presenta el contenido de las variables que tienen almacenada matrices: el valor queda almacenado en la variable, pero se debe usar el comando eval si se quiere visualizar el contenido. Así, el programa se previene de salidas que llenarían pantallas y no aportarían nada.

> F;

F

> eval(F);

1 1 1 11 I -1 −I

1 -1 1 -11 −I -1 I

Además, Maple reserva el comando evalm para evaluar expresiones involucrando matrices. En particular, conjugate da la matriz conjugada:

> evalm(conjugate(F));

1 1 1 11 −I -1 I

1 -1 1 -11 I -1 −I

El producto ordinario * no se debe utilizar con matrices porque está implementado conmutativo.Es el símbolo &* , de producto no conmutativo, el que debe ser utilizado en la multiplicación de

matrices. Entonces, Maple reconoce que, en general, ≠ A &* B B &* A y tiene en cuenta el orden de entrada (incluso en la ayuda sugiere usar el comando en la forma &*(A,B) para indicar el orden).

____________|

Calculemos ahora la transformada discreta del vector f :

> f:=vector([2,4,6,8]);

:= f [ ], , ,2 4 6 8> c:=1/4*conjugate(F)&*f;

75INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 76: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

:= c

1

4F &* f

> c:=evalm(c);

:= c [ ], , ,5 − + 1 I -1 − − 1 I

Por supuesto, la transformada inversa de c da el vector f :

> evalm(F&*c);

[ ], , ,2 4 6 8

Observación importante: Los datos deben ser interpretados en términos del análisis de Fourier:

1) f representa una función (aunque sólo tengamos 4 valores) en el dominio del tiempo

2) c es su transformada (otra función) en el dominio de las frecuencias.

____________|

Por ejemplo, aunque f sea una función "muy pobre" (está definida sólo sobre 4 puntos), podemos representarla. Entonces los módulos de c (es decir, las amplitudes de las frecuencias) informan de las frecuencias importantes.

Observación técnica: Usaremos el comando zip que permite aplicar una función (en nuestro caso (x,y)->[x,y]) a dos listas o vectores:

> zip((x,y)->[x,y],[i$i=0..3],eval(f));Error, (in zip) can only zip lists and vectors

Por cierto, tenemos que o bien convertir el vector eval(f) en lista o bien crear un vector con las abscisas, para que los dos elementos finales de zip sean del mismo tipo:

> puntos_f:=zip((x,y)->[x,y],[i$i=0..3],convert(eval(f),list));

:= puntos_f [ ], , ,[ ],0 2 [ ],1 4 [ ],2 6 [ ],3 8> puntos_f:=zip((x,y)->[x,y],vector([i$i=0..3]),eval(f));

:= puntos_f [ ], , ,[ ],0 2 [ ],1 4 [ ],2 6 [ ],3 8____________|

La gráfica de f en [ ],0 3 , aunque pobre, representa a todas las funciones que pasen por esos puntos y, en el contexto de las transformadas, es 4-periódica:

76INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 77: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

> grafica_f:=pointplot(puntos_f, symbol=circle, color=blue):

> display(grafica_f, tickmarks=[[0,1,2,3],[0,2,4,6,8]],

view=[0..3,0..8], labels=[t,`f `]);

En particular, representa a la más sencilla: la que se obtiene uniendo cada dos puntos con un segmento (interpolación lineal) y que no es más, en este caso, que una recta:

> dib_p:=pointplot(puntos_f, connect=true):

display(grafica_f, dib_p, labels=[t,`f(t) `], tickmarks=[4,4],

view=[0..3,0..8], title=`Una posible f`);

El comando map aplica una función (en este caso abs) a los elementos de una lista. Lo usamos ahora para obtener la gráfica de las amplitudes de las frecuencias c.

> puntos_c:=zip((x,y)->[x,y],vector([i$i=0..3]),

map(abs,eval(c)));

:= puntos_c [ ], , ,[ ],0 5 [ ],1 2 [ ],2 1 [ ],3 2>

> grafica_c:=pointplot(puntos_c, symbol=circle, color=red):

77INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 78: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

> dib2:=pointplot(puntos_c, connect=true):

> display(grafica_c, dib2, labels=[`Frecuencias`,`Amplitudes |c|

`], tickmarks=[[0,1,2,3],4], view=[0..3,0..8], title=`El

espectro de amplitudes |c|`);

_________________________________________|

Observación técnica: En los casos prácticos reales hay que tomar muchos puntos y se suelen usar modificaciones de las fórmulas para que resulten menos "cuentas" (y se tarde menos en hacerlas...) y se cometan menos errores. No olvidemos que estamos resolviendo sistemas y que pueden estar mal condicionados (en realidad, la matriz de Fourier es normal y está óptimamente condicionada).

• Por ejemplo, Maple tiene implementada la transformada rápida de Fourier (el comando es FFT, que viene de Fast Fourier Transform), y que obtiene la transformada discreta reduciendo la

complejidad de los cálculos de n2 a ( ) n / 2 ( )log2 n , que es "casi" n .

Así, se obtendría el mismo resultado anterior usando la transformada rápida de Fourier que Maple tiene implementada. La sintaxis ("complicadilla", en un principio) supone una entrada de vectores complejos, separados en su parte real e imaginaria.

La implementación de Maple de FFT utiliza arrays de longitud 2n de números en coma flotante. Para un vector, = f + x yI , se deben declarar los arrays para su parte real (el vector x) y su parte imaginaria (el vector y) por separado. La sintaxis es entonces FFT(n,x,y) para la transformada rápida e iFFT(n,x,y), para la transformada rápida inversa, donde n es el exponente de la

potencia de 2 correspondiente.

La salida es el número de coordenadas 2n de los vectores, pero ha reasignado a x e y la parte real e imaginaria de los valores obtenidos para la transformada c. Para utilizar posteriormente o ver el

vector c, se hace uso de los comandos habituales, por ejemplo, eval o print. ____________|

78INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 79: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

Para usar la transformada FFT de Maple, antes se deben cargar los comandos con readlib.

> readlib(FFT):

Ejemplo 1.6.3________________________

Para obtener la transformada discreta de la función = f ( ), , ,2 4 6 8 , del Ejemplo 1.6.2 anterior,

empleando la transformada rápida con Maple, se construyen los arrays x e y, de las partes reales e imaginarias de los elementos de f :

> x:=array([2,4,6,8]);

:= x [ ], , ,2 4 6 8> y:=array([0,0,0,0]);

:= y [ ], , ,0 0 0 0

Y se utiliza el comando FFT con la sintaxis adecuada:

> FFT(2,x,y); # 2^n datos con n=2 ...

4

Maple devuelve el número de elementos de la transformada discreta obtenida c. Las partes real e imaginarias de c se almacenan en las variables empleadas:

> eval(x);

[ ], , ,20 -4 -4 -4> print(y);

[ ], , ,0 4. 0 -4.

Obsérvese que Maple ha considerado = c F f como transformada; luego, para recuperar f con la

transformada inversa, Maple usará la fórmula = fF c

4. La notación para las transformadas, como

hemos dicho antes, no es estándar.

> iFFT(2,x,y);

4> eval(x);

[ ], , ,2 4.000000000 6 8.000000000> eval(y);

[ ], , ,0 0 0 0

79INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 80: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

Puede observarse además en los resultados que Maple está empleando aritmética de coma flotante, que es la forma habitual de evaluar transformadas.

_________________________________________|

- Ejercicio 6.2: Encontrar la transformada discreta de Fourier de = f ( ), , , , , , ,−1 2 3 0 −5 −1 3 1 , utilizando la implementación de la transformada FFT de Maple.

Veamos ahora un ejemplo de un tipo de problemas clásico en los que se utiliza el análisis de Fourier para su resolución:

• Se trata de "limpiar" de ruidos una señal recibida: un conjunto de datos distorsionados que representan a una función que no conocemos...

Ejemplo 1.6.4________________________

En el ejemplo inicial de esta sección se tenía la onda = ( )f x + + 4 3 ( )sin 13 x ( )sin 15 x y fuimos capaces de descomponerla a través de su diagrama de frecuencias.

Por supuesto, la gráfica computacional no es más que un conjunto de puntos unidos por segmentos. Si se le pide a Maple que represente los puntos que ha evaluado (cambiando el estilo de line a point), se obtendrá la tabla de puntos de la que Maple ha dibujado la función:

> plot(4+3*sin(13*x)+sin(15*x), x=0..4, style=point,

symbol=point, numpoints=1024, labels=[t,`F(t)`]);

Le hemos pedido a Maple que evalúe la función en un número mínimo de = 210 1024 puntos (con la opción numpoints). Podríamos haber seleccionado nosotros los puntos. Por ejemplo, tomando un soporte equidistante (nótese el punto decimal en 1024., para obligar a Maple a operar en coma flotante...), se tendría la lista de puntos siguiente:

80INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 81: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

> datos:=seq(

[4*n/1024., 4+3*sin(13*(4*n/1024.))+sin(15*(4*n/1024.))],

n=0..1023):

Aquí están los 3 primeros puntos de la lista y los 3 últimos (se usa la versión $ de seq):

> datos[n]$n=1..3;

datos[n]$n=1022..1024;

, ,[ ],0 4 [ ],0.003906250000 4.210838511 [ ],0.007812500000 4.421083428

, ,[ ],3.988281250 6.866247784 [ ],3.992187500 6.802841875 [ ],3.996093750 6.732373168

A pesar de que para construir una gráfica Maple elige las abscisas donde evaluar la función de una forma distinta, el dibujo de nuestra lista de datos es prácticamente indistinguible del de Maple:

> pointplot([datos], view=[0..4,0..8], symbol=point);

En realidad, lo importante son los valores que toma la función en el intervalo. Si representamos los 1024 valores, utilizando listplot para cambiar la variable tiempo en el intervalo [ ],0 4 a n

en el intervalo [ ],0 1023 , y se deja el escalado por defecto de Maple, el dibujo que se obtiene es, prácticamente, el mismo:

> datosy:=[evalf(4+3*sin(13*(4*n/1024))+sin(15*(4*n/1024)))

$n=0..1023]:

> listplot(datosy,style=point,symbol=point, title=`Gráfica de

datos`);

81INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 82: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

Atención: el efecto del cambio de variables sería ostensible con la misma unidad en ambos ejes.

Bien, pues los datos se suelen enviar por canales que pueden introducir pequeñas perturbaciones.

Las líneas de código siguiente generan un vector de coordenadas aleatorias del intervalo [ ],−4 4 , que sumamos con los valores anteriores.

> with(linalg, randvector):

> ruido:=randvector(1024,entries=rand(-4..4)):

> datosyruido:=datosy+convert(ruido,list):

Así que, en vez de la curva, puede ser recibido esto:

> listplot(datosyruido,style=point,symbol=point, title=`Gráfica

de datos con ruido`);

y uniendo los puntos todavía peor:

> listplot(datosyruido,style=line);

Como no se prevé un comportamiento tan anómalo de una mezcla de ondas puras, podemos intentar corregir "en lo posible" los datos pasando al dominio de las frecuencias y eliminando las que no sean significativas.

82INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 83: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

Hagámoslo con la transformada rápida de Fourier de Maple (para eso, precavidos, tomamos 210 puntos en la muestra de la función f ).

> readlib(FFT):

> x:=array(datosyruido):

> y:=array([0$n=0..1023]):

> FFT(10,x,y);

1024

Ahora podremos ver dónde están las frecuencias importantes y las que apenas intervienen. Lo mejor para medir el efecto global es considerar las amplitudes en módulo.

> amplitud:=zip((a,b)->abs(sqrt(a^2+b^2)),x,y):

> listplot(amplitud,style=line,symbol=point,color=blue,

thickness=2, title=`Amplitudes |c| de las frecuencias `);

Un detalle del diagrama de amplitudes:

> display(%,view=[1..100,0..4000]);

Ahora es cuando el análisis de Fourier se vuelve "tremendamente útil": podemos "limpiar" las frecuencias con una amplitud poco significativa, aquellas que "suponemos" corresponderán a las anomalías introducidas por el emisor, transmisor o receptor de los datos:

De las frecuencias significativas (pongamos, que su amplitud sea > 425), almacenamos su parte real en limpiox y su parte imaginaria en limpioy y anulamos las frecuencias que consideremos ruido. El código siguiente realiza el trabajo:

83INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 84: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

> limpiox:=array(1..1024): limpioy:=array(1..1024):

for i from 1 to 1024 do

if is(amplitud[i]>425) then limpiox[i]:=x[i];

limpioy[i]:=y[i];

else limpiox[i]:=0; limpioy[i]:=0;

fi

od;

• Llega el momento importante: invertimos la transformada discreta de las frecuencias con la esperanza de haber eliminado el ruido y filtrado los datos correctos de la función:

> iFFT(10,limpiox,limpioy);

1024> graf1:=listplot(limpiox,style=point,symbol=point, color=blue):

display(graf1, title=`Gráfica de datos limpia de ruido`);

ÉXITO: ¡Esto se parece bastante a la función original que habíamos tabulado!

Si mostramos juntas las gráficas de datos inicial (en rojo) y la obtenida eliminando el ruido (en azul) vemos (lógicamente) una diferencia en las señales original y tratada:

> graf:=listplot(datosy, color=red, thickness=3):

display(graf1, graf);

... que no es comparable con la diferencia de la señal recibida, antes de depurar:

84INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 85: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

> dib_1:=listplot(datosyruido,style=line):

> display(graf,dib_1, title=`Gráficas de f y de f recibida`);

Es evidente que si eliminamos ruido, también perdemos "algo" de la función, ya que ésta se encuentra mezclada con el ruido. El truco está en eliminar una cantidad de ruido que nos deje lo más nítida posible la señal recibida. (¿Qué tal si creamos botones controladores de filtros, como los de un sintonizador o un ecualizador, ...? ¡OTRO DÍA !)

_________________________________________|

- Ejercicio 6.3: Repetir el estudio anterior con una función que mezcle tres ondas puras (una de las que se utilizó en un ejercicio anterior), "escaneadas" a 1024 puntos.

Funciones no periódicas. Transformada de Fourier.

> restart;

> with(plots):

> interface(showassumed=0);

Si se considera una función f, definida en R, no periódica, también puede utilizarse, en algunos casos, el análisis de Fourier transformando el dominio del tiempo en el dominio de las frecuencias.

• La forma de aproximarse a los resultados es considerar una función fT , de periodo mínimo T y

frecuencia fundamental = ω2 π

T, tal que = ( )fT x ( )f x en el intervalo [ ],−T / 2 T / 2 y haciendo

tender T a ∞.

85INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 86: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

Entonces, se llega a

= ( )f x1

2 π d

−∞

d⌠

−∞

( )f x e( )−i ω x

x e( )i ω x

ω

que también podemos separar en dos ecuaciones de síntesis y análisis:

1) = ( )f x1

2 π d⌠

−∞

( )c ω e( )i ω x

ω

2) = ( )c ω d⌠

−∞

( )f x e( )−i ω x

x

• A ( )c ω se le llama transformada de Fourier de ( )f x y es frecuente denotarla por ( )F ω ; en ese contexto, la primera ecuación (recupera f, conociendo su transformada) se lee también diciendo

que ( )f x es la transformada inversa de ( )F ω .

Para que las fórmulas de las ecuaciones queden más "simétricas" (todavía más), se normalizan a

veces, poniendo en ambas 1 / 2 π . Puede observarse, en ese caso, cómo queda patente el hecho de la "dualidad" entre f y c (se pueden intercambiar los papeles). Sólo una cosa cambia: en una de las ecuaciones (la que sea) el exponente de la exponencial empieza con "-" (Atención: no se puede decir que el exponente sea negativo, porque estamos con números complejos).

De nuevo, las amplitudes, ( )c ω , y fases, ( )arg ( )c ω , de la transformada de Fourier, operando en el dominio de las frecuencias, pueden aportar información relevante sobre el comportamiento de la función f , que opera en el dominio del tiempo.

Por supuesto, no todas las funciones tienen transformada de Fourier, pero si se puede garantizar para una clase importante de funciones.

• Son condiciones suficientes para que esté definida la transformada de Fourier de f :

1) que f cumpla las condiciones de Dirichlet en cualquier intervalo finito y

2) que < d⌠⌡

−∞

( )f x x ∞ (la integral impropia de f sea absolutamente convergente).

86INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 87: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

Ejemplo 1.6.5________________________

Consideremos la función = ( )f x e( )− x

y obtengamos su transformada.

> f := x -> exp(-abs(x));

:= f → x e( )− x

La función f no es más que la función exponencial en ( ) ,−∞ 0 , convertida en par.

> plot(f(x),x=-infinity..infinity, f=-0.5..2.5, thickness=2);

La función f verifica, obviamente, las condiciones de Dirichlet en cualquier intervalo finito y es absolutamente integrable en R.

> d⌠⌡

−∞

( )f x x

2

Así que podemos calcular su transformada de Fourier:

> d⌠

−∞

( )f x e( )−I ω x

x

0

¿Todas las frecuencias nulas?

Bueno, la verdad es que no es el resultado correcto, ya que la integral compleja funciona bien (en esta versión de Maple) sólo si se opera en el integrando con los complejos en forma binómica.

Observación técnica: Versiones posteriores de Maple proporcionan el resultado correcto. En esta versión, el problema de la obtención de una integral compleja se puede resolver a veces utilizando el comando evalc, que expresa en forma binómica (siempre que puede) una evaluación sobre los números complejos.

____________|

87INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 88: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

Veamos la evaluación de la integral otra vez utilizando el comando evalc sobre el integrando:

> d⌠

−∞

( )evalc ( )f x e( )−I ω x

x

21

+ 1 ω2

Esto tiene mejor aspecto, y de hecho la igualdad es cierta. Podemos convertir la transformada de

Fourier de f en una función, en la sintaxis de Maple:

> c:=unapply(2/(1+omega^2),omega);

:= c → ω 21

+ ω2 1

Ahora podemos representarla gráficamente (sustituyendo ω por w por comodidad):

> plot(c(w), w=-infinity..infinity, c=-0.5..2.5, color=blue,

thickness=2, title=`Transformada de Fourier de f`);

Obsérvese que cada punto de ( )c ω se puede considerar como una barra del diagrama de

frecuencias, sólo que ahora "no hay separación" entre ellos, ya que ω es una variable continua.

Veamos las gráficas de f y su transformada (se le llama también espectro) en el intervalo [-5,5].

> plot(f(x),x=-5..5, y=-0.5..2.5, tickmarks=[[0,-5,5],[0,1,2]],

thickness=2);

88INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 89: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

> plot(c(w),w=-5..5,c=-0.5..2.5, color=blue,

tickmarks=[[0,-5,5],[0,1,2]], thickness=2);

_________________________________________|

• Si se conoce la transformada de Fourier de una función f, podemos recuperar la función mediante la transformada inversa.

Ejemplo 1.6.6________________________

Vamos a obtener la función = ( )f x e( )− x

a partir de su transformada de Fourier en dos pasos, separando el dominio en los reales positivos y negativos.

> assume(x<0);

> d⌠

−∞

( )evalc ( )c ω e( )I ω x

ω

+ 2 π ( )sinh x 2 π ( )cosh x

Ahora convirtiendo las funciones hiperbólicas en exponenciales, simplificando y dividiendo por 2 π tenemos el valor de f para < x 0 :

> simplify(convert(2*Pi*sinh(x)+2*Pi*cosh(x),exp))/(2*Pi);

ex

89INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 90: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

Y análogamente para ≤ 0 x.

> assume(x>=0);

> d⌠

−∞

( )evalc ( )c ω e( )I ω x

ω

− + 2 π ( )sinh x 2 π ( )cosh x

> simplify(convert(%,exp))/(2*Pi);

e( )−x

Así que la transformada inversa de = ( )c ω2

+ ω2 1

es la función

> x:='x':

> piecewise(x<0,exp(x),x>=0,exp(-x));

{e

x < x 0

e( )−x

≤ 0 x

que lógicamente coincide con nuestra función de partida = ( )f x e( )− x

._________________________________________|

Hay funciones que no verifican las condiciones suficientes pero que admiten transformada de Fourier y que son muy útiles en la practica; por ejemplo, la distribución de Dirac (¡cómo no...!) tiene por transformada = ( )c w 1. A veces, es precisamente así como se define la ( )δ x de Dirac.

> d⌠

−∞

( )evalc ( )Dirac x e( )−I ω x

x

1

Maple dispone del paquete de funciones inttrans para operar con transformadas, evaluando las integrales en la forma apropiada.

> with(inttrans):

En particular, los comandos fourier e invfourier nos permiten obtener directamente las transformadas de una gran clase de funciones...

90INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 91: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

> fourier(Dirac(x),x,omega);

1> invfourier(1,omega,x);

( )Dirac x

Obsérvese el cambio de orden en las variables (¿se recuerda de otro tipo de transformada?).

Ejemplo 1.6.7________________________

Las "cuentas" del ejemplo anterior, con la función = ( )f x e( )− x

se hubieran reducido mucho utilizando las funciones específicas de Maple para obtener transformadas y se pueden emplear, a partir de ahora (una vez que sabemos lo que estamos haciendo).

> f(x);

e( )− x

> fourier(f(x),x,omega);

21

+ 1 ω2

> invfourier(%,omega,x);

+ e( )−x

( )Heaviside x ex ( )Heaviside −x

> convert(%,piecewise);

ex < x 0

0 = x 0

e( )−x

< 0 x

Obsérvese el fallo en = x 0, en la expresión de la transformada inversa como función definida a trozos, debido a la errónea simplificación que esta versión de Maple hace de ( )Heaviside 0 .

Si se prefiere, se le puede asignar una función a la salida, en la forma habitual:

> F:=unapply(fourier(f(x),x,omega),omega);;

:= F → ω 21

+ ω2 1

> F(w); # Maple sugiere emplear w, más cómodo

21

+ w2 1

> invfourier(F(w),w,x);

+ e( )−x

( )Heaviside x ex ( )Heaviside −x

_________________________________________|

91INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1

Page 92: Ingeniero Informático - Universidad de Sevillama1.eii.us.es/Material/CI_ii_Cuad1.pdf · • En los ejemplos, seguiremos el convenio de poner el código ejecutable desarrollado, la

Para algunas funciones, la transformada no es obvia.

Por ejemplo, si se considera la función de Heaviside, no se puede obtener su transformada de Fourier "directamente":

> d⌠

−∞

( )evalc ( )Heaviside x e( )−I ω x

x

undefined

Pero Maple la conoce:

> fourier(Heaviside(x),x,w);

− π ( )Dirac wI

w

> simplify(invfourier(%,w,x));

( )Heaviside x

- Ejercicio 6.4: Hallar la transformada de Fourier de la función = ( )f x e( )−x

2

y la transformada

inversa de = ( )c w − + 1w

2

+ w2 2

. Representar en cada caso la función y su transformada en un

intervalo de la forma [ ],−α α .

92INGENIERO INFORMATICO - C. INFINITESIMAL - CUADERNO DE PRACTICAS 1