python3d动画效果_使用Matplotlib 3D实现三维波浪动画

我是一名法国学生,目前我正在研究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/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球