Ejercicio: 2Eva_2022PAOI_T1 Comparar integrales numéricos Simpson y Cuadratura de Gauss
Literal a. Integral con Simpson 1/3
Para la ecuación en el intervalo x entre [0,3] aplicando dos veces la fórmula en el intervalo se requieren al menos dos tramos cada Simpson de 1/3. Por lo que la cantidad de tramos es 4 (dos por cada formula, y dos fórmulas) que corresponden a 5 muestras.
El tamaño de paso se calcula como:
h = \frac{b-a}{tramos}=\frac{3-0}{4} = \frac{3}{4} = 0.75representados en una gráfica como
A = \int_0^3 \frac{e^x \sin(x)}{1+x^2} \delta xcon lo que se define la función del integral f(x)
f(x) = \frac{e^x \sin(x)}{1+x^2}Con lo que aplicando la fórmula se puede obtener los valores de las muestras:
xi= [0. 0.75 1.5 2.25 3. ] fi= [0. 0.9235 1.3755 1.2176 0.2834]
Nota: realizar las expresiones completas para las fórmulas si no adjunta el algoritmo en Python
Aplicando Simpson de 1/3 en cada tramo se tiene:
A_s= \frac{1}{3} \Big( \frac{3}{4} \Big ) \Big( 0 + 4(0.9235) + 1.3755 \Big) + + \frac{1}{3} \Big( \frac{3}{4} \Big ) \Big( 1.3755 + 4(1.2176) +0.2834 \Big) A_s = 2.8998Literal b. Integral con Cuadratura de Gauss
Para usar dos veces el método de Cuadratura de Gauss se usan dos intervalos, con lo que las muestras en x serán:
xj= [0. 1.5 3. ]
se calculan los valores para el tramo [0, 1.5]:
x_{a1} = \frac{0+1.5}{2} - \frac{1}{\sqrt{3}}\frac{1.5-0}{2} = 0.3169 x_{b1} = \frac{0+1.5}{2} + \frac{1}{\sqrt{3}}\frac{1.5-0}{2} = 1.1830 A_{g1} =\frac{1.5-0}{2} \Big( f(0.3169)+f(1.1830)\Big) = 1.2361se calculan los valores para el tramo [1.5, 3]:
x_{a2} = \frac{1.5+3}{2} - \frac{1}{\sqrt{3}}\frac{3-1.5}{2} = 1.8169 x_{b2} = \frac{1.5+3}{2} + \frac{1}{\sqrt{3}}\frac{3-1.5}{2} = 2.6830 A_{g2} =\frac{3-1.5}{2} \Big( f(1.8169)+f(2.6830)\Big) = 1.6329El total del integral para el intervalo [0,3]
A_g = A_{g1} + A_{g2} = 2.8691Al comparar los resultados entre los métodos del literal a y b
errado = |A_s - A_g| = 2.8998 - 2.8691 = 0.0307Instrucciones integradas en Python
# 2Eva_2022PAOI_T1 # Comparar integrales numéricos Simpson # y Cuadratura de Gauss import numpy as np import matplotlib.pyplot as plt # INGRESO fx = lambda x: (np.exp(x)*np.sin(x))/(1+x**2) a = 0 b = 3 # PROCEDIMIENTO # Aplicando Simpson 1/3 tramos = 4 muestras = tramos+1 xi = np.linspace(a,b,muestras) fi = fx(xi) hs = xi[1]-xi[0] As = (1/3)*(3/4)*(fi[0]+4*fi[1]+fi[2]) As = As + (1/3)*(3/4)*(fi[2]+4*fi[3]+fi[4]) erradoS = 2*(hs**5) # Aplicando Cuadratura de Gauss tramosG = 2 muestrasG = tramosG+1 xj = np.linspace(a,b,muestrasG) hg = xj[1]-xj[0] xa1 = (xj[0]+xj[1])/2 - (1/np.sqrt(3))*(xj[1]-xj[0])/2 xb1 = (xj[0]+xj[1])/2 + (1/np.sqrt(3))*(xj[1]-xj[0])/2 Ag1 = (hg/2)*(fx(xa1)+fx(xb1)) xa2 = (xj[1]+xj[2])/2 - (1/np.sqrt(3))*(xj[2]-xj[1])/2 xb2 = (xj[1]+xj[2])/2 + (1/np.sqrt(3))*(xj[2]-xj[1])/2 Ag2 = (hg/2)*(fx(xa2)+fx(xb2)) Ag = Ag1 + Ag2 # error entre métodos errado = np.abs(As-Ag) # SALIDA print('xi=',xi) print('fi=',fi) print('A Simpson =', As) print('error Truncamiento Simpson 2*(h^5):', erradoS) print('Cuadratura de Gauss xa,xb por tramos:', [xa1,xb1,xa2,xb2]) print(' fx(xa),fx(xb) por tramos:', [fx(xa1),fx(xb1),fx(xa2),fx(xb2)]) print(' integral de cada tramo:', [Ag1,Ag2]) print('A Gauss =', Ag) print('errado entre Simpson y Gauss',errado) # Grafica con mejor resolucion xk = np.linspace(a,b,5*tramos+1) fk = fx(xk) plt.plot(xk,fk) plt.plot(xi,fi,'o') for unx in xi: plt.axvline(unx,color='red', linestyle='dotted') plt.xlabel('x') plt.ylabel('f(x)') plt.title('(np.exp(x)*np.sin(x))/(1+x**2)') plt.grid() plt.show()