Usando un cambio de variable \( x - a = h \) $$ \begin{equation*} f(x) \approx f(a) + f'(a) h + \frac{1}{2} f''(a) h^{2} + \frac{1}{6} f'''(a) h^{3} + \cdots \end{equation*} $$
Reemplazando \( a = x - h \) $$ \begin{equation*} f(x) \approx f(x - h) + f'(x - h) h + \frac{1}{2} f''(x - h) h^{2} + \frac{1}{6} f'''(x - h) h^{3} + \cdots \end{equation*} $$
Usando un cambio de variable \( x = x_{i} \) $$ \begin{equation*} f(x_{i}) \approx f(x_{i} - h) + f'(x_{i} - h) h + \frac{1}{2} f''(x_{i} - h) h^{2} + \frac{1}{6} f'''(x_{i} - h) h^{3} + \cdots \end{equation*} $$
Reemplazando \( x_{i} - h = x_{i-1} \) $$ \begin{equation*} f(x_{i}) \approx f(x_{i-1}) + f'(x_{i-1}) h + \frac{1}{2} f''(x_{i-1}) h^{2} + \frac{1}{6} f'''(x_{i-1}) h^{3} + \cdots \end{equation*} $$
Recorriendo los índices $$ \begin{equation} f(x_{i+1}) \approx f(x_{i}) + f'(x_{i}) h + \frac{1}{2} f''(x_{i}) h^{2} + \frac{1}{6} f'''(x_{i}) h^{3} + \cdots \tag{6} \end{equation} $$
La expansión hacia adelante puede escribirse como $$ \begin{equation*} f(x_{i} + h) \approx f(x_{i}) (h)^{0} + f'(x_{i}) (h)^{1} + \frac{1}{2} f''(x_{i}) (h)^{2} + \frac{1}{6} f'''(x_{i}) (h)^{3} + \cdots \end{equation*} $$
Entonces la expansión hacia atrás será $$ \begin{equation*} f(x_{i} - h) \approx f(x_{i}) (-h)^{0} + f'(x_{i}) (-h)^{1} + \frac{1}{2} f''(x_{i}) (-h)^{2} + \frac{1}{6} f'''(x_{i}) (-h)^{3} + \cdots \end{equation*} $$
Simplificando $$ \begin{equation} f(x_{i-1}) \approx f(x_{i}) - f'(x_{i}) h + \frac{1}{2} f''(x_{i}) h^{2} - \frac{1}{6} f'''(x_{i}) h^{3} + \cdots \tag{7} \end{equation} $$
Usando dos términos de la serie de Taylor expandida hacia adelante $$ \begin{equation*} f(x_{i+1}) \approx f(x_{i}) + f'(x_{i}) h \end{equation*} $$
Despejando la primera derivada $$ \begin{equation} f'(x_{i}) = \frac{f(x_{i+1}) - f(x_{i})}{h} \tag{8} \end{equation} $$
def g(x):
resultado = - 0.1*x**4 - 0.15*x**3 - 0.5*x**2 - 0.25*x + 1.2
return resultado
def fx_adelante(f,x,h):
derivada = (f(x+h) - f(x))/h
return derivada
print('f\'(0.5) =', fx_adelante(g,0.5,0.25))
f'(0.5) = -1.1546875
Usando dos términos de la serie de Taylor expandida hacia atrás $$ \begin{equation*} f(x_{i-1}) \approx f(x_{i}) - f'(x_{i}) h \end{equation*} $$
Despejando la primera derivada $$ \begin{equation} f'(x_{i}) = \frac{f(x_{i}) - f(x_{i-1})}{h} \tag{9} \end{equation} $$
def fx_atras(f,x,h):
derivada = (f(x) - f(x-h))/h
return derivada
print('f\'(0.5) =', fx_atras(g,0.5,0.25))
f'(0.5) = -0.7140625000000003
Usando tres términos de la serie de Taylor expandida hacia adelante $$ \begin{equation} f(x_{i+1}) \approx f(x_{i}) + f'(x_{i}) h + \frac{1}{2} f''(x_{i}) h^{2} \tag{10} \end{equation} $$
Usando tres términos de la serie de Taylor expandida hacia atrás $$ \begin{equation} f(x_{i-1}) \approx f(x_{i}) - f'(x_{i}) h + \frac{1}{2} f''(x_{i}) h^{2} \tag{11} \end{equation} $$
Restando (11) de (10) $$ \begin{equation*} f(x_{i+1}) - f(x_{i-1}) \approx 2 f'(x_{i}) h \end{equation*} $$
Despejando la primera derivada $$ \begin{equation} f'(x_{i}) = \frac{f(x_{i+1}) - f(x_{i-1})}{2 h} \tag{12} \end{equation} $$
También puede escribirse como el promedio de una diferencia hacia adelante y una diferencia hacia atrás $$ \begin{equation*} f'(x_{i}) = \frac{\frac{f(x_{i+1}) - f(x_{i})}{h} + \frac{f(x_{i}) - f(x_{i-1})}{h}}{2} \end{equation*} $$
def fx_centrada(f,x,h):
derivada = (fx_adelante(f,x,h) + fx_atras(f,x,h))/2
return derivada
print('f\'(0.5) =', fx_centrada(g,0.5,0.25))
f'(0.5) = -0.9343750000000002
Usando tres términos de la serie de Taylor expandida hacia adelante una posición $$ \begin{equation*} f(x_{i+1}) \approx f(x_{i}) + f'(x_{i}) h + \frac{1}{2} f''(x_{i}) h^{2} \end{equation*} $$
Multiplicando por dos $$ \begin{equation} 2 f(x_{i+1}) \approx 2 f(x_{i}) + 2 f'(x_{i}) h + f''(x_{i}) h^{2} \tag{13} \end{equation} $$
Usando tres términos de la serie de Taylor expandida hacia adelante dos posiciones $$ \begin{equation} f(x_{i+2}) \approx f(x_{i}) + 2 f'(x_{i}) h + 2 f''(x_{i}) h^{2} \tag{14} \end{equation} $$
Restando (14) de (13) $$ \begin{equation*} 2 f(x_{i+1}) - f(x_{i+2}) \approx f(x_{i}) - f''(x_{i}) h^{2} \end{equation*} $$
Despejando la segunda derivada $$ \begin{equation} f''(x_{i}) = \frac{f(x_{i+2}) - 2 f(x_{i+1}) + f(x_{i})}{h^{2}} \tag{15} \end{equation} $$
def fxx_adelante(f,x,h):
derivada = (f(x+2*h) - 2*f(x+h) + f(x))/h**2
return derivada
print('f\'\'(0.5) =', fxx_adelante(g,0.5,0.25))
f''(0.5) = -2.362499999999999
Usando tres términos de la serie de Taylor expandida hacia atrás una posición $$ \begin{equation*} f(x_{i-1}) \approx f(x_{i}) - f'(x_{i}) h + \frac{1}{2} f''(x_{i}) h^{2} \end{equation*} $$
Multiplicando por dos $$ \begin{equation} 2 f(x_{i-1}) \approx 2 f(x_{i}) - 2 f'(x_{i}) h + f''(x_{i}) h^{2} \tag{16} \end{equation} $$
Usando tres términos de la serie de Taylor expandida hacia atrás dos posiciones $$ \begin{equation} f(x_{i-2}) \approx f(x_{i}) - 2 f'(x_{i}) h + 2 f''(x_{i}) h^{2} \tag{17} \end{equation} $$
Restando (17) de (16) $$ \begin{equation*} 2 f(x_{i-1}) - f(x_{i-2}) \approx f(x_{i}) - f''(x_{i}) h^{2} \end{equation*} $$
Despejando la segunda derivada $$ \begin{equation} f''(x_{i}) = \frac{f(x_{i}) - 2 f(x_{i-1}) + f(x_{i-2})}{h^{2}} \tag{18} \end{equation} $$
def fxx_atras(f,x,h):
derivada = (f(x) - 2*f(x-h) + f(x-2*h))/h**2
return derivada
print('f\'\'(0.5) =', fxx_atras(g,0.5,0.25))
f''(0.5) = -1.3125000000000036
Usando tres términos de la serie de Taylor expandida hacia adelante $$ \begin{equation} f(x_{i+1}) \approx f(x_{i}) + f'(x_{i}) h + \frac{1}{2} f''(x_{i}) h^{2} \tag{19} \end{equation} $$
Usando tres términos de la serie de Taylor expandida hacia atrás $$ \begin{equation} f(x_{i-1}) \approx f(x_{i}) - f'(x_{i}) h + \frac{1}{2} f''(x_{i}) h^{2} \tag{20} \end{equation} $$
Sumando (20) a (19) $$ \begin{equation*} f(x_{i+1}) + f(x_{i-1}) \approx 2 f(x_{i}) + f''(x_{i}) h^{2} \end{equation*} $$
Despejando la segunda derivada $$ \begin{equation} f''(x_{i}) = \frac{f(x_{i+1}) - 2 f(x_{i}) + f(x_{i-1})}{h^{2}} \tag{21} \end{equation} $$
También puede escribirse como la diferencia de una diferencia hacia adelante y una diferencia hacia atrás $$ \begin{equation*} f''(x_{i}) = \frac{\frac{f(x_{i+1}) - f(x_{i})}{h} - \frac{f(x_{i}) - f(x_{i-1})}{h}}{h} \end{equation*} $$
def fxx_centrada(f,x,h):
derivada = (fxx_adelante(f,x,h) - fxx_atras(f,x,h))/h
return derivada
print('f\'\'(0.5) =', fxx_centrada(g,0.5,0.25))
f''(0.5) = -4.1999999999999815