Derivadas
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 :
Código del algoritmo en python:
Referencias:
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
>>> 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