using Plots using Roots using ForwardDiff D(f, k=1) = k > 1 ? D(D(f),k-1) : x -> ForwardDiff.derivative(f, float(x)) using QuadGK using SymPy function taylor(f, n=2; c::Real=0) x -> f(c) + sum([D(f, k)(c)/factorial(k)*(x-c)^k for k in 1:n]) end f(x) = cos(x) plot([f, taylor(f, 2, c=0), taylor(f, 2, c=pi/4)], -pi/2, pi/2) f(x) = exp(x) fs = [f, [taylor(f,n) for n in 1:6]...] plot(fs, 0, 4) # 6 polynomial approximations f(x) = exp(-x^2) quadgk(f, 0, 0.5) k1(v) = v^2 / 2 k2(v; c=10) = c^2 * (1/sqrt(1 - (v/c)^2) - 1) @vars a0 a1 a2 a3 a4 a5 b f(x) = exp(x) g(x) = a0 + a1*x + a2*x^(2//1) + a3*x^(3//1) + a4*x^(4//1) + a5*x^(5//1) - f(x) di = solve(Sym[g(i*b) for i in 0:5], [a0, a1,a2,a3,a4,a5]) limit(di[a5], b, 0)