{{{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| /// }}}