La derivación numérica es una técnica de análisis numérico
para calcular una aproximación a la derivada de una función en un punto
utilizando los valores y propiedades de la misma.
Por definición la derivada de una función f(x) es:
f′(x)=limh→0f(x+h)−f(x)h
Las aproximaciones numéricas que podamos hacer (para h >
0) serán:
Diferencias hacia adelante:
f′(x0)≈f(x0+h)−f(x0)h
Diferencias hacia atrás:
f′(x0)≈f(x0)−f(x0−h)h
La aproximación de la derivada por este método entrega
resultados aceptables con un determinado error. Para minimizar los errores se
estima que el promedio de ambas entrega la mejor aproximación numérica al
problema dado:
Diferencias centrales:
f′(x0)≈f(x0+h)−f(x0−h)2h
f′′(x0)≈f(x0+h)−2f(x0)+f(x0−h)h2
Es importante agregar que la derivación numérica se utiliza para realizar derivadas que no tienen una solución conocida, o que su desarrollo sea muy complicado o demasiado largo. Además es menos costoso calcular la aproximación que el valor exacto. O bien sea Porque sólo conocemos los valores de f en un número finito de puntos x.
ResponderEliminarEl codigo de este metodo en Matlab es el siguente:
#include
#include
#include
double f (double x, void * params)
{
return pow (x, 1.5);
}
int
main (void)
{
gsl_function F;
double result, abserr;
F.function = &f;
F.params = 0;
printf ("f(x) = x^(3/2)\n");
gsl_deriv_central (&F, 2.0, 1e-8, &result, &abserr);
printf ("x = 2.0\n");
printf ("f'(x) = %.10f +/- %.10f\n", result, abserr);
printf ("exact = %.10f\n\n", 1.5 * sqrt(2.0));
gsl_deriv_forward (&F, 0.0, 1e-8, &result, &abserr);
printf ("x = 0.0\n");
printf ("f'(x) = %.10f +/- %.10f\n", result, abserr);
printf ("exact = %.10f\n", 0.0);
return 0;
}
En los siguentes enlaces podemos encontrar mucha mas informacion sobre la derivacion numerica con ejemplos y codigos de este en diferentes lenguajes de programacion.
http://cypascal.blogspot.com/2012/12/derivacion-numerica.html
http://5minutosdematlab.blogspot.com/2011/09/codigo-para-obtener-la-primera-derivada.html
http://www.ugr.es/~anpalom/practica8.html
Felicitaciones a los docentes y estudiantes que hacen aportes al blog de Análisis Numérico. En este caso en particular felicitar a Fabio Alejandro Valencia y a sus compañeros de equipo, quiénes con su exposición demostraron que ellos pueden ser actores de su propia construcción y nos acercaron entre otros a los aporte que hace el Dr. David Paul Ausubel sobre el aprendizaje significativo que dice "El aprendizaje puede darse por recepción o por descubrimiento" Y en este caso se hace por descubrimiento, porque los estudiantes construyen su conocimiento a través del descubrimiento de contenidos!!!
ResponderEliminar