Академический Документы
Профессиональный Документы
Культура Документы
Profesor: Dr. Alejandro S. M. Santa Cruz Auxiliares: Sr. Juan Pablo Camponovo Ing. Juan Ignacio Manassaldi
Derivada Numrica
f ( x0 h) f ( x0 ) f ( x0 ) h
' n
Adelante
f ( x0 ) f ( x0 h) f ( x0 ) h
' n
Atrs
f ( x0 h) f ( x0 h) f ( x0 ) 2h
' n
Central
Implementacin en MATLAB
Vamos a analizar el comportamiento de la funcin f(x) y su derivada analtica f(x) en el intervalo [0.1;5]
e x 1 f ( x) x
function y=funcion(x) y=(exp(-x)-1)./x;
x x e e 1 ' f a ( x) x x2
Implementacin en MATLAB
x=linspace(0.1,5,100); Creamos los pares de valores y=funcion(x); yp=derivada(x); plot(x,y,'b','LineWidth',2) Graficamos hold on plot(x,yp,'r','LineWidth',2) grid minor
Implementacin en MATLAB
Implementacin en MATLAB
0.5
f(x)
0
-0.5
f(x)
0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
-1 0
f ( x h) f ( x ) f ( x) h
' n
e xh 1 f ( x h) x h
e 1 f ( x) x
Se observa claramente que para distintos valores de h, se obtendrn distintas estimaciones de la derivada.
Comportamiento en el intervalo
Vamos a graficar como se comporta la estimacin numrica en el intervalo que estamos estudiando.
x=linspace(0.1,5,100); yp=derivada(x); plot(x,yp,'r','LineWidth',2) hold on ypn = (funcion(x + 0.1)- funcion(x))./0.1; plot(x,ypn, 'g*','LineWidth',2) grid minor
Comportamiento en el intervalo
0.5 0.45 0.4 0.35 0.3 0.25 0.2 0.15 0.1 0.05 0 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
fa(x) f n(x)
Comportamiento en el intervalo
0.5 0.45 0.4 0.35 0.3 0.25 0.2 0.15 0.1 0.05 0 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5 5
Comportamiento en el intervalo
Cmo podemos analizar el error que comete la estimacin en el intervalo?
Ayuda: Si el intervalo tiene 100 elementos, se van a generar 100 errores . Cmo podemos agruparlos para su anlisis?
Implementacin en Matlab
Implementacin en Matlab
El error va a disminuir hasta que la derivada numrica sea igual a la analtica?
No!, nosotros sabemos que el error no va a disminuir hasta volverse cero. Por lo tanto, debemos encontrar donde el error deja de disminuir y comienza a aumentar a pesar de decrecer el incremento.
Implementacin en Matlab
- Vamos a calcular el error cometido por distintos incrementos (h) que van desde 1x10-13 hasta 1x10-1
x=linspace(0.1,5,100); yp=derivada(x); h=logspace(-13,-1,100); for i=1:100 ypn = (funcion(x + h(i))- funcion(x))./h(i); error(i)= sum(abs(ypn-yp))/100; end
10
-3
10
-4
10
-5
10
-6
10
-7
10
-8
10 -14 10
-9
10
-12
10
-10
10
-8
10
-6
10
-4
10
-2
10
Incremento Optimo
Cmo encontramos el h optimo? Qu error le corresponde al h optimo? Al h optimo le corresponde el error mnimo. Por lo tanto debemos encontrar el error mnimo y ubicar que incremento lo gener.
Implementacin en Matlab
Incremento Optimo
10
-2 -3
10
10
-4
10
-5
10
-6
10
-7
10
-8
10 -14 10
-9
10
-12
10
-10
10
-8
10
-6
10
-4
10
-2
10