{{{id=3|
# Dada una función, f_base y N, halla el desarrollo de Chebyshev-Fourier
# y el de Taylor en x=0, para grados menores que N.
# Dibuja el error para ambas aproximaciones
# función base en [-1,1] que queremos aproximar
f_base = sin(pi*x/2)
# El grado es menor que N
N = 4
# Calcula los coeficientes de Fourier numéricamente
# La precisión está limitada a doble precisión (tomar N muy grande no da resultados válidos)
f = f_base(x=cos(2*pi*x))
IN = numerical_integral(f, 0, 1, eps_abs=1e-16, eps_rel=1e-16)
A = N*[0.0]
A[0] = IN[0]
for k in srange(1,N):
g = f*cos(2*pi*k*x)
IN = numerical_integral(g, 0, 1, eps_abs=1e-16, eps_rel=1e-16)
A[k] = IN[0]
# Calcula el desarrollo truncado de Chebyshev-Fourier
che_fou = A[0]
for k in range(1,N):
# No uso la recurrencia por pereza
che_fou += 2*A[k]*chebyshev_T(k,x)
print 'Chebyshev-Fourier'
(che_fou.expand()).show()
P = plot(f_base-che_fou,-1,1, color = 'red')
P.show()
print 'Taylor'
(f_base.taylor(x,0,N-1).expand()).show()
P = plot(f_base-f_base.taylor(x,0,N-1),-1,1, color = 'red')
P.show()
///
Chebyshev-Fourier
Taylor
}}}
{{{id=2|
///
}}}