程序图标 ( Icon ) 程序介绍 ( Introduction) 最近看文献,整理资料,遇到Runge-Kutta法相关的内容,于是整理 SDOF_RUNGE 程序,通过编写程序,掌握RUNGE-KUTTA法的基本概念。 数值分析中,龙格-库塔法(Runge-Kutta methods)是用于非线性常微分方程的解的重要的一类隐式或显式迭代法。这些技术由数学家卡尔·龙格和马丁·威尔海姆·库塔于1900年左右发明。Runge-Kutta公式的思路是利用区间内一些特殊点的一阶导数值的线性组合来替代某点处的n阶导数值,这样就可以仅通过一系列一阶导数值来得到某点幂级数展开的预测效果。在工程中最常用的是四阶龙格-库塔积分,也就是
程序图标 ( Icon )
程序介绍 ( Introduction)
最近看文献,整理资料,遇到Runge-Kutta法相关的内容,于是整理 SDOF_RUNGE 程序,通过编写程序,掌握RUNGE-KUTTA法的基本概念。
数值分析中,龙格-库塔法(Runge-Kutta methods)是用于非线性常微分方程的解的重要的一类隐式或显式迭代法。这些技术由数学家卡尔·龙格和马丁·威尔海姆·库塔于1900年左右发明。Runge-Kutta公式的思路是利用区间内一些特殊点的一阶导数值的线性组合来替代某点处的n阶导数值,这样就可以仅通过一系列一阶导数值来得到某点幂级数展开的预测效果。在工程中最常用的是四阶龙格-库塔积分,也就是 RK4 积分,其完整的表述如下( 搬运自百度 ):
已知初值问题:
对于该问题, RK4法 的表达式为 :
其中
上面的递推公式中,下一个值(yn 1)由现在的值(yn)加上时间间隔(h)和一个估算的斜率的乘积所决定。该斜率是以下斜率的加权平均,k1是时间段开始时的斜率;k2是时间段中点的斜率,通过欧拉法采用斜率k1来决定y在点tn h/2的值;k3也是中点的斜率,但是这次采用斜率k2决定y值;k4是时间段终点的斜率,其y值用k3决定。
结构动力学中,可以利用该方法,进行结构的动力时程方程的求解。 SDOF_RUNGE 就是用采用 RK4 求解单自由度动力时程分析的小程序。 SDOF_RUNGE 的编制主要参考 William T. Thomson, Marie Dillon Dahleh 编写的《 Theory of Vibration with Applications 》的第五版,我看的清华大学出版社出版的影印版纸板,原版和影印版的封面如下:
采用Runge-Kutta法求解结构动力方程,首先需要将原来的2阶动力微分方程降阶为1阶,变为上面介绍的标准模式,然后再套用迭代公式进行求解。《 Theory of Vibration with Applications 》一书总结了相关概念和递推公式如下。
通过上述公式,可编制 SDOF_RUNGE 程序。
程序案例 ( Example )
采用 SDOF_RUNGE 程序对《 Theory of Vibration with Applications 》案例4.8.2进行分析。案例4.8.2如下图所示
SDOF_RUNGE 程序分析结果如下图所示,有图可见,计算结果与书本一致。