Ejercicio: 2Eva_2023PAOI_T1 Material para medalla de academia
Para f(x) se usará Simpson de 1/3 que requiere al menos dos tramos para aplicar:
a. Realice el planteamiento de las ecuaciones para el ejercicio.
b. Describa el criterio usado para determinar el número de tramos usado en cada caso.
c. Desarrolle las expresiones completas del ejercicio para cada función.
cota de error O(h5) = O(0.55)= O(0.03125)
Para g(x) se usará Simpson de 3/8 que requiere al menos tres tramos para aplicar:
para la evaluación numérica de 1 se usa un valor muy cercano desplazado con la tolerancia aplicada.
d. Indique el resultado obtenido para el área requerida y la cota de error
Area = I_{fx} – I_{gx} = 1.3333 – 0.2387 = 1.0945
cota de error = O(0.03125) + O(0.00411) = 0.03536
e. Encuentre el valor del tamaño de paso si se requiere una cota de error de 0.00032
Si el factor de mayor error es de Simpson 1/3, se considera como primera aproximación que:
cota de error O(h5) = O(0.00032), h = (0.00032)(1/5) = 0.2
es decir el número de tramos es de al menos (b-a)/tramos = 0.2 , tramos = 5.
El número de tramos debe ser par en Simpson de 1/3, por lo que se toma el entero mayor tramos=6 y el tamaño de paso recomendado es al menos 1/6. EL error al aplicar 3 veces la formula es 3(O((1/6)5)) = 0.0003858.
Lo que podría indicar que es necesario al menos dos tramos adicionales con h=1/8 y error O(0,00012) que cumple con el requerimiento.
Se puede aplicar el mismo criterio para Simpson 3/8 y se combinan los errores para verificar que cumplen con el requerimiento.
Algoritmo con Python
Resultados
Ifx: 1.3333332933359998 Igx: 0.238779092876627 Area: 1.094554200459373
Instrucciones en Python usando las funciones
# 2Eva_2023PAOI_T1 Material para medalla de academia import numpy as np import matplotlib.pyplot as plt def integrasimpson13_fi(xi,fi,tolera = 1e-10): ''' sobre muestras de fi para cada xi integral con método de Simpson 1/3 respuesta es np.nan para tramos desiguales, no hay suficientes puntos. ''' n = len(xi) i = 0 suma = 0 while not(i>=(n-2)): h = xi[i+1]-xi[i] dh = abs(h - (xi[i+2]-xi[i+1])) if dh<tolera:# tramos iguales unS13 = (h/3)*(fi[i]+4*fi[i+1]+fi[i+2]) suma = suma + unS13 else: # tramos desiguales suma = 'tramos desiguales' i = i + 2 if i<(n-1): # incompleto, faltan tramos por calcular suma = 'tramos incompletos, faltan ' suma = suma ++str((n-1)-i)+' tramos' return(suma) def integrasimpson38_fi(xi,fi,tolera = 1e-10): ''' sobre muestras de fi para cada xi integral con método de Simpson 3/8 respuesta es np.nan para tramos desiguales, no hay suficientes puntos. ''' n = len(xi) i = 0 suma = 0 while not(i>=(n-3)): h = xi[i+1]-xi[i] h1 = (xi[i+2]-xi[i+1]) h2 = (xi[i+3]-xi[i+2]) dh = abs(h-h1)+abs(h-h2) if dh<tolera:# tramos iguales unS38 = fi[i]+3*fi[i+1]+3*fi[i+2]+fi[i+3] unS38 = (3/8)*h*unS38 suma = suma + unS38 else: # tramos desiguales suma = 'tramos desiguales' i = i + 3 if (i+1)<n: # incompleto, tramos por calcular suma = 'tramos incompletos, faltan ' suma = suma +str(n-(i+1))+' tramos' return(suma) # INGRESO fx = lambda x: 2-8*(0.5-x)**2 gx = lambda x: -(1-x)*np.log(1-x) a = 0 b = 1-1e-4 muestras1 = 2+1 muestras2 = 3+1 # PROCEDIMIENTO xi1 = np.linspace(a,b,muestras1) xi2 = np.linspace(a,b,muestras2) fi = fx(xi1) gi = gx(xi2) Ifx = integrasimpson13_fi(xi1,fi) Igx = integrasimpson38_fi(xi2,gi) Area = Ifx - Igx # SALIDA print('Ifx: ', Ifx) print('Igx: ', Igx) print('Area: ', Area) plt.plot(xi1,fi,'ob',label='f(x)') plt.plot(xi2,gi,'or', label='g(x)') plt.grid() plt.legend() plt.xlabel('xi') # curvas suave con mas muestras (no en evaluación) xi = np.linspace(a,b,51) fxi = fx(xi) gxi = gx(xi) plt.fill_between(xi,fxi,gxi,color='navajowhite') plt.plot(xi,fxi,color='blue',linestyle='dotted') plt.plot(xi,gxi,color='red',linestyle='dotted') plt.show()