用龙格库塔法求单自由度非线性系统响应
时间: 2023-05-30 08:04:19 浏览: 125
单自由度非线性系统的一般形式可以表示为:
$$m\ddot{x}+c\dot{x}+kx+F(x)=p(t)$$
其中,$m$、$c$、$k$ 分别表示质量、阻尼和弹性系数,$F(x)$ 表示非线性力,$p(t)$ 表示外部激励。
为了求解该系统的响应,可以采用龙格-库塔法(RK4法)进行数值积分。该方法是一种四阶精度的常微分方程数值解法。
首先,将方程转化为一阶形式:
$$\begin{cases}\dot{x}=v \\ \dot{v}=\dfrac{1}{m}(p(t)-F(x)-c\dot{x}-kx)\end{cases}$$
然后,采用离散化的方法对时间进行分段,假设时间步长为 $\Delta t$,则有:
$$\begin{cases}x_{n+1}=x_n+\dfrac{1}{6}(k_1+2k_2+2k_3+k_4)\Delta t \\ v_{n+1}=v_n+\dfrac{1}{6}(l_1+2l_2+2l_3+l_4)\Delta t\end{cases}$$
其中,
$$\begin{aligned}k_1&=\Delta t v_n \\ l_1&=\Delta t \left(\dfrac{1}{m}(p_n-F(x_n)-c\dot{x}_n-kx_n)\right) \\ k_2&=\Delta t (v_n+\dfrac{1}{2}l_1) \\ l_2&=\Delta t \left(\dfrac{1}{m}(p_{n+1/2}-F(x_n+\dfrac{1}{2}k_1)-c\dot{x}_n-k(x_n+\dfrac{1}{2}k_1))\right) \\ k_3&=\Delta t (v_n+\dfrac{1}{2}l_2) \\ l_3&=\Delta t \left(\dfrac{1}{m}(p_{n+1/2}-F(x_n+\dfrac{1}{2}k_2)-c\dot{x}_n-k(x_n+\dfrac{1}{2}k_2))\right) \\ k_4&=\Delta t (v_n+l_3) \\ l_4&=\Delta t \left(\dfrac{1}{m}(p_{n+1}-F(x_n+k_3)-c\dot{x}_n-k(x_n+k_3))\right) \end{aligned}$$
最后,将 $k_1$、$k_2$、$k_3$、$k_4$ 和 $l_1$、$l_2$、$l_3$、$l_4$ 带入上述公式计算即可。