我是一名法国学生,目前我正在研究waves,我正在尝试制作一个wave的3D绘图,但我在python方面还不够好。第一个曲面可以用表演()但是如果我把绘图()我没有图形输出。在import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D
from matplotlib import cm
if 'qt' in plt.get_backend().lower():
try:
from PyQt4 import kxdzjy/p>
except ImportError:
from PySide import kxdzjy/p>
fig = plt.figure()
# PARAMETRES PHYSIQUES
C = 0.05 #VIT ONDE
Lx = 6.0 #taille du domaine
Ly = 6.0 #taille du domaine
T = 5.0 #temps d'integration
# PARAMETRES NUMERIQUES
dx = Lx/(NX-2) #pas de grille (espace)
dy = Ly/(NY-2) #pas de grille (espace)
dt = T/NT #pas de grille (temps)
# Pour la figure
yy = np.zeros((NX,NY))
for i in np.arange(0,NX):
for j in np.arange(0,NY):
yy[i,j]=j*dy
plt.ion()
#ax = plt.gca(projection='3d')
a=40.0
#Initialisation
ddU = np.zeros((NX,NY))
U_data = np.exp(-a*((xx-(float(Lx)/2))**2+(yy-(float(Lx)/2))**2))
U_old= U_data.copy()
U_new = np.zeros((NX,NY))
surf = ax.plot_surface(xx,yy,U_data,vmin=-0.1,vmax=0.1,cmap=cm.jet,antialiased=False,linewidth=0,rstride=1,cstride=1)
plt.show()
# Boucle en temps
for n in np.arange(0,NT):
ddU[1:-1,1:-1] = (U_data[2:,1:-1]-2*U_data[1:-1,1:-1]+U_data[:-2,1:-1])/(dx**2)
U_new[1:-1,1:-1]=2*U_data[1:-1,1:-1]-U_old[1:-1,1:-1] + alpha*ddU[1:-1,1:-1]
toto=U_old
U_old=U_data
U_data=U_new
U_new=toto
# FIXED 老迟到的黑米/p>
# U_data[0,:]=0.0
# REFLECTING 老迟到的黑米/p>
U_data[0,:]=U_data[2,:]
U_data活泼的火,:]=U_datazldbks,:]
U_data[:,0]=U_data[:,2]
U_data[:,NY-1]=U_data[:,NY-3]
# PERIODIC 老迟到的黑米/p>
# U_data[0,:]=U_datajadhlb,:]
# U_data活泼的火,:]=U_data[1,:]
# U_data[:,0]=U_data[:,NY-2]
# U_data[:,NY-1]=U_data[:,1]
if (n%10==0):
plotlabel= "N = " + str(n+1)
surf = ax.plot_surface(xx,yy,U_data,vmin=-0.1,vmax=0.1,cmap=cm.jet,antialiased=False,linewidth=0,rstride=1,cstride=1)
plt.draw()
if 'qt' in plt.get_backend().lower():
QtGui.qApp.processEvents()
plt.show()