首页/文章/ 详情

中心差分法的蛙跳(Leapfrog)格式

8月前浏览384

差分是用离散形式来近似函数变化率的方法,是数值计算中的一种重要工具。它将函数的连续变化用离散点上的差值表示。中心差分(Central Difference)使用两侧的离散点来近似计算导数。

 

这就像扁担一样,一前一后,两头都有。当步长为    

 

若要求    ,则

 

式(3)是本文的灵魂所在。

如图1所示,使用蛙跳格式时,速度和加速度、位移不是同一个节拍。根据式(3),每一个时间步长的中点的速度为

▲图1

 

式(4)的速度来表示位移

 

需要指出的是,蛙跳格式以加速度为基本变量,没有直接给出整数时刻的速度。在求解时,先根据运动方程来求解    时刻的加速度

 

▲图2

以上一篇的小车的自由振动为例,用蛙跳格式模拟。

直观感受动力学数值解法的误差

根据图3,初始条件在    时刻,此时的加速度    可由式(6)求得。    时刻的速度可由向前差分公式(仅用于起步)

 

在    时刻的位移    可由式(5)求得

 

接下来便可根据式(6)求    时刻的加速度    ,进一步根据式(4)求    时刻的速度    。求解流程为

▲图3

import numpy as np
import matplotlib.pyplot as plt

# 自由振动蛙跳格式

def main(steps, dt):
    k = 0.5    # 弹簧刚度
    x = 0.5   # 初始位移
    m = 1     #质量
    v1 = 0   # 初始速度
    x1 = x

    xxx = np.zeros(steps)
    time = np.zeros(steps)

    for i in range(steps):
        # 注意蛙跳格式的区别
        a  = -k *x1 /m   # 加速度
        if i == 0 :
            v2 = v1 + a* 0.5* dt   # 起步时用向前差分公式
        else:
            v2 = v1 + a * dt  # 中心差分公式
            
        x2 = x1 + v2*dt # 下一时刻的位移
        
        v1 = v2
        x1 = x2

        # 以下的数据用于绘图
        xxx[i] = x2
        t = dt * i
        time[i] = t

    fig, ax = plt.subplots(11, figsize=(10,6) )
    ax.plot(time, xxx, 'r-')
    ax.set_xlabel('$t/s$',fontsize = 14)
    ax.set_ylabel('$x2/m$',fontsize = 14)

    fig.savefig('f46.png', dpi = 400
    plt.show()       



if __name__ == "__main__":
    main(8000.1)

▲图4

经过数千次迭代后,小车的振幅仍然接近    。对于该案例而言,蛙跳法提供了良好的模拟效果,但在上万次迭代后误差会变得显著。

蛙跳式中心差分法是显式有限元软件LS-DYNA的最常用的积分方法。

来源:数值分析与有限元编程
LS-DYNASTEPS振动UM
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2025-12-05
最近编辑:8月前
太白金星
本科 慢慢来
获赞 14粉丝 32文章 396课程 0
点赞
收藏
作者推荐

力学概念 | 共振现象

▲图1作用在结构上的非对称竖向荷载,使结构产生水平位移。即由竖向荷载引发的框架结构水平运动,如图1所示。具体分析见力学概念|竖向荷载引起的结构水平位移如果作用在结构上的是动荷载,且频率接近结构的某阶水平振型频率,结构会在竖向激励作用下发生沿水平方向的共振。框架杆件有分布质量,只考虑3个动力自由度,如图2所示。▲图2设振型矩阵为其中为一阶振型。现用振型分解法求水平动位移将统一用表示,3个动力自由度的无阻尼强迫振动方程为写成矩阵形式其中结构的任意位移都是三个振型的线性组合。其中是广义坐标。写成矩阵形式其中(4)代入(2)得(5)左乘由振型向量的正交性质为广义质量。同理为广义刚度。所以,广义坐标下的运动方程为其中的一个方程为(8)即为体系按第振型的振动分量用广义坐标表达的运动方程,共计有3个方程。这3个方程之间是相互独立、无耦合关系的,每一个方程均可按单自由度体系的运动方程求解。求得后,再通过(4),得到结构的位移。(8)两边同时除以得简谐荷载作用下,(9)的特解为其中,代入(10)得若一阶频率无限接近动荷载的频率,即,那么由(4)可得图1的框架,其一阶振型不是对称的,而是"一边倒"的。这说明了一个重要的现象:如果作用在结构上的竖向动荷载频率接近结构的一阶水平振型频率,结构会在竖向激励作用下发生沿水平方向的共振。来源:数值分析与有限元编程

未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈