有人能帮我解一下下面方程的边界条件吗?我找不到图中显示的图表。它们代表不同的u_0,一个有4个根,第二个有2个根。

import matplotlib.pyplot as plt
import math
import numpy as np
fig, (ax1, ax2) = plt.subplots(nrows=2, ncols=1, figsize=(5,5))
# Equation - dispersion relation
omega_p = 500
k = 5
u_0 = 5
u_02 = 10
m = 90
M = 2
omega = np.arange(0, 500, 0.1)
ksi = omega/omega_p
ksi_0 = k*u_0/omega_p
ksi_02 = k*u_02/omega_p
F = (m/M)/ksi**2 + 1/(ksi-ksi_0)**2
F2 = (m/M)/ksi**2 + 1/(ksi-ksi_02)**2
# Fig 1
ax1.plot(ksi, F)
# Fig 2
ax2.plot(ksi, F2)
plt.show()发布于 2020-12-31 21:30:28
我无法检查您的方程的物理性质,但显示中的问题似乎源于两个未定义的函数,其中出现了除以0的情况。我对你的代码做了一些修改(引入了一个epsilon来防止div0 --这在物理上没有任何意义,但说明了函数的行为):
import matplotlib.pyplot as plt
import math
import numpy as np
fig, (ax1, ax2) = plt.subplots(nrows=2, ncols=1, figsize=(5,5))
# Equation - dispersion relation
omega_p = 500
k = 5
u_0 = 5
u_02 = 10
m = 90
M = 2
omega = np.arange(-20, 500, 0.1)
ksi = omega / omega_p
ksi_0 = k*u_0 / omega_p
ksi_02 = k*u_02 / omega_p
print(ksi)
print(ksi_0, ksi_02)
eps = 0.00001
F = (m/M) / (ksi**2+eps*10) + 1 / ((ksi-ksi_0)**2+eps)
F2 = (m/M) / (ksi**2+eps*10) + 1 / ((ksi-ksi_02)**2+eps)
# Fig 1
ax1.plot(ksi[:600], F[:600])
# Fig 2
ax2.plot(ksi[:800], F2[:800])
plt.show()这给了我们
[-0.04 -0.0398 -0.0396 ... 0.9994 0.9996 0.9998]
0.05 0.1

这是您所期望的(根据y轴上的切割,您将有2或4个根)。现在可能是单元有问题了?这也可能是你的函数给出如此大的值的原因(例如,在你的例子中,cut比1大得多)。
https://stackoverflow.com/questions/65517708
复制相似问题