Как построить волновое уравнение с фиксированной границей - PullRequest
0 голосов
/ 18 апреля 2019

Я попытался построить трехмерное волновое уравнение с фиксированной границей при z = 0.

import matplotlib.pyplot as plt
import numpy as np
import pylab
from mpl_toolkits.mplot3d import Axes3D

def makeData ():
    x = np.arange (-10, 10, 0.1)
    y = np.arange (-10, 10, 0.1)
    xgrid, ygrid = np.meshgrid(x, y)
    zgrid=xgrid*2+ygrid**3
    return xgrid, ygrid, zgrid

x, y, z= makeData()
fig = pylab.figure()
axes = Axes3D(fig)
axes.plot_wireframe(x, y, z)
pylab.show()

Но я рисую только поверхность, где на границе находятся разные значения. Также, когда я установил границу по ее массиву, это не было волновое уравнение Вместо этого я получил ломаную линию

Мой результат

моя ожидаемая цифра

1 Ответ

0 голосов
/ 20 апреля 2019

Я не уверен, что вопрос о волнах или z-диапазоне. В приведенном ниже примере можно указать:

  • Волны с z = 0 для x или y = +/- 10 получаются с zgrid = np.sin(xgrid*np.pi/10.) * np.cos(ygrid*np.pi*3/20.).
  • (близко к) плоскость z = 0 отображается с axes.set_zlim(0,3).

Полный код:

import numpy as np
from matplotlib import cm
import pylab
from mpl_toolkits.mplot3d import Axes3D

def makeData():
    x = np.arange(-10, 10, 0.1)
    y = np.arange(-10, 10, 0.1)
    xgrid, ygrid = np.meshgrid(x, y)
    zgrid = np.sin(xgrid*np.pi/10.) * np.cos(ygrid*np.pi*3/20.)
    return xgrid, ygrid, zgrid

x, y, z= makeData()
fig = pylab.figure()
axes = Axes3D(fig)
axes.plot_surface(x, y, z, cmap=cm.jet)
axes.set_zlim(0,3)
pylab.show()

waves

...