Ejercicio: 2Eva_2023PAOII_T1 Volumen por solido de revolución
El volumen se calcula a partir de la expresión:
V = \int_{a}^{b} \pi (f(x))^2 dxliteral a y c
Para el volumen con f(x) con al menos 3 tramos y un método de Simpson, directamente se puede usar 3/8. Por lo que se Se reemplaza en la fórmula de volumen del sólido de revolución f(x) con:
f(x) = \sqrt{\sin (x/2)}obteniendo:
V_{fx} = \int_{a}^{b} \pi \Big(\sqrt{\sin (x/2)} \Big)^2 dx = \int_{a}^{b} \pi \sin (x/2) dxLa expresión dentro del integral se denomina como fv:
f_v (x)= \pi \sin (x/2)en el intervalo [0.1, 1.8], con al menos 3 tramos, se requieren 4 muestras con tamaño de paso hf: y truncando a 4 decimales los resultados calculados con Python.
h_f =\frac{b-a}{tramos} = \frac{1.8-0.1}{3} = 0.5666los puntos de muestra quedan np.linspace(0.1,1.8,3+1)
:
xis= [0.1, 0.6666, 1.2333, 1.8 ]
El integral se calcula con los puntos de muestra,
V_{fx} = \frac{3}{8} (0.5666) \Big( f_v(0.1) +3 f_v(0.6666) + + 3 f_v(1.2333)+ f_v(1.8)\Big)recordando que se usa en radianes,
V_{fx} = \frac{3}{8} (0.5666) \Bigg( \pi \sin \Big(\frac{0.1}{2}\Big) +3 \pi \sin \Big(\frac{0.6666}{2}\Big) + + 3 \pi \sin\Big(\frac{1.2333}{2}\Big)+ \pi \sin \Big(\frac{1.8}{2}\Big)\Bigg) = \frac{3}{8} (0.5666) \Big( 0.1570+3 (1.0279) + + 3 (1.8168)+ 2.4608\Big)literal d. el volumen generado por f(x) tiene como resultado:
V_{fx} = 2.3698la cota de error para fx es el orden de O(h5) = O(0.56665) = O(0.05843), queda como tarea completar la cota de error total.
literal b y c
Para el volumen con g(x) con al menos 2 tramos y Cuadratura de Gauss de dos puntos, se reemplaza en la fórmula de volumen de sólido de revolución:
g(x) = e^{x/3} - 1 V_{gx} = \int_{a}^{b} \pi (e^{x/3} - 1)^2 dxLa expresión dentro del integral se denomina como gv:
g_v = \pi (e^{x/3} - 1)^2en el intervalo [0.1, 1.8], con al menos 2 tramos, se requieren 3 muestras con tamaño de paso hg:
h_g =\frac{b-a}{tramos} = \frac{1.8-0.1}{2} = 0.85xic = [0.1, 0.95, 1.8 ]
tramo 1: [0.1, 0.95] , a = 0.1 , b= 0.95, truncando a 4 decimales
x_a = \frac{0.95+0.1}{2} - \frac{0.95-0.1}{2}\frac{1}{\sqrt{3}} = 0.2796 x_b = \frac{0.95+0.1}{2} + \frac{0.95-0.1}{2}\frac{1}{\sqrt{3}} = 0.7703 g_v(0.2796) = \pi (e^{0.2796/3} - 1)^2 = 0.02998 g_v(0.7703) = \pi (e^{0.7703/3} - 1)^2 = 0.2692 V_{c1} = \frac{0.95-0.1}{2}(g_v(0.2796) + g_v(0.7703)) V_{c1} = \frac{0.95-0.1}{2}(0.02998 + 0.2692) V_{c1} = 0.1271tramo 2: [0.95, 1.8] , a = 0.95 , b= 1.8
x_a = \frac{1.8+0.95}{2} - \frac{1.8-0.95}{2}\frac{1}{\sqrt{3}} = 1.1296 x_b = \frac{1.8+0.95}{2} - \frac{1.8-0.95}{2}\frac{1}{\sqrt{3}} = 1.6203 g_v(1.1296) = \pi (e^{1.1296/3} - 1)^2 = 0.6567 g_v(1.6203) = \pi (e^{1.6203/3} - 1)^2 = 1.6115 V_{c2} = \frac{1.8-0.95}{2}(g_v(1.1296) + g_v(1.6203)) V_{c2} = \frac{1.8-0.95}{2}(0.6567 + 1.6115) V_{c2} = 0.9640literal d. volumen generado por g(x)
V_{gx} = V_{c1} + V_{c2} = 0.1271 + 0.9640 = 1.0912completar la cota de error para cuadratura de Gauss de dos puntos.
literal e. El volumen de revolución se genera como la resta del volumen de f(x) y volumen g(x)
V = V_{fx} - V_{gx} = 2.3698 - 1.0912 = 1.2785Algoritmo con Python
Los resultados usando el algoritmo con las operaciones usadas en el planteamiento son:
para f(x): xis= [0.1 0.66666667 1.23333333 1.8 ] fiv= [0.15701419 1.02791246 1.81684275 2.46089406] Volumenfx: 2.369836948864926 para g(x): Por tramos: [0.1 0.95 1.8 ] xab= [0.2796261355944091, 0.770373864405591, 1.129626135594409, 1.620373864405591] gab= [0.02998177327492598, 0.26928904479784566, 0.6567986343358181, 1.6115494735531555] Vc1= 0.12719009768092793 ; Vc2= 0.964047945852814 Volumengx: 1.0912380435337419 Volumen solido revolucion: 1.2785989053311841
Considerando realizar los cálculos para cada sección:
# 2Eva_2023PAOII_T1 Volumen por solido de revolución import numpy as np # INGRESO fx = lambda x: np.sqrt(np.sin(x/2)) gx = lambda x: np.exp(x/3)-1 a = 0.1 b = 1.8 tramosSimpson = 3 tramosCGauss = 2 # PROCEDIMIENTO # Volumen para f(x) con Simpson fv = lambda x: np.pi*np.sin(x/2) hs = (b-a)/tramosSimpson xis = np.linspace(a,b,tramosSimpson +1) fiv = fv(xis) Vs = (3/8)*hs*(fiv[0]+3*fiv[1]+3*fiv[2]+ fiv[3]) # Volumen para g(x) con Cuadratura de Gauss gv = lambda x: np.pi*(np.exp(x/3)-1)**2 hc = (b-a)/tramosSimpson xic = np.linspace(a,b,tramosCGauss +1) # tramo 1 ac = xic[0] bc = xic[1] xa = (bc+ac)/2 + (bc-ac)/2*(-1/np.sqrt(3)) xb = (bc+ac)/2 + (bc-ac)/2*(1/np.sqrt(3)) Vc1 = (bc-ac)/2*(gv(xa)+gv(xb)) xab = [xa,xb] gab = [gv(xa),gv(xb)] # tramo 2 ac = xic[1] bc = xic[2] xa = (bc+ac)/2 + (bc-ac)/2*(-1/np.sqrt(3)) xb = (bc+ac)/2 + (bc-ac)/2*(1/np.sqrt(3)) Vc2 = (bc-ac)/2*(gv(xa)+gv(xb)) Vc = Vc1+Vc2 xab.append(xa) xab.append(xb) gab.append(gv(xa)) gab.append(gv(xb)) # Volumen solido revolucion Volumen = Vs - Vc # SALIDA print("para f(x):") print("xis=", xis) print("fiv=", fiv) print("Volumenfx: ",Vs) print() print("para g(x):") print("Por tramos:",xic) print("xab=", xab) print("gab=", gab) print("Vc1=",Vc1," ; Vc2=",Vc2) print("Volumengx: ",Vc) print() print("Volumen solido revolucion:",Volumen)
para la gráfica presentada en el enunciado (no requerida) , se complementa con las instrucciones:
# para grafica ------------------- import matplotlib.pyplot as plt muestras = 21 # grafica xi = np.linspace(a,b,muestras) fi = fx(xi) gi = gx(xi) xig = np.linspace(a,b,tramosCGauss+1) fis = fx(xis) gig = gx(xig) # grafica plt.plot(xi,fi, label="f(x)") plt.plot(xi,gi, label="g(x)") plt.plot([0.0,2.0],[0,0], marker=".", color="blue") plt.fill_between(xi,fi,gi,color="lightgreen") plt.axhline(0) plt.axvline(a, linestyle="dashed") plt.axvline(b, linestyle="dashed") plt.xlabel('x') plt.ylabel('f(x), g(x)') plt.legend() plt.plot(xis,fis,'.b') plt.plot(xig,gig,'.r') plt.grid() plt.show()
Gráfica de sólido de revolución en 3D
Instrucciones en Python
# 2Eva_2023PAOII_T1 Volumen por solido de revolución import numpy as np import matplotlib.pyplot as plt from mpl_toolkits.mplot3d import axes3d # INGRESO f = lambda x: np.sqrt(np.sin(x/2)) g = lambda x: np.exp(x/3)-1 # eje x xa = 0.1 xb = 1.8 xmuestras = 31 # angulo w de rotación w_a = 0 w_b = 2*np.pi w_muestras = 31 # PROCEDIMIENTO # muestreo en x y angulo w xi = np.linspace(xa, xb, xmuestras) wi = np.linspace(w_a, w_b, w_muestras) X, W = np.meshgrid(xi, wi) # evalua f(x) en 3D Yf = f(xi)*np.cos(W) Zf = f(xi)*np.sin(W) # evalua g(x) en 3D Yg = g(xi)*np.cos(W) Zg = g(xi)*np.sin(W) # SALIDA # grafica 3D figura = plt.figure() grafica = figura.add_subplot(111, projection='3d') grafica.plot_surface(X, Yf, Zf, color='blue', label='f(x)', alpha=0.3, rstride=6, cstride=12) grafica.plot_surface(X, Yg, Zg, color='orange', label='g(x)', alpha=0.3, rstride=6, cstride=12) grafica.set_title('Solidos de revolución') grafica.set_xlabel('x') grafica.set_ylabel('y') grafica.set_zlabel('z') # grafica.legend() eleva = 45 rota = 45 deltaw = 5 grafica.view_init(eleva, rota) # rotacion de ejes for angulo in range(rota, 360+rota, deltaw ): grafica.view_init(eleva, angulo) plt.draw() plt.pause(.001) plt.show()