Métodos Numéricos con Python : Método de diferencias hacia adelante

Isaac Newton usó y popularizó las ecuaciones de diferencias en el último cuarto del siglo XVII, pero muchas de estas técnicas  fueron desarrolladas previamente por Thomas Harriot (1561–1621) y Henry Briggs (1561–1630). Harriot realizó avances en técnicas de navegación.

Métodos de diferencias hacia adelante:

Para poder implementar este algoritmo en Python primero debemos entender el algoritmo.

Cuando nos disponemos a derivar una función derivable sobre un punto $x0$ contenido en su dominio tenemos lo siguiente :
$$f'(x_0) = \lim_{h \rightarrow 0} \frac{f(x_0 + h) - f(x_0)}{h}$$ Luego observamos que el siguiente resultado es una buena aproximación siempre y cuando h  sea lo suficientemente pequeño pero el problema que encontraremos será el error de redondeo  por lo tanto lo que obtenemos es una aproximación. Es decir :
Es claro que el resultado anterior solo es una aproximación, si buscamos el valor del error cometido se puede calcular con el siguiente resultado 
Por lo tanto ya tenemos claro el algoritmo, claro que la demostración lo pueden encontrar en cualquier libro de análisis numérico .

Para implementar el algoritmo en python debemos conocer 2 librerías :

  Numpy : una biblioteca de funciones matemáticas de alto nivel para operar vectores o matrices. 
  Sympy :  una biblioteca para el álgebra computacional.

Código del algoritmo en python:

import numpy as np
import sympy
x = sympy.symbols('x')
fx = input('ingrese funcion : ')
x0 = input('ingrese x0 : ')
h = input('ingrese tamaño de paso : ')
df1 = float(sympy.sympify(fx).subs(x,float(x0) + float(h)))
df2 = float(sympy.sympify(fx).subs(x,x0))
hh = float(h)
df = (df1 - df2)/hh
print(df)
Ejemplo:
>>> ingrese funcion : 2*x+x**2
>>> ingrese x0 : 2
>>> ingrese tamano de paso : 0.1
>>> 6.099999999999994

Referencias: 

Análisis numérico. 10a. ed. Richard L. Burden, J. Douglas Faires y Annette M. Burden

Publicar un comentario

0 Comentarios