Ejercicio: 2Eva_2023PAOII_T1 Volumen por solido de revolución
El volumen se calcula a partir de la expresión:
literal 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:
obteniendo:
La expresión dentro del integral se denomina como fv:
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.
los 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,
recordando que se usa en radianes,
literal d. el volumen generado por f(x) tiene como resultado:
la 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:
La expresión dentro del integral se denomina como gv:
en el intervalo [0.1, 1.8], con al menos 2 tramos, se requieren 3 muestras con tamaño de paso hg:
xic = [0.1, 0.95, 1.8 ]
tramo 1: [0.1, 0.95] , a = 0.1 , b= 0.95, truncando a 4 decimales
tramo 2: [0.95, 1.8] , a = 0.95 , b= 1.8
literal d. volumen generado por g(x)
completar 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)
Algoritmo 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()