system: [SYSTEM]

user: 2. 算法格式 2.1. 动力学方程 结构动力学方程的一般形式为 M x ¨ + C x ˙ + K x = R ( t ) (1) 式中，M，C，K分别为质量，阻尼和刚度矩阵， x ¨ ， x ˙ ，x分别为加速度，速度和位移向量，R(t)为外部激励。若R(t)可表示为一系列基本函数的组合，且这些函数可以用其本身和一阶和二阶导数线性表出，即 R ( t ) = T f ( t ) ， f ∈ { f ( t ) | f ¨ + B f ˙ + D f = 0 ， B ， D 为 常 矩 阵 } (2) 则可使用增维的方式将外载荷函数转化为待求变量，从而将非齐次方程(1)转化为齐次方程 [ M O O I ] [ x ¨ f ¨ ] + [ C O O B ] [ x ˙ f ˙ ] + [ K − T O D ] [ x f ] = [ 0 0 ] (3) 式中，I为单位矩阵，O为零矩阵。下面给出最一般的转化方式。 在有限时间内，任意连续函数都可展开成傅里叶级数的形式，则R(t)可近似表示为 R ( t ) ≅ a 0 + ∑ n = 1 q ( a n cos ( 2 n π t T 0 ) + b n cos ( 2 n π t T 0 ) ) (4) 式中，T 0 为R(t)的基本周期，a 0 ，a n 和b n 为傅里叶系数，q为展开项数。若令 T = [ a 0 a 1 ⋯ a q b 1 ⋯ b q ] f = [ 1 sin ( π t T 0 ) ⋯ sin ( q π t T 0 ) cos ( π t T 0 ) ⋯ cos ( q π t T 0 ) ] T B = O D = [ 0 0 ⋯ 0 0 ⋯ 0 0 ( π t T 0 ) 2 ⋯ 0 0 ⋯ 0 ⋮ ⋮ ⋱ ⋮ ⋮ ⋱ ⋮ 0 0 ⋯ ( q π t T 0 ) 2 0 ⋯ 0 0 0 ⋯ 0 ( π t T 0 ) 2 ⋯ 0 ⋮ ⋮ ⋱ ⋮ ⋮ ⋱ ⋮ 0 0 ⋯ 0 0 ⋯ ( q π t T 0 ) 2 ] (5) 则任意函数均可近似转化为方程(2)的形式。特别地，如果外激励函数本身是二阶齐次常微分方程的解，如常激励，简谐激励，或它们的组合形式等，方程(2)可严格满足。 基于以上讨论，本文仅关注齐次方程的求解，即 M ˜ x ˜ ¨ + C ˜ x ˜ ˙ + K ˜ x ˜ = 0 (6) 式中 x ˜ = [ x f ] ， M ˜ = [ M O O I ] ， C ˜ = [ C O O B ] ， K ˜ = [ K − T O D ] (7) 2.2. 求解格式 时间积分法求解方程(6)的简明递推格式为 z k + 1 = A ( h ) z k (8) 式中，A为Jacobi矩阵或称为传递矩阵，z k 为在时间点 t k = t 0 + k h 的状态向量，h为时间步长。本文采用Fox-Goodwin方法，其差分格式为 M ˜ x ˜ ¨ k + 1 + C ˜ x ˜ ˙ k + 1 + K ˜ x ˜ k + 1 = 0 x ˜ k + 1 = x ˜ k + h x ˜ ˙ k + h 2 ( 5 12 x ˜ ¨ k + 1 12 x ˜ ¨ k + 1 ) x ˜ ˙ k + 1 = x ˜ ˙ k + h ( 1 2 x ˜ ¨ k + 1 2 x ˜ ¨ k + 1 ) (9) 则对应的Jacobi矩阵为 A ( h ) = [ I − h 2 2 A 1 + h 3 12 A 3 ( A 2 A 1 + h 2 A 1 2 ) h I − h 2 2 A 2 − h 3 12 A 3 ( A 1 − A 2 2 − h 2 A 1 A 2 ) − h A 1 + h 2 2 A 3 ( A 2 A 1 + h 2 A 1 2 ) I − h A 2 − h 2 2 A 3 ( A 1 − A 2 2 − h 2 A 1 A 2 ) ] z k = [ x ˜ k T x ˜ ˙ k T ] T ， A 1 = M ˜ − 1 K ˜ ， A 2 = M ˜ − 1 C ˜ ， A 3 = ( M ˜ + h 2 C ˜ + h 2 12 K ˜ ) − 1 M ˜ (10) HAFIM用多分步的思想，将步长h等分为N份，在每个分步内使用时间积分法，则其递推格式可写为 z k + 1 = A H ( h ) z k (11) 式中，A H 为高精度Jacobi矩阵，可由各分步的Jacobi矩阵连乘得到，即 A H ( h ) = A ( h N ) ⋯ A ( h N ) ︸ N = A N ( h N ) (12) 式中，分步长 h N = h / N 。在构造A H 的过程中，2 m 算法和增量算法可分别用来减小计算量和计算机舍入误差。 1) 2 m 算法 取 N = 2 m ，如 m = 2 0 ， N = 1048576 ，则仅需m次迭代就可得到A H ，相当于执行下列语句 for ( i = 0 ; i < m ; i + + ) A ( h N ) = A ( h N ) × A ( h N ) (13) 2) 增量算法 当h N 很小时，A(h N )与单位矩阵十分接近，可写为 A ( h N ) = I + S ( h N ) (14) 式中，S(h N )为增量矩阵 S ( h N ) = h N [ − h N 2 A 1 + h N 2 12 A 3 ( A 2 A 1 + h N 2 A 1 2 ) I − h N 2 A 2 − h N 2 12 A 3 ( A 1 − A 2 2 − h N 2 A 1 A 2 ) − A 1 + h N 2 A 3 ( A 2 A 1 + h N 2 A 1 2 ) − A 2 − h N 2 A 3 ( A 1 − A 2 2 − h N 2 A 1 A 2 ) ] A 1 = M ˜ − 1 K ˜ ， A 2 = M ˜ − 1 C ˜ ， A 3 = ( M ˜ + h N 2 C ˜ + h N 2 12 K ˜ ) − 1 M ˜ (15) 可以看出，当h N 趋近于0时，S(h N )接近于零矩阵。由于一般台式计算机仅有16位有效数字，S(h N )的精度可能会在迭代过程中丧失殆尽。为避免精度损失，在构造A H 的过程中，要单独存储S(h N )，而不是A(h N )。又因为 ( I + S ( h N ) ) × ( I + S ( h N ) ) = I + 2 S ( h N ) + S ( h N ) × S ( h N ) (16) 则需执行的语句变为 for   ( i = 0 ; i < m ; i + + )   S ( h N ) = 2 S ( h N ) + S ( h N ) × S ( h N ) (17) 经过m次乘法后，S不再是一个很小的矩阵，此时A H 可由下式得到 A H ( h ) = I + S ( h N ) (18) 综上所述，表1给出了HAFIM求解线性定常系统的执行步骤。在计算过程中，HAFIM与PIM有两处不同：首先，HAFIM直接给出了增量矩阵S(h N )的形式，而PIM的增量矩阵需由系数矩阵进一步计算得到；其次，HAFIM无需对结果进行变换，可直接求得位移、速度和加速度，而PIM的速度和加速度需由进一步变换得到，所以说HAFIM计算更为简便，所需时间成本也更低。 实际上，任意一种时间积分法都可按照同样的方式来构造相应的高精度方法，本文选取Fox-Goodwin方法是由于其具备良好的精度和稳定性，下面我们将说明这种方法的性能优势。 Table 1 Solution procedures of the highly accurate Fox-Goodwin time integration metho A. 初始化 1) 若方程为非齐次，按照方程(4)和(5)将外载荷函数转化为变量，形成相应的齐次方程的质量矩阵 M ˜ ，阻尼矩阵 C ˜ 和刚度矩阵 K ˜ ； 2) 给出初始位移和速度 z 0 = [ x ˜ 0 T x ˜ ˙ 0 T ] T ； 3) 选取合适的步长h和分步数N (N = 2 m )，并计算分步长 h N = h / 2 m 以及常量矩阵 A 1 = M ˜ − 1 K ˜ ， A 2 = M ˜ − 1 C ˜ ， A 3 = ( M ˜ + h N 2 C ˜ + h N 2 12 K ˜ ) − 1 M ˜ ； 4) 计算增量矩阵 S ( h N ) = h N [ − h N 2 A 1 + h N 2 12 A 3 ( A 2 A 1 + h N 2 A 1 2 ) I − h N 2 A 2 − h N 2 12 A 3 ( A 1 − A 2 2 − h N 2 A 1 A 2 ) − A 1 + h N 2 A 3 ( A 2 A 1 + h N 2 A 1 2 ) − A 2 − h N 2 A 3 ( A 1 − A 2 2 − h N 2 A 1 A 2 ) ] ； 5) 更新增量矩阵 for ( i = 0 ; i < m ; i + + ) S ( h N ) = 2 S ( h N ) + S ( h N ) × S ( h N ) ； 6) 计算高精度Jacobi矩阵A H A H ( h ) = I + S ( h N ) 。 B. 递推过程 1) 计算第k + 1步的位移和速度 z k + 1 = A H ( h ) z k ， z k = [ x ˜ k x ˜ ˙ k ] ； 2) 计算第k + 1步的加速度 x ˜ ¨ k + 1 = − A 1 x ˜ k + 1 − A 2 x ˜ ˙ k + 1 . 表1. 高精度Fox-Goodwin时间积分方法的执行步骤