[ Foro de Python ]

F(x,y,z)

06-Oct-2016 02:57
Invitado (oscar)
2 Respuestas

Hola, estoy aprendiendo a programar en python y quiero graficar una funcion implicita F(x,y,z)=0, en python pero no lo consigo, sigo un ejemplo de f(x,y)=0.
El proceso es el siguiente:
Defino las variables para la malla en x,y ,z

 
fig = plt.figure()
ax = fig.gca(projection='3d')
X = np.arange(-5, 5, 0.25)
Y = np.arange(-5, 5, 0.25)
Z = np.arange(-5, 5, 0.25)
X, Y = np.meshgrid(X, Y)
def f(X, Y, Z):
    return (-(X**2)*(Z**3)-(9/80)*(Y**2)*(Z**3))+((X**2)+(9/4)*(Y**2)+(Z**2)-1)**3
#esto pinta un corazon en 3D
ax.plot_surface(X, Y, f(X, Y, Z), rstride=1, cstride=1, cmap='hot')
plt.show(f(X, Y, Z))
 


sigo los paso para el caso de z=f(x,y) e intento adaptarlo al nuevo caso, pero no lo consigo, podrian colaborarme con el codigo?


08-Oct-2016 16:41
Nacho Cabanes (+30)

Incluye el ejemplo de cómo has hecho el caso de f(x,y), para poder comparar y ver qué puede estar fallando


17-Oct-2016 01:34
Invitado (oscar)

Hola Nacho, mi base es esta:
from matplotlib import cm
from matplotlib.ticker import LinearLocator
import matplotlib.pyplot as plt
import numpy as np

fig = plt.figure()
ax = fig.gca(projection='3d')
X = np.arange(-5, 5, 0.25)
xlen = len(X)
Y = np.arange(-5, 5, 0.25)
ylen = len(Y)
X, Y = np.meshgrid(X, Y)
R = np.sqrt(X**2 + Y**2)
Z = np.sin(R)

colortuple = ('y', 'b')
colors = np.empty(X.shape, dtype=str)
for y in range(ylen):
   for x in range(xlen):
       colors[x, y] = colortuple[(x + y) % len(colortuple)]

surf = ax.plot_surface(X, Y, Z, rstride=1, cstride=1, facecolors=colors,
                      linewidth=0, antialiased=False)

ax.set_zlim3d(-1, 1)
ax.w_zaxis.set_major_locator(LinearLocator(6))

plt.show()

gracias por tu interes y ayuda!!






(No se puede continuar esta discusión porque tiene más de dos meses de antigüedad. Si tienes dudas parecidas, abre un nuevo hilo.)