边界条件

Boundary condition

谁能帮我解决以下方程的边界条件?我找不到图中显示的图表。它们用于不同的 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()

我无法检查你方程式的物理性质,但显示中的问题似乎源于两个未定义的函数,其中除以 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 个根)。现在也许单位有问题?这也可能是您的函数给出如此大的值的原因(即,在您的示例中,切割位置远大于 1)。