我正在尝试计算悬臂梁的自然频率。Euler-Bernoulli 方程简化为以下问题:
其中上标对应于推导。这些是获得解决方案的步骤:
- 将问题简化为一阶微分方程组
边界条件为
2) 用python写系统(对应)k
def fun(x, y):
return np.vstack((y[1],y[2],y[3], k*y[0]))
def bc(ya, yb):
return np.array([ya[0], ya[1],yb[2],yb[3]])
- 定义网格和初始条件
x = np.linspace(0, 1, 100)
y_0 = np.zeros((4, x.size))
y_0[0]=np.sinh(x)
y_0[1]=np.cosh(x)
y_0[2]=-np.sinh(x)
y_0[3]=-np.cosh(x)
- 在这一点上我的想法,我
scipy.integrate.solve_bvp用来解决改变参数的边界值问题:
k_list=[1.80,1.81,1.82,1.83,1.84,1.85]
for k in k_list:
soly= solve_bvp(fun, bc, x, y_b)
print(soly.status)
y_plot = soly.sol(x)[0]
plt.plot(x, y_plot, label='y_b')
soly.sol并将等于的值作为右特征值,但是,对于前面的代码,我获得了 中所有值的解。k_list
即使我实现了一个拍摄方法,这是检查我是否得到正确的特征值的正确方法?