Documentos de Académico
Documentos de Profesional
Documentos de Cultura
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
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.
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
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.
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 X0 X
inicio
cadena
equis
zz = ecuacion(cadena,equis,0)
h = 0.001*equis
deriv =
(ecuacion(cadena,equis+h,0) -
ecuacion(cadena,equis,0)) / h
OP1
V
OP1="S" o OP1="s" 2
F
"Desea evaluar otra ecuación? "
OP2
V
OP2="S" o OP2="s" 1
F
FIN
# 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;
}
[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