Programación de las Fiestas de San Isidro 2024.pdf
Derivacion e integracion
1. PRÁCTICA
DERIVACIÓN E INTEGRACIÓN NUMÉRICA
Objetivos
El alumno conocerá y aplicará diversas técnicas de derivación e integración numérica.
Al final de esta práctica el alumno podrá:
1. Resolver ejercicios que contengan derivadas e integrales, por medio de métodos
numéricos, tales como método de Taylor y Simpson respectivamente.
2. Implementar dichos métodos numéricos en lenguaje orientado a objetos
Antecedentes
1. Haber elaborado programas orientados a objetos en lenguaje Java con
aplicación numérica.
2. Manejar soluciones numéricas de derivadas e integrales
Introducción
Derivación numérica
Para diferenciar numéricamente funciones que están definidas mediante datos tabulados o
mediante curvas determinadas en forma experimental se usan diferentes procedimientos.
Un método consiste en aproximar la función en la vecindad del punto en que se desea la
derivada, mediante una parábola de segundo, tercer o mayor grado, y utilizar entonces la
derivada de la parábola en ese punto como la derivada aproximada de la función; este
método podría ser el de la Serie de Taylor.
La serie de Taylor para una función y = f(x) en xi + ∆x , desarrollada con respecto al punto
xi es
y ' 'i (∆x) 2 y ' ' 'i (∆x) 3
y ( xi + ∆x) = yi + y 'i (∆x) + + + ... (1)
2! 3!
en donde yi es la ordenada que corresponde a xi y ( xi + ∆x) se encuentra en la región de
convergencia. La función para ( xi − ∆x) está dada en forma similar por:
y ' 'i (∆x) 2 y ' ' 'i (∆x) 3
y ( xi − ∆x) = yi − y 'i (∆x) + − + ... (2)
2! 3!
Utilizando solamente los tres primeros términos de cada desarrollo, se obtiene una
expresión para y i restando la ec. (2) de la ec. (1),
y ( xi + ∆x) − y ( xi − ∆x)
y 'i = (3)
2∆x
Elaborada por: Programación Avanzada y Métodos Numéricos
Ing. Laura Sandoval Montaño
Viridiana del Carmen De Luna Bonilla
Virgilio Green Pérez
2. PRÁCTICA
DERIVACIÓN E INTEGRACIÓN NUMÉRICA
Diferencias Centrales, Hacia Adelante y Hacia Atrás
Si se denotan los puntos uniformemente espaciados a la derecha de xi como xi+1, xi+2,… y
los puntos a la izquierda de xi como xi-1, xi-2,...; y si se identifican las ordenadas
correspondientes como yi+1, yi+2, yi-1, yi-2, respectivamente, la ec. (3) se puede escribir:
yi +1 − yi −1
y 'i = (4)
2∆x
La ec. (4) se denomina la primera aproximación, por Diferencias Centrales de y’, para x.
La aproximación representa gráficamente la pendiente de la recta discontinua mostrada en
la figura de arriba. La derivada real se representa mediante la línea sólida dibujada como
tangente a la curva en xi.
Si sumamos las ecuaciones (1) y (2), y utilizamos la notación descrita previamente, se
puede escribir la siguiente expresión para la segunda derivada:
y − 2 yi + yi −1
y ' 'i = i +1 (5)
(∆x) 2
La ec. (5) es la primera aproximación, por Diferencias Centrales, de la segunda derivada de
la función en xi. Esta expresión se puede interpretar gráficamente como la pendiente de la
tangente a la curva en xi+1/2 menos la pendiente de la tangente a la curva en xi-1/2 dividida
entre ∆x , cuando las pendientes de las tangentes están aproximadas mediante las
expresiones:
y − yi
y 'i + 1 = i +1
2 ∆x (6)
y − yi −1
y 'i − 1 = i
2 ∆x
Elaborada por: Programación Avanzada y Métodos Numéricos
Ing. Laura Sandoval Montaño
Viridiana del Carmen De Luna Bonilla
Virgilio Green Pérez
3. PRÁCTICA
DERIVACIÓN E INTEGRACIÓN NUMÉRICA
es decir,
yi +1 − yi yi − yi −1
−
y' ' = ∆x ∆x = yi +1 − 2 yi + yi −1 (7)
∆x (∆x) 2
Se ha demostrado que las expresiones de Diferencias Centrales para las diversas derivadas
encierran valores de la función en ambos lados del valor x en que se desea conocer la
derivada en cuestión. Se pueden obtener fácilmente expresiones para las derivadas,
totalmente en términos de valores de la función en xi y puntos a la derecha de xi. Éstas se
conocen como expresiones de Diferencias Finitas Hacia Adelante. En forma similar, se
pueden obtener expresiones para las derivadas que estén solamente en términos de valores
de la función en xi y puntos a la izquierda de xi. Éstas se conocen como expresiones de
Diferencias Finitas Hacia Atrás.
EJEMPLO
Usar aproximaciones de Diferencias Finitas Hacia Adelante, Hacia Atrás y Centradas para
estimar la primera derivada de:
f ( x) = −0.1x 4 − 0.15 x 3 − 0.5 x 2 − 0.25 x + 1.2 en x = 0.5
Utilizando un ∆x de 0.5.
Repetir los cálculos usando ∆x = 0.25.
Nótese que la derivada se puede calcular directamente como:
f’(x) = -0.4x3 - 0.45x2 - 1.0x - 0.25
y evaluando tenemos: f’(0.5) = -0.9125
SOLUCIÓN:
Para ∆x = 0.5 se usa la función para determinar:
Xi-1 = 0.0 Yi-1 = 1.200
Xi = 0.5 Yi = 0.925
Xi+1 = 1.0 Yi+1 = 0.200
Estos datos se utilizan para calcular:
la Diferencia Hacia Adelante:
0.2 − 0.925
y ' (0.5) ≅ = −1.45
0.5
la Diferencia Dividida Hacia Atrás:
0.925 − 1.2
y ' (0.5) ≅ = −0.55
0. 5
Elaborada por: Programación Avanzada y Métodos Numéricos
Ing. Laura Sandoval Montaño
Viridiana del Carmen De Luna Bonilla
Virgilio Green Pérez
4. PRÁCTICA
DERIVACIÓN E INTEGRACIÓN NUMÉRICA
y la Diferencia Dividida Central:
0.2 − 1.2
y ' (0.5) ≅ = −1.0
1.0
Para ∆x = 0.25, los datos son:
Xi-1 = 0.25 Yi-1 = 1.10351563
Xi = 0.50 Yi = 0.92500000
Xi+1 = 0.75 Yi+1 = 0.63632813
Por lo que la Diferencia Dividida Hacia Adelante:
0.63632813 − 0.925
y ' (0.5) ≅ = −1.15468748
0.25
la Diferencia Dividida Hacia Atrás:
0.925 − 1.10351563
y ' (0.5) ≅ = −0.71406252
0.25
y la Diferencia Dividida Central:
0.63632813 − 1.10351563
y ' (0.5) ≅ = −0.934375
0.5
Para los dos ∆x , las aproximaciones por Diferencias Centrales son más exactas que las
Diferencias Divididas Hacia Adelante o las Diferencias Divididas Hacia Atrás.
Codificando este método en Java, se tiene:
public class Derivacion{
double x;
double deltaX;
double haciaAdelante;
double haciaAtras;
double centradas;
public static void main(String args[]){
try{
Redondear r = new Redondear();
Derivacion d = new Derivacion();
d.x = Double.parseDouble(args[0]);
d.deltaX = Double.parseDouble(args[1]);
d.haciaAdelante = (d.funcion(r.redondeo(d.x+d.deltaX,2))-
d.funcion(d.x))/(d.deltaX);
System.out.println(“La derivada de “+d.x+” hacia adelante es:
“+d.haciaAdelante);
d.haciaAtras = (d.funcion(d.x)-d.funcion(r.redondeo(d.x-
d.deltaX,2)))/d.deltaX;
System.out.println(“La derivada de “+d.x+” hacia atras es
:”+d.haciaAtras);
Elaborada por: Programación Avanzada y Métodos Numéricos
Ing. Laura Sandoval Montaño
Viridiana del Carmen De Luna Bonilla
Virgilio Green Pérez
5. PRÁCTICA
DERIVACIÓN E INTEGRACIÓN NUMÉRICA
d.centradas = (d.funcion(r.redondeo(d.x+d.deltaX,2))-
d.funcion(r.redondeo(d.x-d.deltaX,2)))/(2*d.deltaX);
System.out.println(“La derivada de “+d.x+” en diferencias centradas
es: “+d.centradas);
}
catch(ArrayIndexOutOfBoundsException aioobe){
System.out.println(“ERROR!!! Faltan parametros”);
System.out.println(“Sintaxis: java Derivacion valor_inicial
incremento”);
}
}
public double funcion(double x){
double f;
f = -0.1*Math.pow(x,4)-0.15*Math.pow(x,3)-0.5*Math.pow(x,2)-0.25*x+1.2;
return f;
}
}
Como se puede observar, este código implementa las ecuaciones para las diferencias hacia
adelante, hacia atrás, y centradas. Recibe como parámetros el punto en el que se desea
calcular la derivada, y el ∆x deseado. Se tiene un método que implementa la función de la
cual se desea obtener la derivada.
Una de las características principales de este código es que se utiliza un objeto de la clase
Redondear, la cual es utilizada debido a que en Java, como en otros lenguajes, tiene
errores de redondeo y aritmética de computadora. Por ejemplo, se puede dar el caso que si
se resta 15 a 15.1, el resultado es 0.0999999999999999999; de aquí el uso de dicha clase
ayuda a hacer redondeos para tener valores útiles en estos cálculos.
El código de Redondear es:
import java.math.*;
public class Redondear{
public double redondeo(double resultado, int redondeo){
BigDecimal bd=new BigDecimal(
Double.toString(resultado)).setScale(redondeo,BigDecimal.ROUND_HALF
_UP) ;
return bd.doubleValue();
}
}
Este código crea un objeto de la clase BigDecimal, que ayuda a hacer el redondeo. Se
utiliza el método setScale(), que recibe como parámetros el número de decimales a los que
se redondeará, y un factor, que en este caso, para evitar equivocaciones, se usa
ROUND_HALF_UP.
Elaborada por: Programación Avanzada y Métodos Numéricos
Ing. Laura Sandoval Montaño
Viridiana del Carmen De Luna Bonilla
Virgilio Green Pérez
6. PRÁCTICA
DERIVACIÓN E INTEGRACIÓN NUMÉRICA
Integración numérica
El principio de los métodos de integración numérica consiste en ajustar un polinomio a un
conjunto de puntos y luego integrarlo. Al realizar dichas integrales obtenemos, entre otras,
las reglas de trapecio y de Simpson las cuales dan lugar a reglas de integración compuestas
que buscan que el error sea cada vez menor.
1
Regla de Simpson de
3
1
La regla de Simpson de o simplemente regla de Simpson, consiste en aproximar la curva
3
con polinomios de grado 2, es decir, con parábolas. Omitiendo la deducción, el resultado es
N −1 N −2
H
SN = y0 + 4 yi + 2 yi + y N
3 i =1, 3, 5,... i = 2 , 4 , 6 ,..
La primera sumatoria es para aquellas i’s que sean impares. La segunda es para las i’s que
sean pares. Dado que para obtener la ecuación de una parábola se requieren 3 puntos, se
necesitan 2 particiones, por lo cual la N debe ser par.
3
Regla de Simpson de
8
La regla de Simpson de 8 consiste en aproximar la función mediante una cúbica:
3
N −1 N −2
3H
S3 = y0 + 2 yi + 3 yi + y N
8
N 3 i = 3, 6 , 9 ,.. i ≠ múltiplos de 3
Esta regla es más complicada. La primera sumatoria sólo incluye aquellas i’s que sean
múltiplos de 3. La segunda el resto, es decir, las i’s que no sean múltiplos de 3. Entre las 2
cubren desde 1 hasta N-1. Para una cúbica se requieren 4 puntos, por lo cual se utilizan 3
intervalos. Por esta razón N debe ser un múltiplo de 3.
Elaborada por: Programación Avanzada y Métodos Numéricos
Ing. Laura Sandoval Montaño
Viridiana del Carmen De Luna Bonilla
Virgilio Green Pérez
7. PRÁCTICA
DERIVACIÓN E INTEGRACIÓN NUMÉRICA
Ejemplo de regla de Simpson
1 4dx
Calcularla siguiente integral con las reglas anteriores. =π
0 1+ x2
Para N=2
H
S 2 = ( y 0 + 4 y1 + y 2 )
3
b − a 1− 0
H está dada por H = = = 0.5
N 2
H 0.5 0.5(18.8) 9.4
Sustituyendo S 2 = ( f (0) + 4 f (0.5) + f (1)) = (4 + 4(3.2) + (2)) = =
3 3 3 3
∴ S 2 = 3.1333333
Para N=4
H 3 2
S4 = y0 + 4 yi + 2 yi + y 4
3 i =1, 3, 5,... i = 2 , 4 , 6 ,..
H
S4 = ( y0 + 4( y1 + y3 ) + 2 y 2 + y 4 )
3
b − a 1− 0
H está dada por H = = = 0.25
N 4
Sustituyendo
H
S 4 = ( f (0) + 4( f (0.25) + f (0.75) ) + 2 f (0.5) + f (1) =
3
0.25 0.25(37.6988) 9.4247
= (4 + 4(3.7647 + 2.56) + 2(3.2) + (2)) = =
3 3 3
∴ S 4 = 3.141566
Regla de Simpson 3
8
Para N=3
3H 0 1
S3 = y0 + 2 yi + 3 yi + y3
8
3 8 i = 3, 6 , 9 ,.. i ≠ multiplos de 3
3H
S3 = ( y0 + 3( y1 + y 2 ) ) + y3 )
8
3 8
b − a 1− 0 1
H está dada por H = = = = 0.33333
N 3 3
Sustituyendo
3 1 3 18 36 3 1632
S3 =
3 8 3
( f (0) + 3( f ( 1 ) + f ( 2 )) + f (1)) = 24
3 3
4+3 +
5 13
+ 2) =
24 65
8
204
S3 = = 3.133461
8
3 65
Elaborada por: Programación Avanzada y Métodos Numéricos
Ing. Laura Sandoval Montaño
Viridiana del Carmen De Luna Bonilla
Virgilio Green Pérez
8. PRÁCTICA
DERIVACIÓN E INTEGRACIÓN NUMÉRICA
Para N=6
3 4
3H
S3 = y0 + 2 yi + 3 yi + y6
8
6 8 i =3, 6 , 9 ,.. i ≠ multiplos de 3
3H
S3 = ( y0 + 2( y3 ) + 3( y1 + y 2 + y 4 + y5 ) + y6 )
8
6 8
b − a 1− 0 1
H está dada por H = = = = 0.1666666
N 6 6
Sustituyendo
3 1
S3 =
6 8 6
( f (0) + 2( f ( 6 ) ) + 3( f ( 1 ) + f ( 6 ) + f ( 6 ) + f ( 5 ) ) + f (1) )
3
6
2 4
6
8
3 16 144 18 36 144 3
= 4+2 +3 + + + +2 = (50.265334) = 3.141583375
48 5 37 5 13 61 48
∴ S3 = 3.141583375
6
8
Codificando el método de Simpson 1
3
, se tiene que:
public class SimpsonUnTercio{
double limInf;
double limSup;
int n;
double h;
double integral;
public static void main (String args[]){
LeeUnDouble lud = new LeeUnDouble();
SimpsonUnTercio sut=new SimpsonUnTercio();
//Empezamos a obtener datos:
//Obtenemos el limite inferior
System.out.println(“Dame el valor del limite inferior: “);
lud.leeNumero();
sut.limInf=lud.num;
//Obtenemos el limite superior
System.out.println(“Dame el valor del limite superior: “);
lud.leeNumero();
sut.limSup=lud.num;
//Obtenemos el valor de N
System.out.println(“Dame el valor de N: “);
lud.leeNumero();
sut.n=(int)lud.num; //cast
sut.h=(sut.limSup-sut.limInf)/sut.n;
sut.integral=(sut.h/3)*(sut.funcion(sut.limInf)+(4*sut.sumaImpares(
sut.limInf,sut.h,sut.n))+(2*sut.sumaPares(sut.limInf,sut.h,sut.n))+
sut.funcion(sut.limSup));
Elaborada por: Programación Avanzada y Métodos Numéricos
Ing. Laura Sandoval Montaño
Viridiana del Carmen De Luna Bonilla
Virgilio Green Pérez
9. PRÁCTICA
DERIVACIÓN E INTEGRACIÓN NUMÉRICA
System.out.println(“El resultado de la integral
es :”+sut.integral);
}
public double sumaImpares(double inf, double H, double N){
double suma=0;
for(int i=1; i<=(N-1); i=i+2){
suma=suma+funcion(inf+H*i);
}
return suma;
}
public double sumaPares(double inf, double H, double N){
double suma=0;
for(int i=2; i<=(N-2); i=i+2){
suma=suma+funcion(inf+H*i);
}
return suma;
}
public double funcion(double x){
double fX;
fX=4/(1+x*x);
return fX;
}
}
Como se puede observar, se utiliza la clase LeeUnDouble, vista anteriormente, para
obtener los valores de los límites y el valor de N, para realizar la integral de la función. Se
implementan los métodos para las sumatorias de los elementos pares, y de los elementos
impares, así como la función a la cual se le desea obtener la integral.
Elaborada por: Programación Avanzada y Métodos Numéricos
Ing. Laura Sandoval Montaño
Viridiana del Carmen De Luna Bonilla
Virgilio Green Pérez
10. PRÁCTICA
DERIVACIÓN E INTEGRACIÓN NUMÉRICA
Ejercicios Propuestos
1. Implementar en una clase las ecuaciones para obtener la segunda derivada por
medio de la serie de Taylor.
Utilice la misma ecuación vista en el ejemplo, obtenga el valor teórico de la segunda
derivada en el mismo punto y calcule los errores absoluto y relativo.
2. Realizar una clase que efectúe la integración numérica mediante el método de
Simpson 3/8.
3. Utilice la función del ejemplo para obtener su integral y compare con los resultados
del ejemplo.
4. Obtenga la primera y segunda derivada de la siguiente función:
ex
f ( x) = 2
x −3
5. Obtenga por medio de la regla de Simpson de 1/3 la siguiente integral:
3
f ( x) = e x x 2 dx
0
proponga un valor de N.
6. Obtenga por medio de la regla de Simpson de 3/8 la integral del ejercicio anterior y
compare ambos resultados para una misma N.
Elaborada por: Programación Avanzada y Métodos Numéricos
Ing. Laura Sandoval Montaño
Viridiana del Carmen De Luna Bonilla
Virgilio Green Pérez