Un pequeño cuaderno para explorar con más cuidado este fenómeno.
La función propuesta es:
$$f(x)=\sum_{k=1}^{100} \frac{\sin(2\pi k^2 x)}{k^54\pi^2} +\frac{x^2}{2k}.$$Por ende, su primera derivada es
$$f'(x) = \sum_{k=1}^{100} \frac{\cos(2\pi k^2 x)}{k^3 2\pi}+\frac{x}{k}.$$Y la segunda,
$$f''(x) = \sum_{k=1}^{100} \frac{-\sin(2\pi k^2 x)}{k} + \frac{1}{k}.$$import numpy as np
from sympy import *
from __future__ import division
init_printing()
Definamos el término de la suma usando Sympy para calcular sus derivadas:
# Inicializamos las variables.
x = Symbol("x")
k = Symbol("k")
y = Symbol("y")
b = Symbol("b")
t = sin(2*pi*x*(k**2))/ (4*(pi**2)*(k**5)) + (x**2) / (2*k)
t
t1 = diff(t,x)
t1
t2 = diff(t1,x)
t2
def sumatoria(a, termino, N=100):
return sum(termino.subs(x,a).subs(k,b+1) for b in range(N))
def f(a):
return sumatoria(a,t)
def f1(a):
return sumatoria(a,t1)
def f2(a):
return sumatoria(a,t2)
Empecemos por graficar $f$:
plot(f(y), (y,0,1))
show()
Ahora grafiquemos $f'$:
plot(f1(y), (y,0,1))
show()
Y finalmente $f''$:
plot(f2(y), (y,0,1))
show()
Hagamos una función que, dado el término de la primera función, calcule y grafique la función y sus primeras dos derivadas:
def CalcularyGraficar(t):
t1 = diff(t,x)
t2 = diff(t1,x)
def f(a):
return sumatoria(a,t)
def f1(a):
return sumatoria(a,t1)
def f2(a):
return sumatoria(a,t2)
plot(f(y), (y,0,1))
plot(f1(y), (y,0,1))
plot(f2(y), (y,0,1))
show()
Modifiquemos la función original: En lugar de $k^5$ en el denominador del primer sumando, pongamos $k^3$.
t = sin(2*pi*x*(k**2))/ (4*(pi**2)*(k**3)) + (x**2) / (2*k)
CalcularyGraficar(t)
Por si acaso la suavidad de la primera función es aparente por la escala, modifiquemos el dominio del primer gráfico:
plot(f(y), (y,0,0.0001))
show()
Ahora eliminemos el segundo sumando del término original (y dejemos $k^5$ en el denominador. Creo que esta es mi versión minimal favorita del fenómeno.
t = sin(2*pi*x*(k**2))/ (4*(pi**2)*(k**5))
CalcularyGraficar(t)
¿Y qué pasa si en el denominador ponemos $k$ en lugar de $k^5$? (Demasiado ruidoso)
t = sin(2*pi*x*(k**2))/ (4*(pi**2)*(k)) + (x**2) / (2*k)
CalcularyGraficar(t)
¿O $k^{10}$? (Demasiado suave.)
t = sin(2*pi*x*(k**2))/ (4*(pi**2)*(k**10)) + (x**2) / (2*k)
CalcularyGraficar(t)