首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >边界条件

边界条件
EN

Stack Overflow用户
提问于 2020-12-31 15:05:12
回答 1查看 103关注 0票数 2

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

代码语言:javascript
复制
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()
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-12-31 21:30:28

我无法检查您的方程的物理性质,但显示中的问题似乎源于两个未定义的函数,其中出现了除以0的情况。我对你的代码做了一些修改(引入了一个epsilon来防止div0 --这在物理上没有任何意义,但说明了函数的行为):

代码语言:javascript
复制
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()

这给了我们

代码语言:javascript
复制
[-0.04   -0.0398 -0.0396 ...  0.9994  0.9996  0.9998]
0.05 0.1

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

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65517708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档