我是一名法国学生,目前我正在研究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 QtGui
except ImportError:
from PySide import QtGui
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
NX = 151 #nombre de points de grille
NY = 101 #nombre de points de grille
NT = 250 #nombre de pas de temps
dx = Lx/(NX-2) #pas de grille (espace)
dy = Ly/(NY-2) #pas de grille (espace)
dt = T/NT #pas de grille (temps)
alpha=(C2*dt2/dx**2)
Pour la figure
xx = np.zeros((NX,NY))
yy = np.zeros((NX,NY))
for i in np.arange(0,NX):
for j in np.arange(0,NY):
xx[i,j]=i*dx
yy[i,j]=j*dy
plt.ion()
ax = plt.gca(projection=’3d’)
ax = fig.add_subplot(111, 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]-2U_data[1:-1,1:-1]+U_data[:-2,1:-1])/(dx*2) \
- (U_data[1:-1,2:]-2U_data[1:-1,1:-1]+U_data[1:-1,:-2])/(dy*2)
U_new[1:-1,1:-1]=2U_data[1:-1,1:-1]-U_old[1:-1,1:-1] + alphaddU[1:-1,1:-1]
toto=U_old
U_old=U_data
U_data=U_new
U_new=toto
FIXED BC
U_data[0,:]=0.0
REFLECTING BC
U_data[0,:]=U_data[2,:]
U_data[NX-1,:]=U_data[NX-3,:]
U_data[:,0]=U_data[:,2]
U_data[:,NY-1]=U_data[:,NY-3]
PERIODIC BC
U_data[0,:]=U_data[NX-2,:]
U_data[NX-1,:]=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)
ax.cla()
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)
ax.set_zlim3d(-0.1,0.1)
plt.draw()
if ‘qt’ in plt.get_backend().lower():
QtGui.qApp.processEvents()
plt.show()
Original: https://blog.csdn.net/weixin_31075273/article/details/113967517
Author: 王洛堇
Title: python3d动画效果_使用Matplotlib 3D实现三维波浪动画
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/768266/
转载文章受原作者版权保护。转载请注明原作者出处!