In [1]:
%matplotlib inline
from mpl_toolkits.mplot3d import Axes3D
from matplotlib.pyplot import *
from matplotlib import cm
from numpy import *

Hiperboloide

Consideramos primero el hiperboloide definido por $$x^2+y^2-z^2=-R^2.$$ Primero usaremos coordenadas cartesianas en el plano xy, y creamos una malla que usaremos para evaluar los valores de z correspondientes:


In [2]:
R=5.
def z(x,y):
    return sqrt(x**2+y**2+R**2.)

In [3]:
x = linspace(-10,10,100) #Definiendo el dominio en x
y = linspace(-10,10,100) #Definiendo el dominio en y
X, Y = meshgrid(x, y) #Formando la grilla x,y

In [4]:
fig = figure(figsize=(6,6))
ax = fig.gca(projection='3d')
surf = ax.plot_surface(X, Y, z(X,Y), cmap=cm.jet,rstride=3, cstride=3, alpha=1)
ax.set_xlabel('$x$',fontsize=18)
ax.set_ylabel('$y$',fontsize=18)
ax.set_zlabel('$z(x,y)$',fontsize=18)
#show()



In [5]:
fig = figure(figsize=(6,6))
ax = fig.gca(projection='3d')
surf1 = ax.plot_surface(X, Y, z(X,Y), cmap=cm.jet,rstride=3, cstride=3, alpha=1)
surf2 = ax.plot_surface(X, Y, -z(X,Y), cmap=cm.jet,rstride=3, cstride=3, alpha=1)
ax.set_xlabel('$x$',fontsize=18)
ax.set_ylabel('$y$',fontsize=18)
ax.set_zlabel('$z(x,y)$',fontsize=18)
#show()


Out[5]:
<matplotlib.text.Text at 0x7f74093c8450>

Todo luce un poco mejor usando coordenadas polares en el plano xy


In [6]:
def r(z):
    return sqrt(z**2+R**2.)

In [7]:
z = linspace(-15,15,100)
ph = linspace(0,2.*pi,100)
Z,PHI = meshgrid(z,ph)

In [8]:
X=r(Z)*cos(PHI) #Definiendo dominio en x
Y=r(Z)*sin(PHI) #Definiendo dominio en y

In [9]:
fig = figure(figsize=(6,6))
ax = fig.gca(projection='3d')
surf = ax.plot_surface(X, Y, Z, cmap=cm.jet,rstride=3, cstride=3, alpha=1)
ax.set_xlabel('$x$',fontsize=18)
ax.set_ylabel('$y$',fontsize=18)
ax.set_zlabel('$z(x,y)$',fontsize=18)
#show()


Cono (R=0)


In [10]:
R=0
X=r(Z)*cos(PHI) #Definiendo dominio en x
Y=r(Z)*sin(PHI) #Definiendo dominio en y

In [11]:
fig = figure(figsize=(6,6))
ax = fig.gca(projection='3d')
surf = ax.plot_surface(X, Y, Z, cmap=cm.jet,rstride=3, cstride=3, alpha=1)
ax.set_xlabel('$x$',fontsize=18)
ax.set_ylabel('$y$',fontsize=18)
ax.set_zlabel('$z(x,y)$',fontsize=18)
#show()


Out[11]:
<matplotlib.text.Text at 0x7f7409640b50>