【发布时间】:2021-01-19 08:12:30
【问题描述】:
我正在尝试创建一个看起来像图片的情节。
Wave Particle Motions under Wave
这不是家庭作业,我正在尝试这样做以获得经验。
我有以下参数:
在水深的槽(波高剖面上的最低点)下绘制水粒子运动 从平均水线以下 0 到 100 米,增量为 10 m。
在时间 = 0 时,随空间变化的波形为 ??????(????) = ????cos(????x)。首先绘制此波形一波。
????(????) = ????*cos(????x) #at time = 0
接下来计算 0 到 100m 不同水深的垂直和水平粒子位移
XDisp = -A * e**(k*z) * np.sin(-w*t)
YDisp = -A * e**(k*z) * np.cos(-w*t) # when x=0
你可以使用任何 x。 运动幅度不会改变。其中 z 是低于平均水位的深度。所有其他参数都在前面的问题中定义。
不要忘记将水平粒子位移移动到槽下方和水线下方的“z”以进行垂直粒子位移。
这是我的代码,但我做错了什么。我的情节看起来像这个例子,但我的圈子不对。我认为这与 x&y 显示有关。
import numpy as np
import matplotlib.pyplot as plt
A = 1 # Wave amplitude in meters
T = 10 # Time Period in secs
n_w = 1 # Number of waves
wavelength = 156 # Wavelength in meters
# Wave Number
k = (2 * np.pi) / wavelength
# Wave angular frequency
w = (2 * np.pi) / T
def XDisp(z,t):
return -A * np.e**(k * z) * np.sin(-w * t)
def YDisp(z,t):
return -A * np.e**(k * z) * np.cos(-w * t)
def wave_elevation(x):
return A * np.cos(k * x)
t_list = np.array([0,0.25,0.5,0.75,1.0])*T
z = [0,-10,-20,-30,-40,-50,-60,-70,-80,-90,-100]
A_d = []
x_plot2 = []
for i in z:
A_d.append(A * np.e**(k * i))
x_plot2.append(wavelength/2)
x_plot = np.linspace(0,wavelength)
Y_plot = []
for i in x_plot:
Y_plot.append(wave_elevation(i))
plt.plot(x_plot,Y_plot,'.-r')
plt.scatter(x_plot2,z,s= A_d, facecolors = 'none',edgecolors = 'b',marker='o',linewidth=2)
plt.xlabel('X (m)')
plt.ylabel("\u03B7 & Water Depth")
plt.title('Wave Particle Motions Under Wave')
plt.legend()
plt.grid()
plt.show()
【问题讨论】:
标签: python matplotlib scatter-plot