Está en la página 1de 8

ITNL ISC 2005

UNIDAD IV
Diferenciación e Integración Numérica
Diferenciación Numérica
 Aprox. de diferencias divididas finitas para la 1ra derivada.
 Aprox. de diferencias divididas finitas para la 2da derivada.
 Método de la derivada por la regla de los cuatro pasos.

Se usaran los desarrollos en series de Taylor para obtener una aproximación por diferencias
divididas finitas

f(x) = f(x0) + f ‘(x0) (x-x0) + f ‘’(x0) (x-x0)2 + ........


2! .

Aproximación de diferencias divididas finitas hacia adelante.

f(xi+1) = f(xi)+f ’(xi)(xi+1-xi) + R1

f ’(xi) = f(xi+1) –f(xi) – R1 = f(xi+1) – f(xi) – R1


x i +1 – x i xi+1 – x i xi+1 – x i
Aprox. de error de
1er. orden truncamiento

Por la misma vía de la serie de Taylor se ha obtenido un estimado del error por truncamiento
asociado con esta aproximación de la derivada.
R1 = f ’’() (x1-x0)2 = O (x i +1 - xi)
(n+1)!
es decir f ’(xi) = f(x i +1) – f (xi) _ O( x i +1 – x i )
x i +1 – x i
donde:
fi es referido como la 1ra diferencia hacia adelante. f(x i +1) – f (xi)
h es denominado longitud de paso sobre la cual se hace la aproximación. (x i +1 – x i).
Se denomina diferencia hacia adelante o progresiva porque usa datos en i, el termino fi se le llama
1ra diferencia dividida finita.

Aproximación de Diferencias Divididas Finitas hacia atrás de la 1ra Derivada


f(xi-1) = f(xi) + f’(xi)(xi-1-x1) + f” (xi)(xi-1 - xi) 2 + ......
-h 2!
f (xi-1) = f(xi) + f’(xi) + f” (xi) h2 _ h3 f”(xi) + .........
-h 2! 3!

Ing. Juan Manuel Efrén García Guerra MC 7


ITNL ISC 2005

Despejando y agrupando para f ’ (xi) tenemos:

f’ (xi) = f(xi-1) - f(xi) - R2


-h
donde el error es
O(h) es decir f’(xi) = f(xi)- f(xi-1) - R2
h

Aproximación de Diferencias Divididas Finitas Centrada de la 1ra Derivada.

Restemos (*) del sig. Desarrollo hacia adelante.

f(xi+1) = f(xi) + f’(xi) h + f”(xi) h2 + .....


_ 2!
f(xi-1)= f(xi) - f’(xi) h + f” (xi) h2
2!

f(xi+1) - f(xi-1) = 2 f’(xi)h + (f”(xi)h3)/ 3!

Despejando la 1ra derivada tenemos


f’(xi) = f(xi+1) - f(xi-1) - f”(xi) h2 + .......
2h 6

f’(xi) = f(xi+1) - f (xi-1) - O(h2)


2h

Ejercicio (4) sea f(x)=ln(x) y x0 = 1.8 utilice las 3 aprox. vistas para estimar la 1ra derivada como
una longitud de a)h = 0.1 b)h = 0.01
Calcule exactamente la derivada y del error en cada caso.
f(xi+1) = f(xi+h) = ln(1.9)
f(xi-1) = f(xi-h) = ln(1.7)
f’(1.8)  ln (1.9) ₋ ln (1.7) = 0.6418539 - 0.5306283
2(0.1) 0.2
f’(1.8) = 0.11122257 = 0.5561282 aproximación por DDF centrada
0.2
Para la función f(x) =ln x la derivada en forma analítica es:
f ’(x) = 1/ x = 1/1.8 = 0.55555556 exacto

Ing. Juan Manuel Efrén García Guerra MC 8


ITNL ISC 2005

TAREA
ESCRIBIR UN PROGRAMA PARA CALCULAR LA APROX. POR DIFERENCIAS
DIVIDIDAS FINITAS PARA DATOS DISCRETOS (PUNTOS). Igualmente espaciados, para
diferencia centradas en los puntos intermedios, para la 1ra diferencia progresiva O(h) Ultima
diferencia progresiva O(h). Dando el No. de puntos y h el programa genera los sucesivos x i
pidiendo f(xi) para leer.

Ing. Juan Manuel Efrén García Guerra MC 9


ITNL ISC 2005

Calculo de la derivada en un punto por el Método de “Los Cuatro Pasos”

En los libros de calculo se describe la definición de la derivada como el limite de: Y / X (razón
de cambio de Y con respecto a X ) de la formula [ f( X + X ) - f( X ) ] / X.
También llamada la razón de cambio instantánea.
El procedimiento para encontrar la derivada de una función en un punto por este método es aquel en
el cual es necesario incrementar en la función una cantidad ¨X¨ a la variable independiente ¨ X ¨ ,
al resultado de esto, se le reste la función original, y a todo esto dividirlo entre la cantidad ¨ X ¨,
para finalmente obtener el limite cuando ¨ X ¨ tienda a cero.
Para computarizar este método es necesario llevar a cabo algunas modificaciones que permitan
cuantificar y obtener valores numéricos en este concepto de la derivada, sabemos que el valor de
¨X ¨ para que realmente pueda dar resultado su aplicación tiene que ser un valor pequeño, pero,
¿Qué tan pequeño?.
Pues una cantidad que no sea cero para empezar, y que sea pequeña con respecto al valor del punto
a evaluar (X0).
Otra de las modificaciones importantes en el programa es el contar con una función evaluadora de
ecuaciones donde sea fácil cambiar de ecuación a derivar, sin necesidad de modificar el programa
para otra ecuación distinta. Para fines prácticos usaremos ¨ h ¨, en lugar de ¨ X ¨, quedándonos las
ecuaciones de este método como sigue:

dY [ f ( X + X ) – f (X)]
____ = lim _____________________
dX X0 X

A continuación como queda para la codificación del programa en el lenguaje C :


Derivada = (ecuacion ( formula , x0 + h , 0 ) – ecuacion ( formula , x0 , 0 ) ) / h;
donde:
ecuacion es el nombre de una función que calcula el valor numérico de la ecuación a derivar que en
el algoritmo recibe el nombre de formula y es acompañado de x0 valor real sobre el cual se deriva,
los valores cero después de la coma, no se usarán.

El diagrama de flujo de este programa es el siguiente:

Ing. Juan Manuel Efrén García Guerra MC 10


ITNL ISC 2005

inicio

"Deme la ecuación que


desea derivar"

cadena

"Para que valor de X


desea evaluar ?"

equis

zz = ecuacion(cadena,equis,0)

h = 0.001*equis

deriv =
(ecuacion(cadena,equis+h,0) -
ecuacion(cadena,equis,0)) / h

"El valor de la funcion en X


es",zz ,"y la derivada es",deriv

"Desea evaluar la derivada


para otro punto?"

OP1

V
OP1="S" o OP1="s" 2

F
"Desea evaluar otra ecuación? "

OP2

V
OP2="S" o OP2="s" 1

F
FIN

El código fuente de este método es el siguiente:

Ing. Juan Manuel Efrén García Guerra MC 11


ITNL ISC 2005

# include <stdio.h>
# include <conio.h>
# include <anal_num.h>
double ecuacion(char *cadena,float x2,float y);
char cadena[80];
main(){
char op,op1;
float equis,der,x2,x3,zz;
double h; clrscr();
textcolor (15);
textbackground(1);
printf("\n INSTITUTO TECNOLOGICO DE NUEVO LAREDO");
printf("\n Departamento de Sistemas y Computaci¢n\n\n");
printf("\n Por el método de los cuatro pasos \n\n");
printf("Este programa calcula la derivada de una funcion deseada, para el valor");
printf("\n que tambien se proporciona de X, las funciones basicas que pueden ser");
printf("\n evaluadas y como deben de escribirse aqui se muestran:");
printf("\n logaritmo natural ....ln(x) numero e elevado a una potencia .. exp(x)");
printf("\n valor absoluto ...... abs(x) raiz cuadrada .................... sqrt(x)");
printf("\n cuadrado de una cant. sqr(x) seno de un angulo ................ sin(x)");
printf("\n coseno de un angulo.. cos(x) tangente de un angulo ............ tan(x)");
printf("\n arco seno de una cant.asin(x) arco coseno de una cantidad ...... acos(x)");
printf("\n una cant. a una poten..x^n arco tang. de una cantidad........ atan(x)");
printf("\n\n Los angulos deberan ser expresados en radianes, asi como los angulos ");
printf("\n obtenidos seran radianes.");
printf("\n\n Las operaciones de suma + , de resta - , de multiplicacion * , de division /");
printf("\n La exponenciacion ^ , El parentesis ( ) para agrupar terminos o funciones ");
printf("\n son las unicas permitidas. ");
printf("\n\n OPRIMA CUALQUIER LETRA PARA CONTINUAR");
getch();
do
{
clrscr();
printf("\n\n\n\n\n");
printf(" Escriba la ecuaci¢n que quiere derivar\n");
scanf("%s",&cadena);
do
{
printf("\n\n\n Escriba el valor para el cual se deriva\n");
scanf("%f",&equis);
h = 0.00001*equis;
x2=equis;
x3=equis+h;
clrscr();
printf("\n\n\n\n");
zz= Ecuacion(cadena,equis,0);
printf("La Ecuaci¢n es %s\n\n ", cadena);
printf(" El valor de la Ecuaci¢n en %f es % .3f\n\n " , equis,zz);
Ing. Juan Manuel Efrén García Guerra MC 12
ITNL ISC 2005
der = (Ecuacion(cadena,x3,0) - Ecuacion(cadena,x2,0)) / h ;
printf(" Para un valor de %.3f la derivada es : %.3f " , x2, der);
printf("\n\n Desea calcular para otro valor de x [s/n] ");
scanf("%s",&op);
clrscr();
}
while(op == 's'|| op == 'S');
printf("\n\n Desea calcular para otra derivada [s/n] ");
scanf("%s",&op1);
}
while(op1 == 's'|| op1 == 'S');
printf("\n\n\n\n\n .... GRACIAS POR USAR ESTE PROGRAMA !\n atte. jmgg" );
getch();
return 0;
}

SEGUNDA DERIVADA POR DIFERENCIAS DIVIDIDAS FINITAS CENTRADAS

Ing. Juan Manuel Efrén García Guerra MC 13


ITNL ISC 2005
Se usaran los desarrollos en series de Taylor para obtener la aproximación por diferencias divididas
finitas para la 2da. Derivada.
f(x) = f(x0) + f ’(x0) (x-x0) + f ”(x0) (x-x0)2 + ........
2!
Siguiendo los mismos pasos que en el desarrollo de la 1ra. Derivada, se llega al algoritmo descrito
a continuación:
[f(x 0  h) - 2 f(x 0 )  f(x 0 - h)]
f ´´( x 0 ) 
h2
Ejercicio de la Primera derivada por DDF centrada.
Para la función F(X) = 2X3 derivar para valores de X = 1.5 con un valor de h = 0.10 .

La formula es : F’(xi) = f (xi+1) - f (xi-1)


2h
y para la función a derivar tenemos:
f(xi+1) = 2 * ( X + h ) 3 = 2*( 1.5 + 0.1 )3 = 2 * 1.6 3 = 8.192
f (xi-1) = 2* ( X – h ) 3 = 2*(1.5 - 0.1 ) 3 = 2* 1.4 3 = 5.488
Sustituyendo en la formula tenemos:
F´(X) = (8.192 – 5.488) / (2 * 0.1) = 13.52
De manera analítica tenemos que F´(X) = 6*X2 = 6*(1.5)2 = 13.5
Por DDF es 13.52 y de forma analítica tenemos 13.5 una diferencia entre los métodos de 0.02
Para el tercer método (por los 4 pasos) tenemos.
Formula F´( X ) = (f(xi+1) - f(xi)) / h
Sustituyendo tenemos:
F´(X) = ( 8.192 – 6.75 ) / 0.1 = 14.42 .
El mismo ejemplo para la 2da. derivada nos queda:

[2 * (x 0  h) 3 - 2 * (x 0 ) 3  2 * (x 0 - h) 3 ] 0.135
f ´´( x 0 )  2
  13.5
h 0.01

Ing. Juan Manuel Efrén García Guerra MC 14

También podría gustarte