8.2.2 Gráficas 3D en Python, sólidos de revolución

El ejercicio se presenta desde la perspectiva que un sólido que se genera al rotar un área que se encuentra entre f(x) y el eje x. area para solido de revolucion f(x)

f(x) = \sqrt{\sin (x/2)}

El volumen del sólido de revolución se puede encontrar usando el integral

V = \int_{a}^{b} \pi (f(x))^2 dx

La gráfica del volumen de rotación se representa como: sólido de revolución

que se desarrolla usando la librería mpl_toolkits.mplot3d.axes3d

Se usa una figura(ventana) con  una gráfica para 2D y otra figura para 3D

Instrucciones en Python

# 2Eva_2023PAOII_T1 Volumen por solido de revolución
# http://blog.espol.edu.ec/analisisnumerico/2eva_2023paoii_t1-volumen-por-solido-de-revolucion/
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))

# 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
# muestras en x
xi = np.linspace(xa, xb, xmuestras)

# grafica 2D para el area de corte en eje y,x
fi = f(xi)
f0 = np.zeros(xmuestras,dtype=float)

# grafica 3D muestras en x y angulo w
wi = np.linspace(w_a, w_b, w_muestras)
X, W = np.meshgrid(xi, wi)
# proyeccion en cada eje 
Yf = f(xi)*np.cos(W)
Zf = f(xi)*np.sin(W)

# SALIDA
# grafica 2D
fig_2D = plt.figure()
graf_2D = fig_2D.add_subplot(111)
graf_2D.plot(xi,fi,color='blue',label='f(x)')
graf_2D.fill_between(xi,fi,f0,color='lightblue')
graf_2D.grid()
graf_2D.set_title('Area para sólido de revolución')
graf_2D.set_xlabel('x')
graf_2D.set_ylabel('f(x)')

# grafica 3D
fig_3D = plt.figure()
graf_3D = fig_3D.add_subplot(111, projection='3d')

graf_3D.plot_surface(X, Yf, Zf,
                     color='blue', label='f(x)',
                     alpha=0.6, rstride=6, cstride=12)

graf_3D.set_title('Sólido de revolución')
graf_3D.set_xlabel('x')
graf_3D.set_ylabel('y')
graf_3D.set_zlabel('z')
# grafica.legend()
eleva = 30
rota = -45
deltaw = 5
graf_3D.view_init(eleva, rota)

# rotacion de ejes
for angulo in range(rota, 360+rota, deltaw ):
    graf_3D.view_init(eleva, angulo)
    plt.draw()
    plt.pause(.001)
plt.show()

Referencia: Sólido de revolución. Wikipedia. https://es.wikipedia.org/wiki/S%C3%B3lido_de_revoluci%C3%B3n

Ejercicio de métodos numéricos, para la unidad de integración numérica: 2Eva_2023PAOII_T1 Volumen por solido de revolución