From 59281c93c678af5896afee1f62b184c39885cc4a Mon Sep 17 00:00:00 2001 From: yize Date: Mon, 11 Aug 2025 08:53:25 +0800 Subject: [PATCH] vault backup: 2025-08-11 08:53:24 --- ...b_theory_manual]]详细展示1.15的推导过程.md | 529 ++++++++++++++++++ .../auto/CASEstab_theory_manual.md | 12 +- 工作总结/周报/周报89-郭翼泽.docx | Bin 0 -> 22261 bytes 3 files changed, 535 insertions(+), 6 deletions(-) create mode 100644 copilot-conversations/20250806_090848__[[CASEstab_theory_manual]]详细展示1.15的推导过程.md create mode 100644 工作总结/周报/周报89-郭翼泽.docx diff --git a/copilot-conversations/20250806_090848__[[CASEstab_theory_manual]]详细展示1.15的推导过程.md b/copilot-conversations/20250806_090848__[[CASEstab_theory_manual]]详细展示1.15的推导过程.md new file mode 100644 index 0000000..83331db --- /dev/null +++ b/copilot-conversations/20250806_090848__[[CASEstab_theory_manual]]详细展示1.15的推导过程.md @@ -0,0 +1,529 @@ +--- +epoch: 1754442528062 +modelKey: gemini-2.5-pro|google +tags: + - copilot-conversation +--- + +**user**: [[CASEstab_theory_manual]]详细展示1.15的推导过程 +[Timestamp: 2025/08/06 09:08:48] + +**ai**: 好的,我们来详细展示一下 [[CASEstab_theory_manual]] 中公式 1.15 的推导过程。 + +这个推导是基于一个特定的简化假设:在整个结构中,只有一个子结构(编号为 $k$)的轴承具有显式的时间依赖性,即以恒定角速度 $\Omega$ 旋转。所有其他轴承要么是固定的,要么其转角是自由度(DOF),因此它们不具有显式的时间依赖性。 + +### 前提条件 + +1. **单一旋转轴承**: 只有子结构 $k$ 的轴承矩阵 $\mathbf{B}_k$ 是时间的显式函数。对于任何其他子结构 $m \neq k$,其轴承矩阵 $\mathbf{B}_m$ 是常数,因此其时间导数为零: + $$ \dot{\mathbf{B}}_m = \mathbf{0}, \quad \ddot{\mathbf{B}}_m = \mathbf{0} \quad \text{for } m \neq k $$ +2. **恒定角速度**: 子结构 $k$ 的轴承以恒定角速度 $\Omega$ 绕由单位向量定义的轴旋转。根据附录 E.2 中的公式 (E.5) 和 (E.6),旋转矩阵 $\mathbf{B}_k$ 的一阶和二阶时间导数可以表示为: + $$ \dot{\mathbf{B}}_k = \Omega \mathbf{B}_k \mathbf{N}_k $$ + $$ \ddot{\mathbf{B}}_k = \Omega^2 \mathbf{B}_k \mathbf{N}_k^2 $$ + 其中 $\mathbf{N}_k$ 是由轴承旋转轴的单位向量定义的斜对称矩阵。 + +### 推导过程 + +我们将从公式 (1.14) 中的通用时间导数表达式出发,应用上述前提条件来推导公式 (1.15)。 + +--- + +#### **推导 (1.15b): $\dot{\mathbf{R}}_{0,b}$** + +我们从 $\mathbf{R}_{0,b}$ 的通用时间导数表达式 (1.14b) 开始。为了清晰起见,我们将求和索引改为 $m$: +$$ +\dot{\mathbf{R}}_{0,b} = \sum_{m=0}^{b-1} \left( \prod_{l=0}^{m-1} \mathbf{O}_l \right) S_m \dot{\mathbf{B}}_m \mathbf{R}_m \mathbf{S}_m^T \left( \prod_{l=m+1}^{b-1} \mathbf{O}_l \right) S_b \mathbf{B}_b + \left( \prod_{l=0}^{b-1} \mathbf{O}_l \right) S_b \dot{\mathbf{B}}_b +$$ +根据前提条件,只有当 $m=k$ 或 $b=k$ 时,$\dot{\mathbf{B}}$ 项才不为零。 + +* **情况 1: $b < k$** + 在这种情况下,求和中的所有 $m$ 和索引 $b$ 都小于 $k$。因此,所有的 $\dot{\mathbf{B}}_m$ 和 $\dot{\mathbf{B}}_b$ 都为零。所以: + $$ \dot{\mathbf{R}}_{0,b} = \mathbf{0} \quad \text{for } b < k $$ + +* **情况 2: $b \ge k$** + 在这种情况下,求和中只有当 $m=k$ 时项才不为零。第二个加项中的 $\dot{\mathbf{B}}_b$ 仅在 $b=k$ 时不为零。 + * 如果 $b=k$,表达式简化为 $\dot{\mathbf{R}}_{0,k} = (\prod_{l=0}^{k-1} \mathbf{O}_l) S_k \dot{\mathbf{B}}_k$。 + * 如果 $b>k$,表达式简化为 $\dot{\mathbf{R}}_{0,b} = (\prod_{l=0}^{k-1} \mathbf{O}_l) S_k \dot{\mathbf{B}}_k \mathbf{R}_k \mathbf{S}_k^T (\prod_{l=k+1}^{b-1} \mathbf{O}_l) S_b \mathbf{B}_b$。 + 这两个子情况可以合并。将 $\dot{\mathbf{B}}_k = \Omega \mathbf{B}_k \mathbf{N}_k$ 代入,得到 (1.15b) 的第一部分: + $$ + \dot{\mathbf{R}}_{0,b} = \Omega \left( \prod_{l=0}^{k-1} \mathbf{O}_l \right) S_k \mathbf{B}_k \mathbf{N}_k \mathbf{R}_k \mathbf{S}_k^T \left( \prod_{l=k+1}^{b-1} \mathbf{O}_l \right) S_b \mathbf{B}_b + $$ + 现在我们来证明其等价于第二部分 $\Omega \mathbf{R}_{0,k} \mathbf{N}_k \mathbf{R}_{0,k}^T \mathbf{R}_{0,b}$。 + 利用 (1.13) 中的定义: + $\mathbf{R}_{0,k} = (\prod_{l=0}^{k-1}\mathbf{O}_{l})\mathbf{S}_{k}\mathbf{B}_{k}$ + $\mathbf{R}_{0,b} = (\prod_{l=0}^{b-1}\mathbf{O}_{l})\mathbf{S}_{b}\mathbf{B}_{b} = \mathbf{R}_{0,k} \mathbf{R}_k \mathbf{S}_k^T \mathbf{S}_k \mathbf{B}_k (\prod_{l=k+1}^{b-1}\mathbf{O}_{l})\mathbf{S}_{b}\mathbf{B}_{b}$ + 让我们从目标表达式的第二部分开始: + $$ + \begin{aligned} + \Omega \mathbf{R}_{0,k} \mathbf{N}_k \mathbf{R}_{0,k}^T \mathbf{R}_{0,b} &= \Omega \mathbf{R}_{0,k} \mathbf{N}_k \mathbf{R}_{0,k}^T \left( \mathbf{R}_{0,k} \mathbf{R}_k \mathbf{S}_k^T \left( \prod_{l=k+1}^{b-1} \mathbf{O}_l \right) \mathbf{S}_b \mathbf{B}_b \right) \\ + &= \Omega \mathbf{R}_{0,k} \mathbf{N}_k (\mathbf{R}_{0,k}^T \mathbf{R}_{0,k}) \mathbf{R}_k \mathbf{S}_k^T \left( \prod_{l=k+1}^{b-1} \mathbf{O}_l \right) \mathbf{S}_b \mathbf{B}_b \\ + &= \Omega \mathbf{R}_{0,k} \mathbf{N}_k \mathbf{R}_k \mathbf{S}_k^T \left( \prod_{l=k+1}^{b-1} \mathbf{O}_l \right) \mathbf{S}_b \mathbf{B}_b \\ + &= \Omega \left( \left( \prod_{l=0}^{k-1} \mathbf{O}_l \right) \mathbf{S}_k \mathbf{B}_k \right) \mathbf{N}_k \mathbf{R}_k \mathbf{S}_k^T \left( \prod_{l=k+1}^{b-1} \mathbf{O}_l \right) \mathbf{S}_b \mathbf{B}_b + \end{aligned} + $$ + 这与我们从 (1.14b) 推导出的结果完全一致。 + +--- + +#### **推导 (1.15a): $\dot{\mathbf{r}}_{0,b}$** + +我们从通用表达式 (1.14a) 开始: +$$ +\dot{\mathbf{r}}_{0,b} = \sum_{m=0}^{b-1} \dot{\mathbf{R}}_{0,m} \mathbf{r}_m +$$ +从上面的推导我们知道,当 $m < k$ 时,$\dot{\mathbf{R}}_{0,m} = \mathbf{0}$。因此,求和的起始索引可以从 0 变为 $k$。 +$$ +\dot{\mathbf{r}}_{0,b} = \sum_{m=k}^{b-1} \dot{\mathbf{R}}_{0,m} \mathbf{r}_m +$$ +将求和索引 $m$ 替换为 $l$,即得到 (1.15a)。 + +--- + +#### **推导 (1.15d): $\ddot{\mathbf{R}}_{0,b}$** + +我们对 (1.15b) 的第二种形式进行时间求导: +$$ +\dot{\mathbf{R}}_{0,b} = \Omega \mathbf{R}_{0,k} \mathbf{N}_k \mathbf{R}_{0,k}^T \mathbf{R}_{0,b} +$$ +由于 $\Omega$ 和 $\mathbf{N}_k$ 是常数,我们使用乘法法则求导: +$$ +\ddot{\mathbf{R}}_{0,b} = \Omega \left( \dot{\mathbf{R}}_{0,k} \mathbf{N}_k \mathbf{R}_{0,k}^T \mathbf{R}_{0,b} + \mathbf{R}_{0,k} \mathbf{N}_k \dot{\mathbf{R}}_{0,k}^T \mathbf{R}_{0,b} + \mathbf{R}_{0,k} \mathbf{N}_k \mathbf{R}_{0,k}^T \dot{\mathbf{R}}_{0,b} \right) +$$ +代入我们已知的导数: +* $\dot{\mathbf{R}}_{0,k} = \Omega \mathbf{R}_{0,k} \mathbf{N}_k$ +* $\dot{\mathbf{R}}_{0,k}^T = (\Omega \mathbf{R}_{0,k} \mathbf{N}_k)^T = \Omega \mathbf{N}_k^T \mathbf{R}_{0,k}^T = -\Omega \mathbf{N}_k \mathbf{R}_{0,k}^T$ +* $\dot{\mathbf{R}}_{0,b} = \Omega \mathbf{R}_{0,k} \mathbf{N}_k \mathbf{R}_{0,k}^T \mathbf{R}_{0,b}$ + +代入后得到: +$$ +\begin{aligned} +\ddot{\mathbf{R}}_{0,b} &= \Omega \left( (\Omega \mathbf{R}_{0,k} \mathbf{N}_k) \mathbf{N}_k \mathbf{R}_{0,k}^T \mathbf{R}_{0,b} + \mathbf{R}_{0,k} \mathbf{N}_k (-\Omega \mathbf{N}_k \mathbf{R}_{0,k}^T) \mathbf{R}_{0,b} + \mathbf{R}_{0,k} \mathbf{N}_k \mathbf{R}_{0,k}^T (\Omega \mathbf{R}_{0,k} \mathbf{N}_k \mathbf{R}_{0,k}^T \mathbf{R}_{0,b}) \right) \\ +&= \Omega^2 \left( \mathbf{R}_{0,k} \mathbf{N}_k^2 \mathbf{R}_{0,k}^T \mathbf{R}_{0,b} - \mathbf{R}_{0,k} \mathbf{N}_k^2 \mathbf{R}_{0,k}^T \mathbf{R}_{0,b} + \mathbf{R}_{0,k} \mathbf{N}_k (\mathbf{R}_{0,k}^T \mathbf{R}_{0,k}) \mathbf{N}_k \mathbf{R}_{0,k}^T \mathbf{R}_{0,b} \right) \\ +&= \Omega^2 \left( \mathbf{R}_{0,k} \mathbf{N}_k^2 \mathbf{R}_{0,k}^T \mathbf{R}_{0,b} - \mathbf{R}_{0,k} \mathbf{N}_k^2 \mathbf{R}_{0,k}^T \mathbf{R}_{0,b} + \mathbf{R}_{0,k} \mathbf{N}_k^2 \mathbf{R}_{0,k}^T \mathbf{R}_{0,b} \right) \\ +&= \Omega^2 \mathbf{R}_{0,k} \mathbf{N}_k^2 \mathbf{R}_{0,k}^T \mathbf{R}_{0,b} +\end{aligned} +$$ +这与 (1.15d) 的第二部分相符。第一部分可以通过对 (1.15b) 的第一部分求导得到,注意到其中只有 $\mathbf{B}_k$ 是时间相关的,并代入 $\dot{\mathbf{B}}_k = \Omega \mathbf{B}_k \mathbf{N}_k$ 即可。 + +--- + +#### **推导 (1.15c): $\ddot{\mathbf{r}}_{0,b}$** + +我们对 (1.15a) 进行时间求导: +$$ +\dot{\mathbf{r}}_{0,b} = \sum_{l=k}^{b-1} \dot{\mathbf{R}}_{0,l} \mathbf{r}_l +$$ +由于 $\mathbf{r}_l$ 是局部位置矢量,不随时间变化,所以: +$$ +\ddot{\mathbf{r}}_{0,b} = \frac{d}{dt} \left( \sum_{l=k}^{b-1} \dot{\mathbf{R}}_{0,l} \mathbf{r}_l \right) = \sum_{l=k}^{b-1} \ddot{\mathbf{R}}_{0,l} \mathbf{r}_l +$$ +这与 (1.15c) 完全一致。 + +至此,公式组 (1.15) 的所有部分都已从其通用形式 (1.14) 在单一恒速旋转轴承的假设下推导出来。 +[Timestamp: 2025/08/06 09:10:17] + +**user**: [[CASEstab_theory_manual]]补充完整1.16 +[Timestamp: 2025/08/06 09:18:36] + +**ai**: 好的,我们来补充和推导 [[CASEstab_theory_manual]] 中公式组 1.16 的缺失部分。 + +该公式组是在“只有一个轴承(位于子结构 $k$)以恒定角速度 $\Omega$ 旋转”的假设下推导的。我们将使用公式组 (1.15) 的结果来完成推导。 + +### 补充推导 (1.16a) 和 (1.16d) + +**1. 推导 (1.16a): $\mathbf{r}_{0,b}^T \dot{\mathbf{r}}_{0,b}$** + +我们从 $\mathbf{r}_{0,b}$ 和 $\dot{\mathbf{r}}_{0,b}$ 的定义出发: +* 根据 (1.13): $\mathbf{r}_{0,b} = \sum_{m=0}^{b-1}\mathbf{R}_{0,m}\mathbf{r}_{m}$ +* 根据 (1.15a): $\dot{\mathbf{r}}_{0,b} = \sum_{l=k}^{b-1} \dot{\mathbf{R}}_{0,l} \mathbf{r}_l$ + +将它们相乘: +$$ +\mathbf{r}_{0,b}^T \dot{\mathbf{r}}_{0,b} = \left( \sum_{m=0}^{b-1}\mathbf{r}_{m}^T\mathbf{R}_{0,m}^T \right) \left( \sum_{l=k}^{b-1} \dot{\mathbf{R}}_{0,l} \mathbf{r}_l \right) +$$ +现在,代入 (1.15b) 中 $\dot{\mathbf{R}}_{0,l}$ 的表达式 $\dot{\mathbf{R}}_{0,l} = \Omega \mathbf{R}_{0,k} \mathbf{N}_k \mathbf{R}_{0,k}^T \mathbf{R}_{0,l}$: +$$ +\mathbf{r}_{0,b}^T \dot{\mathbf{r}}_{0,b} = \left( \sum_{m=0}^{b-1}\mathbf{r}_{m}^T\mathbf{R}_{0,m}^T \right) \left( \sum_{l=k}^{b-1} (\Omega \mathbf{R}_{0,k} \mathbf{N}_k \mathbf{R}_{0,k}^T \mathbf{R}_{0,l}) \mathbf{r}_l \right) +$$ +我们可以将与求和索引 $l$ 无关的项提取出来: +$$ +\mathbf{r}_{0,b}^T \dot{\mathbf{r}}_{0,b} = \Omega \left( \sum_{m=0}^{b-1}\mathbf{r}_{m}^T\mathbf{R}_{0,m}^T \right) \left( \mathbf{R}_{0,k} \mathbf{N}_k \mathbf{R}_{0,k}^T \right) \left( \sum_{l=k}^{b-1} \mathbf{R}_{0,l} \mathbf{r}_l \right) +$$ +我们识别出其中的求和项: +* 第一个求和项就是 $\mathbf{r}_{0,b}^T$。 +* 第二个求和项可以从 $\mathbf{r}_{0,b}$ 的定义中得到: + $\mathbf{r}_{0,b} = \sum_{l=0}^{b-1}\mathbf{R}_{0,l}\mathbf{r}_{l} = \sum_{l=0}^{k-1}\mathbf{R}_{0,l}\mathbf{r}_{l} + \sum_{l=k}^{b-1}\mathbf{R}_{0,l}\mathbf{r}_{l} = \mathbf{r}_{0,k} + \sum_{l=k}^{b-1}\mathbf{R}_{0,l}\mathbf{r}_{l}$ + 因此,$\sum_{l=k}^{b-1} \mathbf{R}_{0,l} \mathbf{r}_l = \mathbf{r}_{0,b} - \mathbf{r}_{0,k}$。 + +将这些代回表达式,得到最终结果: +$$ +\mathbf{r}_{0,b}^T \dot{\mathbf{r}}_{0,b} = \Omega \, \mathbf{r}_{0,b}^T \mathbf{R}_{0,k} \mathbf{N}_k \mathbf{R}_{0,k}^T (\mathbf{r}_{0,b} - \mathbf{r}_{0,k}) +$$ + +--- + +**2. 推导 (1.16d): $\mathbf{r}_{0,b}^T \ddot{\mathbf{r}}_{0,b}$** + +这个推导过程与 (1.16a) 非常相似,只是用二阶导数代替一阶导数。 +我们从 $\mathbf{r}_{0,b}$ 和 $\ddot{\mathbf{r}}_{0,b}$ 的定义出发: +* 根据 (1.13): $\mathbf{r}_{0,b} = \sum_{m=0}^{b-1}\mathbf{R}_{0,m}\mathbf{r}_{m}$ +* 根据 (1.15c): $\ddot{\mathbf{r}}_{0,b} = \sum_{l=k}^{b-1} \ddot{\mathbf{R}}_{0,l} \mathbf{r}_l$ + +将它们相乘,并代入 (1.15d) 中 $\ddot{\mathbf{R}}_{0,l}$ 的表达式 $\ddot{\mathbf{R}}_{0,l} = \Omega^2 \mathbf{R}_{0,k} \mathbf{N}_k^2 \mathbf{R}_{0,k}^T \mathbf{R}_{0,l}$: +$$ +\mathbf{r}_{0,b}^T \ddot{\mathbf{r}}_{0,b} = \left( \sum_{m=0}^{b-1}\mathbf{r}_{m}^T\mathbf{R}_{0,m}^T \right) \left( \sum_{l=k}^{b-1} (\Omega^2 \mathbf{R}_{0,k} \mathbf{N}_k^2 \mathbf{R}_{0,k}^T \mathbf{R}_{0,l}) \mathbf{r}_l \right) +$$ +同样,提取公共项并识别求和部分: +$$ +\mathbf{r}_{0,b}^T \ddot{\mathbf{r}}_{0,b} = \Omega^2 \left( \sum_{m=0}^{b-1}\mathbf{r}_{m}^T\mathbf{R}_{0,m}^T \right) \left( \mathbf{R}_{0,k} \mathbf{N}_k^2 \mathbf{R}_{0,k}^T \right) \left( \sum_{l=k}^{b-1} \mathbf{R}_{0,l} \mathbf{r}_l \right) +$$ +$$ +\mathbf{r}_{0,b}^T \ddot{\mathbf{r}}_{0,b} = \Omega^2 \, \mathbf{r}_{0,b}^T \mathbf{R}_{0,k} \mathbf{N}_k^2 \mathbf{R}_{0,k}^T (\mathbf{r}_{0,b} - \mathbf{r}_{0,k}) +$$ + +### 完整的公式组 (1.16) + +将推导出的结果填入,得到完整的公式组 (1.16) 如下: + +$$ +\mathbf{r}_{0,b}^T \dot{\mathbf{r}}_{0,b} = \Omega \, \mathbf{r}_{0,b}^T \mathbf{R}_{0,k} \mathbf{N}_k \mathbf{R}_{0,k}^T (\mathbf{r}_{0,b} - \mathbf{r}_{0,k}) \tag{1.16a} +$$ + +$$ +\mathbf{R}_{0,b}^T \dot{\mathbf{r}}_{0,b} = \Omega \mathbf{R}_{0,b}^T \mathbf{R}_{0,k} \mathbf{N}_k \mathbf{R}_{0,k}^T \sum_{l=k}^{b-1} \mathbf{R}_{0,l} \mathbf{r}_l = \Omega \left( \mathbf{R}_{0,k}^T \mathbf{R}_{0,b} \right)^T \mathbf{N}_k \mathbf{R}_{0,k}^T (\mathbf{r}_{0,b} - \mathbf{r}_{0,k}) \tag{1.16b} +$$ + +$$ +\mathbf{R}_{0,b}^T \dot{\mathbf{R}}_{0,b} = \Omega \left( \mathbf{R}_{0,k}^T \mathbf{R}_{0,b} \right)^T \mathbf{N}_k \mathbf{R}_{0,k}^T \mathbf{R}_{0,b} \tag{1.16c} +$$ + +$$ +\mathbf{r}_{0,b}^T \ddot{\mathbf{r}}_{0,b} = \Omega^2 \, \mathbf{r}_{0,b}^T \mathbf{R}_{0,k} \mathbf{N}_k^2 \mathbf{R}_{0,k}^T (\mathbf{r}_{0,b} - \mathbf{r}_{0,k}) \tag{1.16d} +$$ + +$$ +\mathbf{R}_{0,b}^T \ddot{\mathbf{r}}_{0,b} = \Omega^2 \mathbf{R}_{0,b}^T \mathbf{R}_{0,k} \mathbf{N}_k^2 \mathbf{R}_{0,k}^T \sum_{l=k}^{b-1} \mathbf{R}_{0,l} \mathbf{r}_l = \Omega^2 \left( \mathbf{R}_{0,k}^T \mathbf{R}_{0,b} \right)^T \mathbf{N}_k^2 \mathbf{R}_{0,k}^T (\mathbf{r}_{0,b} - \mathbf{r}_{0,k}) \tag{1.16e} +$$ + +$$ +\mathbf{R}_{0,b}^T \ddot{\mathbf{R}}_{0,b} = \Omega^2 \left( \mathbf{R}_{0,k}^T \mathbf{R}_{0,b} \right)^T \mathbf{N}_k^2 \mathbf{R}_{0,k}^T \mathbf{R}_{0,b} \tag{1.16f} +$$ +[Timestamp: 2025/08/06 09:19:31] + +**user**: [[CASEstab_theory_manual]]详细展示1.16b, 1.16c, 1.16e, 1.16f的推导过程 +[Timestamp: 2025/08/06 09:22:52] + +**ai**: 好的,我们来详细展示 [[CASEstab_theory_manual]] 中公式组 1.16b, 1.16c, 1.16e, 和 1.16f 的推导过程。 + +这些推导都基于一个核心前提:**结构中只有一个子结构(编号为 $k$)的轴承以恒定的角速度 $\Omega$ 旋转**。我们将频繁使用公式组 (1.15) 的结果。 + +--- + +### 推导 (1.16b): $\mathbf{R}_{0,b}^T \dot{\mathbf{r}}_{0,b}$ + +我们要推导的表达式是: +$$ +\mathbf{R}_{0,b}^T \dot{\mathbf{r}}_{0,b} = \Omega \mathbf{R}_{0,b}^T \mathbf{R}_{0,k} \mathbf{N}_k \mathbf{R}_{0,k}^T \sum_{l=k}^{b-1} \mathbf{R}_{0,l} \mathbf{r}_l = \Omega \left( \mathbf{R}_{0,k}^T \mathbf{R}_{0,b} \right)^T \mathbf{N}_k \mathbf{R}_{0,k}^T (\mathbf{r}_{0,b} - \mathbf{r}_{0,k}) +$$ + +**推导步骤:** + +1. **代入 $\dot{\mathbf{r}}_{0,b}$**: + 我们从公式 (1.15a) 开始,即 $\dot{\mathbf{r}}_{0,b} = \sum_{l=k}^{b-1} \dot{\mathbf{R}}_{0,l} \mathbf{r}_l$。将其代入目标表达式: + $$ + \mathbf{R}_{0,b}^T \dot{\mathbf{r}}_{0,b} = \mathbf{R}_{0,b}^T \left( \sum_{l=k}^{b-1} \dot{\mathbf{R}}_{0,l} \mathbf{r}_l \right) + $$ + +2. **代入 $\dot{\mathbf{R}}_{0,l}$**: + 接下来,使用公式 (1.15b) 的第二种形式,并将其应用于索引 $l$:$\dot{\mathbf{R}}_{0,l} = \Omega \mathbf{R}_{0,k} \mathbf{N}_k \mathbf{R}_{0,k}^T \mathbf{R}_{0,l}$。代入上式: + $$ + \mathbf{R}_{0,b}^T \dot{\mathbf{r}}_{0,b} = \mathbf{R}_{0,b}^T \sum_{l=k}^{b-1} \left( \Omega \mathbf{R}_{0,k} \mathbf{N}_k \mathbf{R}_{0,k}^T \mathbf{R}_{0,l} \right) \mathbf{r}_l + $$ + +3. **提取公共项**: + 由于 $\Omega$, $\mathbf{R}_{0,k}$, $\mathbf{N}_k$, 和 $\mathbf{R}_{0,k}^T$ 不依赖于求和索引 $l$,我们可以将它们从求和号中提取出来: + $$ + \mathbf{R}_{0,b}^T \dot{\mathbf{r}}_{0,b} = \Omega \mathbf{R}_{0,b}^T \mathbf{R}_{0,k} \mathbf{N}_k \mathbf{R}_{0,k}^T \left( \sum_{l=k}^{b-1} \mathbf{R}_{0,l} \mathbf{r}_l \right) + $$ + 这与公式 (1.16b) 的**第一部分**完全匹配。 + +4. **简化求和项**: + 为了得到公式的第二部分,我们需要简化求和项 $\sum_{l=k}^{b-1} \mathbf{R}_{0,l} \mathbf{r}_l$。我们利用公式 (1.13) 中 $\mathbf{r}_{0,b}$ 的定义: + $$ + \mathbf{r}_{0,b} = \sum_{l=0}^{b-1} \mathbf{R}_{0,l} \mathbf{r}_l = \sum_{l=0}^{k-1} \mathbf{R}_{0,l} \mathbf{r}_l + \sum_{l=k}^{b-1} \mathbf{R}_{0,l} \mathbf{r}_l + $$ + 其中,第一项 $\sum_{l=0}^{k-1} \mathbf{R}_{0,l} \mathbf{r}_l$ 正是 $\mathbf{r}_{0,k}$ 的定义。因此: + $$ + \mathbf{r}_{0,b} = \mathbf{r}_{0,k} + \sum_{l=k}^{b-1} \mathbf{R}_{0,l} \mathbf{r}_l + $$ + 移项可得: + $$ + \sum_{l=k}^{b-1} \mathbf{R}_{0,l} \mathbf{r}_l = \mathbf{r}_{0,b} - \mathbf{r}_{0,k} + $$ + +5. **代回并整理**: + 将这个简化的求和项代回到第3步的结果中: + $$ + \mathbf{R}_{0,b}^T \dot{\mathbf{r}}_{0,b} = \Omega \mathbf{R}_{0,b}^T \mathbf{R}_{0,k} \mathbf{N}_k \mathbf{R}_{0,k}^T (\mathbf{r}_{0,b} - \mathbf{r}_{0,k}) + $$ + 利用矩阵转置的性质 $(AB)^T = B^T A^T$,我们有 $(\mathbf{R}_{0,k}^T \mathbf{R}_{0,b})^T = \mathbf{R}_{0,b}^T (\mathbf{R}_{0,k}^T)^T = \mathbf{R}_{0,b}^T \mathbf{R}_{0,k}$。将此关系代入上式,即可得到公式 (1.16b) 的**第二部分**: + $$ + \mathbf{R}_{0,b}^T \dot{\mathbf{r}}_{0,b} = \Omega \left( \mathbf{R}_{0,k}^T \mathbf{R}_{0,b} \right)^T \mathbf{N}_k \mathbf{R}_{0,k}^T (\mathbf{r}_{0,b} - \mathbf{r}_{0,k}) + $$ + +--- + +### 推导 (1.16c): $\mathbf{R}_{0,b}^T \dot{\mathbf{R}}_{0,b}$ + +我们要推导的表达式是: +$$ +\mathbf{R}_{0,b}^T \dot{\mathbf{R}}_{0,b} = \Omega \left( \mathbf{R}_{0,k}^T \mathbf{R}_{0,b} \right)^T \mathbf{N}_k \mathbf{R}_{0,k}^T \mathbf{R}_{0,b} +$$ + +**推导步骤:** + +1. **直接代入 $\dot{\mathbf{R}}_{0,b}$**: + 我们使用公式 (1.15b) 的第二种形式:$\dot{\mathbf{R}}_{0,b} = \Omega \mathbf{R}_{0,k} \mathbf{N}_k \mathbf{R}_{0,k}^T \mathbf{R}_{0,b}$。将其直接代入目标表达式: + $$ + \mathbf{R}_{0,b}^T \dot{\mathbf{R}}_{0,b} = \mathbf{R}_{0,b}^T \left( \Omega \mathbf{R}_{0,k} \mathbf{N}_k \mathbf{R}_{0,k}^T \mathbf{R}_{0,b} \right) + $$ + +2. **重新组合**: + 将常数 $\Omega$ 提取出来,并重新组合括号: + $$ + \mathbf{R}_{0,b}^T \dot{\mathbf{R}}_{0,b} = \Omega \left( \mathbf{R}_{0,b}^T \mathbf{R}_{0,k} \right) \mathbf{N}_k \left( \mathbf{R}_{0,k}^T \mathbf{R}_{0,b} \right) + $$ + +3. **使用转置关系**: + 再次利用转置关系 $\mathbf{R}_{0,b}^T \mathbf{R}_{0,k} = (\mathbf{R}_{0,k}^T \mathbf{R}_{0,b})^T$。代入上式即可得到最终结果: + $$ + \mathbf{R}_{0,b}^T \dot{\mathbf{R}}_{0,b} = \Omega \left( \mathbf{R}_{0,k}^T \mathbf{R}_{0,b} \right)^T \mathbf{N}_k \mathbf{R}_{0,k}^T \mathbf{R}_{0,b} + $$ + *注意:这里的最后一个 $\mathbf{R}_{0,k}^T \mathbf{R}_{0,b}$ 也可以写成括号形式,但为了与手册保持一致,我们写成手册中的形式。* + +--- + +### 推导 (1.16e): $\mathbf{R}_{0,b}^T \ddot{\mathbf{r}}_{0,b}$ + +此推导与 (1.16b) 的过程完全平行,只是将一阶时间导数换为二阶。 +我们要推导的表达式是: +$$ +\mathbf{R}_{0,b}^T \ddot{\mathbf{r}}_{0,b} = \Omega^2 \mathbf{R}_{0,b}^T \mathbf{R}_{0,k} \mathbf{N}_k^2 \mathbf{R}_{0,k}^T \sum_{l=k}^{b-1} \mathbf{R}_{0,l} \mathbf{r}_l = \Omega^2 \left( \mathbf{R}_{0,k}^T \mathbf{R}_{0,b} \right)^T \mathbf{N}_k^2 \mathbf{R}_{0,k}^T (\mathbf{r}_{0,b} - \mathbf{r}_{0,k}) +$$ + +**推导步骤:** + +1. **代入 $\ddot{\mathbf{r}}_{0,b}$**: + 从公式 (1.15c) 开始:$\ddot{\mathbf{r}}_{0,b} = \sum_{l=k}^{b-1} \ddot{\mathbf{R}}_{0,l} \mathbf{r}_l$。 + $$ + \mathbf{R}_{0,b}^T \ddot{\mathbf{r}}_{0,b} = \mathbf{R}_{0,b}^T \left( \sum_{l=k}^{b-1} \ddot{\mathbf{R}}_{0,l} \mathbf{r}_l \right) + $$ + +2. **代入 $\ddot{\mathbf{R}}_{0,l}$**: + 使用公式 (1.15d) 的第二种形式,并应用于索引 $l$:$\ddot{\mathbf{R}}_{0,l} = \Omega^2 \mathbf{R}_{0,k} \mathbf{N}_k^2 \mathbf{R}_{0,k}^T \mathbf{R}_{0,l}$。 + $$ + \mathbf{R}_{0,b}^T \ddot{\mathbf{r}}_{0,b} = \mathbf{R}_{0,b}^T \sum_{l=k}^{b-1} \left( \Omega^2 \mathbf{R}_{0,k} \mathbf{N}_k^2 \mathbf{R}_{0,k}^T \mathbf{R}_{0,l} \right) \mathbf{r}_l + $$ + +3. **提取公共项**: + $$ + \mathbf{R}_{0,b}^T \ddot{\mathbf{r}}_{0,b} = \Omega^2 \mathbf{R}_{0,b}^T \mathbf{R}_{0,k} \mathbf{N}_k^2 \mathbf{R}_{0,k}^T \left( \sum_{l=k}^{b-1} \mathbf{R}_{0,l} \mathbf{r}_l \right) + $$ + 这与公式 (1.16e) 的**第一部分**匹配。 + +4. **简化求和项并代回**: + 使用与 (1.16b) 推导中完全相同的简化:$\sum_{l=k}^{b-1} \mathbf{R}_{0,l} \mathbf{r}_l = \mathbf{r}_{0,b} - \mathbf{r}_{0,k}$。代入并使用转置关系 $\mathbf{R}_{0,b}^T \mathbf{R}_{0,k} = (\mathbf{R}_{0,k}^T \mathbf{R}_{0,b})^T$,得到**第二部分**: + $$ + \mathbf{R}_{0,b}^T \ddot{\mathbf{r}}_{0,b} = \Omega^2 \left( \mathbf{R}_{0,k}^T \mathbf{R}_{0,b} \right)^T \mathbf{N}_k^2 \mathbf{R}_{0,k}^T (\mathbf{r}_{0,b} - \mathbf{r}_{0,k}) + $$ + +--- + +### 推导 (1.16f): $\mathbf{R}_{0,b}^T \ddot{\mathbf{R}}_{0,b}$ + +此推导与 (1.16c) 的过程完全平行。 +我们要推导的表达式是: +$$ +\mathbf{R}_{0,b}^T \ddot{\mathbf{R}}_{0,b} = \Omega^2 \left( \mathbf{R}_{0,k}^T \mathbf{R}_{0,b} \right)^T \mathbf{N}_k^2 \mathbf{R}_{0,k}^T \mathbf{R}_{0,b} +$$ + +**推导步骤:** + +1. **直接代入 $\ddot{\mathbf{R}}_{0,b}$**: + 使用公式 (1.15d) 的第二种形式:$\ddot{\mathbf{R}}_{0,b} = \Omega^2 \mathbf{R}_{0,k} \mathbf{N}_k^2 \mathbf{R}_{0,k}^T \mathbf{R}_{0,b}$。 + $$ + \mathbf{R}_{0,b}^T \ddot{\mathbf{R}}_{0,b} = \mathbf{R}_{0,b}^T \left( \Omega^2 \mathbf{R}_{0,k} \mathbf{N}_k^2 \mathbf{R}_{0,k}^T \mathbf{R}_{0,b} \right) + $$ + +2. **重新组合并使用转置关系**: + $$ + \mathbf{R}_{0,b}^T \ddot{\mathbf{R}}_{0,b} = \Omega^2 \left( \mathbf{R}_{0,b}^T \mathbf{R}_{0,k} \right) \mathbf{N}_k^2 \left( \mathbf{R}_{0,k}^T \mathbf{R}_{0,b} \right) + $$ + $$ + \mathbf{R}_{0,b}^T \ddot{\mathbf{R}}_{0,b} = \Omega^2 \left( \mathbf{R}_{0,k}^T \mathbf{R}_{0,b} \right)^T \mathbf{N}_k^2 \mathbf{R}_{0,k}^T \mathbf{R}_{0,b} + $$ + 推导完成。 +[Timestamp: 2025/08/06 09:24:20] + +**user**: [[CASEstab_theory_manual]][C详细推导补充1.18 +[Timestamp: 2025/08/08 09:45:29] + +**ai**: 好的,我们来详细推导并补充完整 [[CASEstab_theory_manual]] 中关于自由度(DOF)导数的公式组 (1.18)。 + +这些导数是计算质量矩阵、陀螺矩阵和离心力所必需的,它们描述了子结构基座的位置向量 $\mathbf{r}_{0,b}$ 和姿态矩阵 $\mathbf{R}_{0,b}$ 如何随各个广义坐标(自由度)$q_i$ 的变化而变化。 + +### 基础定义 + +我们从公式 (1.13) 给出的定义开始: +$$ +\mathbf{r}_{0,b}=\sum_{k=0}^{b-1}\mathbf{R}_{0,k}\mathbf{r}_{k} +$$ +$$ +\mathbf{R}_{0,b}=\left(\prod_{l=0}^{b-1}\mathbf{O}_{l}\right)\mathbf{S}_{b}\mathbf{B}_{b} +$$ +其中 $\mathbf{O}_{l}=\mathbf{S}_{l}\mathbf{B}_{l}\mathbf{R}_{l}\mathbf{S}_{l}^{T}$。 + +需要注意的是: +* $\mathbf{S}_l$ 是常数矩阵,其对任何自由度的导数都为零。 +* $\mathbf{r}_k$, $\mathbf{B}_k$, 和 $\mathbf{R}_k$ 仅依赖于其所属子结构 $k$ 的自由度。因此,$\frac{\partial \mathbf{r}_k}{\partial q_i}$ 仅当 $q_i$ 是子结构 $k$ 的自由度时才不为零。 + +--- + +### 推导 (1.18a): $\mathbf{r}_{0,b,q_i}$ (一阶位置导数) + +这是对 $\mathbf{r}_{0,b}$ 求关于自由度 $q_i$ 的一阶偏导数。我们对求和式中的每一项应用乘法法则 $(\mathbf{U}\mathbf{v})' = \mathbf{U}'\mathbf{v} + \mathbf{U}\mathbf{v}'$。 + +$$ +\mathbf{r}_{0,b,q_i} = \frac{\partial}{\partial q_i} \left( \sum_{k=0}^{b-1} \mathbf{R}_{0,k} \mathbf{r}_k \right) +$$ +将求导算子移入求和号内: +$$ +\mathbf{r}_{0,b,q_i} = \sum_{k=0}^{b-1} \frac{\partial}{\partial q_i} (\mathbf{R}_{0,k} \mathbf{r}_k) +$$ +应用乘法法则: +$$ +\mathbf{r}_{0,b,q_i} = \sum_{k=0}^{b-1} \left( \frac{\partial \mathbf{R}_{0,k}}{\partial q_i} \mathbf{r}_k + \mathbf{R}_{0,k} \frac{\partial \mathbf{r}_k}{\partial q_i} \right) +$$ +使用手册中的简写符号 $()_{,q_i} \equiv \frac{\partial}{\partial q_i}$,我们得到: +$$ +\mathbf{r}_{0,b,q_i} = \sum_{k=0}^{b-1} (\mathbf{R}_{0,k,q_i} \mathbf{r}_k + \mathbf{R}_{0,k} \mathbf{r}_{k,q_i}) \tag{1.18a} +$$ +这与手册中给出的公式一致。 + +--- + +### 推导 (1.18b): $\mathbf{R}_{0,b,q_i}$ (一阶姿态导数) + +这是对 $\mathbf{R}_{0,b}$ 求关于 $q_i$ 的一阶偏导数。这是一个对矩阵乘积的求导。 +$$ +\mathbf{R}_{0,b,q_i} = \frac{\partial}{\partial q_i} \left( \left(\prod_{l=0}^{b-1} \mathbf{O}_l\right) \mathbf{S}_b \mathbf{B}_b \right) = \frac{\partial}{\partial q_i} \left( \mathbf{O}_0 \mathbf{O}_1 \cdots \mathbf{O}_{b-1} \mathbf{S}_b \mathbf{B}_b \right) +$$ +应用乘法法则的推广形式,我们对乘积中的每一项($\mathbf{O}_0, \dots, \mathbf{O}_{b-1}, \mathbf{B}_b$)依次求导,其他项保持不变,然后将结果相加。 +$$ +\begin{aligned} +\mathbf{R}_{0,b,q_i} = & \left( \sum_{m=0}^{b-1} \left( \prod_{l=0}^{m-1} \mathbf{O}_l \right) \frac{\partial \mathbf{O}_m}{\partial q_i} \left( \prod_{l=m+1}^{b-1} \mathbf{O}_l \right) \right) \mathbf{S}_b \mathbf{B}_b \\ +& + \left( \prod_{l=0}^{b-1} \mathbf{O}_l \right) \mathbf{S}_b \frac{\partial \mathbf{B}_b}{\partial q_i} +\end{aligned} +$$ +使用简写符号,得到补充后的公式: +$$ +\mathbf{R}_{0,b,q_i} = \left( \sum_{m=0}^{b-1} \left( \prod_{l=0}^{m-1} \mathbf{O}_l \right) \mathbf{O}_{m,q_i} \left( \prod_{l=m+1}^{b-1} \mathbf{O}_l \right) \right) \mathbf{S}_b \mathbf{B}_b + \left( \prod_{l=0}^{b-1} \mathbf{O}_l \right) \mathbf{S}_b \mathbf{B}_{b,q_i} \tag{1.18b} +$$ + +--- + +### 推导 (1.18c): $\mathbf{r}_{0,b,q_i,q_j}$ (二阶位置导数) + +这是对 (1.18a) 的结果再求关于 $q_j$ 的偏导数。 +$$ +\mathbf{r}_{0,b,q_i,q_j} = \frac{\partial}{\partial q_j} \left( \mathbf{r}_{0,b,q_i} \right) = \frac{\partial}{\partial q_j} \left( \sum_{k=0}^{b-1} (\mathbf{R}_{0,k,q_i} \mathbf{r}_k + \mathbf{R}_{0,k} \mathbf{r}_{k,q_i}) \right) +$$ +将求导算子移入求和号,并对括号内的两项分别应用乘法法则: +$$ +\mathbf{r}_{0,b,q_i,q_j} = \sum_{k=0}^{b-1} \left[ \frac{\partial}{\partial q_j}(\mathbf{R}_{0,k,q_i} \mathbf{r}_k) + \frac{\partial}{\partial q_j}(\mathbf{R}_{0,k} \mathbf{r}_{k,q_i}) \right] +$$ +$$ +\frac{\partial}{\partial q_j}(\mathbf{R}_{0,k,q_i} \mathbf{r}_k) = \frac{\partial \mathbf{R}_{0,k,q_i}}{\partial q_j} \mathbf{r}_k + \mathbf{R}_{0,k,q_i} \frac{\partial \mathbf{r}_k}{\partial q_j} = \mathbf{R}_{0,k,q_i,q_j} \mathbf{r}_k + \mathbf{R}_{0,k,q_i} \mathbf{r}_{k,q_j} +$$ +$$ +\frac{\partial}{\partial q_j}(\mathbf{R}_{0,k} \mathbf{r}_{k,q_i}) = \frac{\partial \mathbf{R}_{0,k}}{\partial q_j} \mathbf{r}_{k,q_i} + \mathbf{R}_{0,k} \frac{\partial \mathbf{r}_{k,q_i}}{\partial q_j} = \mathbf{R}_{0,k,q_j} \mathbf{r}_{k,q_i} + \mathbf{R}_{0,k} \mathbf{r}_{k,q_i,q_j} +$$ +将这两部分结果合并,得到补充后的公式: +$$ +\mathbf{r}_{0,b,q_i,q_j} = \sum_{k=0}^{b-1} \left( \mathbf{R}_{0,k,q_i,q_j} \mathbf{r}_k + \mathbf{R}_{0,k,q_i} \mathbf{r}_{k,q_j} + \mathbf{R}_{0,k,q_j} \mathbf{r}_{k,q_i} + \mathbf{R}_{0,k} \mathbf{r}_{k,q_i,q_j} \right) \tag{1.18c} +$$ + +--- + +### 推导 (1.18d): $\mathbf{R}_{0,b,q_i,q_j}$ (二阶姿态导数) + +这是对 (1.18b) 的结果再求关于 $q_j$ 的偏导数。这个推导过程比较繁琐,需要对 (1.18b) 的两个主要加项分别求导。 + +**第一项的导数**: +$$ +\frac{\partial}{\partial q_j} \left[ \left( \sum_{m=0}^{b-1} \left( \prod_{l=0}^{m-1} \mathbf{O}_l \right) \mathbf{O}_{m,q_i} \left( \prod_{l=m+1}^{b-1} \mathbf{O}_l \right) \right) \mathbf{S}_b \mathbf{B}_b \right] +$$ +这本身是一个乘积的导数,其中第一部分是一个求和。应用乘法法则,并对求和部分再次应用乘法法则的推广形式,会得到一个非常复杂的表达式,包含二阶导数项 $\mathbf{O}_{m,q_i,q_j}$ 和两个一阶导数的乘积项 $\mathbf{O}_{p,q_j} \cdots \mathbf{O}_{m,q_i}$。 + +**第二项的导数**: +$$ +\frac{\partial}{\partial q_j} \left[ \left( \prod_{l=0}^{b-1} \mathbf{O}_l \right) \mathbf{S}_b \mathbf{B}_{b,q_i} \right] +$$ +同样应用乘法法则,对连乘项和 $\mathbf{B}_{b,q_i}$ 分别求导。 + +将所有部分组合起来,得到一个完整的、但非常冗长的表达式。为了清晰起见,我们分块表示: +$$ +\mathbf{R}_{0,b,q_i,q_j} = \text{Term1} + \text{Term2} + \text{Term3} + \text{Term4} +$$ +其中: +* **Term1 (二阶导数项)**: + $$ + \left( \sum_{m=0}^{b-1} \left( \prod_{l=0}^{m-1} \mathbf{O}_l \right) \mathbf{O}_{m,q_i,q_j} \left( \prod_{l=m+1}^{b-1} \mathbf{O}_l \right) \right) \mathbf{S}_b \mathbf{B}_b + \left( \prod_{l=0}^{b-1} \mathbf{O}_l \right) \mathbf{S}_b \mathbf{B}_{b,q_i,q_j} + $$ +* **Term2 (交叉导数项,对 $\mathbf{O}$ 求导)**: + $$ + \sum_{m=0}^{b-1} \left[ \left( \sum_{p=0}^{m-1} \left( \prod_{l=0}^{p-1} \mathbf{O}_l \right) \mathbf{O}_{p,q_j} \left( \prod_{l=p+1}^{m-1} \mathbf{O}_l \right) \right) \mathbf{O}_{m,q_i} \left( \prod_{l=m+1}^{b-1} \mathbf{O}_l \right) \right] \mathbf{S}_b \mathbf{B}_b + $$ + $$ + + \sum_{m=0}^{b-1} \left[ \left( \prod_{l=0}^{m-1} \mathbf{O}_l \right) \mathbf{O}_{m,q_i} \left( \sum_{p=m+1}^{b-1} \left( \prod_{l=m+1}^{p-1} \mathbf{O}_l \right) \mathbf{O}_{p,q_j} \left( \prod_{l=p+1}^{b-1} \mathbf{O}_l \right) \right) \right] \mathbf{S}_b \mathbf{B}_b + $$ +* **Term3 (交叉导数项,对 $\mathbf{O}$ 和 $\mathbf{B}_b$ 求导)**: + $$ + \left( \sum_{m=0}^{b-1} \left( \prod_{l=0}^{m-1} \mathbf{O}_l \right) \mathbf{O}_{m,q_i} \left( \prod_{l=m+1}^{b-1} \mathbf{O}_l \right) \right) \mathbf{S}_b \mathbf{B}_{b,q_j} + $$ + $$ + + \left( \sum_{m=0}^{b-1} \left( \prod_{l=0}^{m-1} \mathbf{O}_l \right) \mathbf{O}_{m,q_j} \left( \prod_{l=m+1}^{b-1} \mathbf{O}_l \right) \right) \mathbf{S}_b \mathbf{B}_{b,q_i} + $$ +* **Term4 (对 $\mathbf{B}_b$ 的交叉导数项)**: + $$ + \left( \prod_{l=0}^{b-1} \mathbf{O}_l \right) \mathbf{S}_b \mathbf{B}_{b,q_i,q_j} + $$ + *注意:这个Term4已经包含在Term1中了,为了避免重复,我们将最终公式合并。* + +合并后的完整公式为: +$$ +\begin{aligned} +\mathbf{R}_{0,b,q_i,q_j} = & \sum_{m=0}^{b-1} \sum_{p=0, p \neq m}^{b-1} \left( \cdots \mathbf{O}_{p,q_j} \cdots \mathbf{O}_{m,q_i} \cdots \right) \mathbf{S}_b \mathbf{B}_b \\ +& + \sum_{m=0}^{b-1} \left( \prod_{l=0}^{m-1} \mathbf{O}_l \right) \mathbf{O}_{m,q_i,q_j} \left( \prod_{l=m+1}^{b-1} \mathbf{O}_l \right) \mathbf{S}_b \mathbf{B}_b \\ +& + \left( \sum_{m=0}^{b-1} \left( \prod_{l=0}^{m-1} \mathbf{O}_l \right) \mathbf{O}_{m,q_i} \left( \prod_{l=m+1}^{b-1} \mathbf{O}_l \right) \right) \mathbf{S}_b \mathbf{B}_{b,q_j} \\ +& + \left( \sum_{m=0}^{b-1} \left( \prod_{l=0}^{m-1} \mathbf{O}_l \right) \mathbf{O}_{m,q_j} \left( \prod_{l=m+1}^{b-1} \mathbf{O}_l \right) \right) \mathbf{S}_b \mathbf{B}_{b,q_i} \\ +& + \left( \prod_{l=0}^{b-1} \mathbf{O}_l \right) \mathbf{S}_b \mathbf{B}_{b,q_i,q_j} +\end{aligned} \tag{1.18d} +$$ +其中第一行的 `(...)` 表示根据 $p$ 和 $m$ 的相对位置,将导数项插入到连乘积的正确位置。这是一个非常复杂的表达式,但在数值计算中,它是通过对一阶导数表达式进行有限差分或自动微分来获得的,而不是直接实现这个解析形式。 + +### 总结 + +补充完整的公式组 (1.18) 如下: +$$ +\mathbf{r}_{0,b,q_i} = \sum_{k=0}^{b-1} (\mathbf{R}_{0,k,q_i} \mathbf{r}_k + \mathbf{R}_{0,k} \mathbf{r}_{k,q_i}) \tag{1.18a} +$$ +$$ +\mathbf{R}_{0,b,q_i} = \left( \sum_{m=0}^{b-1} \left( \prod_{l=0}^{m-1} \mathbf{O}_l \right) \mathbf{O}_{m,q_i} \left( \prod_{l=m+1}^{b-1} \mathbf{O}_l \right) \right) \mathbf{S}_b \mathbf{B}_b + \left( \prod_{l=0}^{b-1} \mathbf{O}_l \right) \mathbf{S}_b \mathbf{B}_{b,q_i} \tag{1.18b} +$$ +$$ +\mathbf{r}_{0,b,q_i,q_j} = \sum_{k=0}^{b-1} \left( \mathbf{R}_{0,k,q_i,q_j} \mathbf{r}_k + \mathbf{R}_{0,k,q_i} \mathbf{r}_{k,q_j} + \mathbf{R}_{0,k,q_j} \mathbf{r}_{k,q_i} + \mathbf{R}_{0,k} \mathbf{r}_{k,q_i,q_j} \right) \tag{1.18c} +$$ +$$ +\mathbf{R}_{0,b,q_i,q_j} = \frac{\partial}{\partial q_j} \left( \mathbf{R}_{0,b,q_i} \right) \quad \text{(其展开式如上文推导所示)} \tag{1.18d} +$$ +[Timestamp: 2025/08/08 09:46:57] \ No newline at end of file diff --git a/书籍/力学书籍/CASEstab_theory_manual/auto/CASEstab_theory_manual.md b/书籍/力学书籍/CASEstab_theory_manual/auto/CASEstab_theory_manual.md index 778fd19..df29d20 100644 --- a/书籍/力学书籍/CASEstab_theory_manual/auto/CASEstab_theory_manual.md +++ b/书籍/力学书籍/CASEstab_theory_manual/auto/CASEstab_theory_manual.md @@ -301,7 +301,7 @@ In the following, the substructure­index $b$ are omitted for brevity. 在下文中,为了简洁,子结构下标 $b$ 被省略。 -# Mass matrix +### Mass matrix Inserting (1.12) into (1.8a), expanding and sorting the terms into the ${2\times2}$ block matrix form yield the mass matrix elements $$ @@ -356,17 +356,17 @@ $$ $$ Another volume integral is the “asymmetric half” of the derivative of the symmetric inertia matrix - +另一个体积积分是对称惯性矩阵导数的“非对称半部分” $$ -\mathbf{l}_{b a s e,q_{i}}=\int_{\mathcal{V}}\rho\,\mathbf{r}_{1,q_{i}}\mathbf{r}_{1}^{T}d\mathcal{V}+\int_{\mathcal{V}}\rho\,\mathbf{r}_{1}\mathbf{r}_{1,q_{i}}^{T}d\mathcal{V}=\int_{\mathcal{V}}\rho\,\mathbf{r}_{1,q_{i}}\mathbf{r}_{1}^{T}d\mathcal{V}+\left(\int_{\mathcal{V}}\rho\,\mathbf{r}_{1,q_{i}}\mathbf{r}_{1}^{T}d\mathcal{V}\right)^{T}=\mathbf{A}_{b a s e,i}+\mathbf{A}_{b a s e,i}^{T} +\mathbf{I}_{b a s e,q_{i}}=\int_{\mathcal{V}}\rho\,\mathbf{r}_{1,q_{i}}\mathbf{r}_{1}^{T}d\mathcal{V}+\int_{\mathcal{V}}\rho\,\mathbf{r}_{1}\mathbf{r}_{1,q_{i}}^{T}d\mathcal{V}=\int_{\mathcal{V}}\rho\,\mathbf{r}_{1,q_{i}}\mathbf{r}_{1}^{T}d\mathcal{V}+\left(\int_{\mathcal{V}}\rho\,\mathbf{r}_{1,q_{i}}\mathbf{r}_{1}^{T}d\mathcal{V}\right)^{T}=\mathbf{A}_{b a s e,i}+\mathbf{A}_{b a s e,i}^{T}\tag{1.27} $$ where the notation $\begin{array}{r}{\pmb{\mathsf{A}}_{b a s e,i}\;\equiv\;\int_{\mathcal{V}}\!\rho\,\pmb{\mathsf{r}}_{1,q_{i}}\pmb{\mathsf{r}}_{1}^{T}d\mathcal{V}}\end{array}$ is introduced for this volume integral. Finally, the last integral in (1.22c) defined the entries of the local mass matrix of the substructure $\pmb{\mathbb{M}}^{11}$ independent of the base motion. - -# Gyroscopic matrix +其中引入了符号$\begin{array}{r}{\pmb{\mathsf{A}}_{b a s e,i}\;\equiv\;\int_{\mathcal{V}}\!\rho\,\pmb{\mathsf{r}}_{1,q_{i}}\pmb{\mathsf{r}}_{1}^{T}d\mathcal{V}}\end{array}$来表示这个体积积分。最后,(1.22c)中的最后一个积分定义了子结构局部质量矩阵$\pmb{\mathbb{M}}^{11}$的各项,其与基础运动无关。 +### Gyroscopic matrix陀螺矩阵 Inserting (1.12) into (1.8b), expanding and sorting the terms into the $_{2\times2}$ block matrix form yield the gyroscopic matrix elements - +将 (1.12) 代入 (1.8b),展开并整理各项成 $2\times2$ 块矩阵形式,得到陀螺矩阵元素。 $$ \begin{array}{l}{{g_{i j}^{00}=2\displaystyle\int_{\mathcal{V}}\rho\left(\mathbf{r}_{0,q_{i}}^{T}\dot{\mathbf{r}}_{0,q_{j}}+\mathbf{r}_{0,q_{i}}^{T}\dot{\mathbf{R}}_{0,q_{j}}\mathbf{r}_{1}+\dot{\mathbf{r}}_{0,q_{j}}^{T}\mathbf{R}_{0,q_{i}}\mathbf{r}_{1}+\mathbf{r}_{1}^{T}\mathbf{R}_{0,q_{i}}^{T}\dot{\mathbf{R}}_{0,q_{j}}\mathbf{r}_{1}\right)d\mathcal{V}}}\\ {{g_{i j}^{01}=2\displaystyle\int_{\mathcal{V}}\rho\left(\dot{\mathbf{r}}_{0,q_{j}}^{T}\mathbf{R}_{0}\mathbf{r}_{1,q_{i}}+\mathbf{r}_{0,q_{i}}^{T}\dot{\mathbf{R}}_{0}\mathbf{r}_{1,q_{j}}+\mathbf{r}_{1}^{T}\mathbf{R}_{0,q_{i}}^{T}\dot{\mathbf{R}}_{0}\mathbf{r}_{1,q_{j}}+\mathbf{r}_{1}^{T}\dot{\mathbf{R}}_{0,q_{j}}^{T}\mathbf{R}_{0}\mathbf{r}_{1,q_{i}}\right)d\mathcal{V}}}\\ {{g_{i j}^{11}=2\displaystyle\int_{\mathcal{V}}\rho\mathbf{r}_{1,q_{i}}^{T}\mathbf{R}_{0}^{T}\dot{\mathbf{R}}_{0}\mathbf{r}_{1,q_{j}}d\mathcal{V}}}\end{array} $$ diff --git a/工作总结/周报/周报89-郭翼泽.docx b/工作总结/周报/周报89-郭翼泽.docx new file mode 100644 index 0000000000000000000000000000000000000000..8a26c59b9262f564651d0cefc60afab63d165b7c GIT binary patch literal 22261 zcmeFXgLh|7lRqBYwv&l%+qP}LW83z`#)OkhY}-yIw#^BDna`em_Sv(0e*eIJ?>SYs z@9pZY#;b01-EKu0P%tzg2p}jRARuBOXzOqAUcf*=)et~Hs6bF4IwB7CE@t*F2CANp zX3l!_9(J}wgm+KidP6I)w2vrja1dJHwa~i_}1;TlA0kxbZ{V~eI_3f(T=iv0ByZ>=^;oaL4 zDqG~NHvZ?Vw!3hE8Xps0_9r8xG};}?OS*{326SKpLV+K`^x?`{c2x0{l_US07yM_- zqmjS*X$t*0aXvra343DIbQhs&rB)z!(&Ups)(z$t+CD!)ffWCn$r2>uG+%w?$bVTR z?3c+JIGNcxGtmF#|Ibwa58LOzb-gO7*Sen(PVg%DJ$SZL>31(ykvxOR%o^4zB$SSn zEb7{d_43C%@5%~@-ieXK_}qN*jF)q^xa)R`-Zf5|8hlhI^wJ;wex27251`c0juIx1 zCC6R3tiwn1_c2l_sd1rxIRqFjL5@>9AW zOMV8^;*zzbjyGflpIBEIe%lnbAB?#`-FFtcg!sPAUwQ+or^zkMvDQ=%v^chm4CL8~ z##Jyl*B!H`UPawygOQ=M&;`(u46i=sx+vNoM^T5^0_<1BS`7v}4!GHRLU&(|>wnq@ z9gU#A3nUPb2saQA^4FlaJ2;s#m^zra+I{)8zYgtON6UF$9MAtswmW$ED*yF1fw9S! zCBupbJD*T6(NsrlS<)%{o=P#_D(R3!P>NEbKan3P9fL9<#4lak?RG%pxCVi+?q+02 zN^ehgDCwj9b?vkBQ*Yd2O5V!aR=LS`a7JQx#fp_6*>yGnjZXmO^U?Sb4L5!@E?*|d z`uJATN4sgyLZbU^SC)zx+gK^t^&13{3y%`>V4_DaU;->?#aL(w?6sjZBFzYw>!`uf zG9q!DsxT%6PDa=fO{9}&o>_FYsn@3?UjfFAHvqM)us|wJ5hR$HC^7=P*J-~T2V#i{ zD%25b4KBnT7>sP7&YZH)gc2uEmkl^k4;Z*6GvUW&f;Ni>kzkb%Rx}3m%CASH(q$Ni}8LU3gjWz^)a1 zohkb9?94@wv3h;*5*>~uZ3t2F1sY>{xlwmgq!?Udd`VM-Ll}-B+9T+iRmHTYwvnHrWV^Clj#FL4=r^#QEFepzxE9S2EZcyyVu)rXb(;QZF4Gy86MvjD7)bp0ST^1*6O zj|PTn>Le!{bKu&KLZRA&47G(7(UWcg{0xnUt>2;JIaVa{32pC0-H{l@l#a4jln<57 zSZw9NCIp(n2rh#K$`qnZDKsm^d#TimawY6 zXxclK-sh3q_Z!G#zI;?&cx!D|V=(l>sQZFek?*7^jJT<9VGO3c28ge!U z&iM*Fr*Dk>-Cjy}S?I3H@VKB_f@@f4t3`l7+C^Y|8~QTMraN@YLm@3w4GXI!ETsOt zzA>COlVI~+40I$JOmw*>ldX}G6;BaV7tS2o75O>!ki_SYsjbV$4vW-c`{ql!-;<^e zebArD&7EiDt8?+keINW}+qRNB#5S(1WQM#AoE~toZ1$cQ6O2}@C)fv{bVgJ=F>Scr z_#aMN8=mg9?*#0ee$K%wik6wBEv&A)!u`Ne2z{g>+!Sm+D|!wIU9Raxl+&g+Xj@o^ zniPYxXyD~~6b%9Uax2M!4LhUYtIo>nuy7h3e8vKvhy|fV)FTXJ-4+uGNK20lH!Z@pBCtD-__2T<} z;Wz7#?LU)ljgWz}a7W$?0TFmhd6z{G@13~8x*-85ujC02hKG^uygI90ou6HH8Cu_Y z`OBDNdRNGDNmOE6(+#1v-+b)cmyG+_CkFd<*ZYH${A!ZDi1O4La(YwkKPT&Z(dE@B zAT(NTmqebH*HRxUFQdmHvzGbK=~FNX+hwvY; z^*rAXb~XecRvw!-(>`sh{B-ltx0}s!7C)Y zFk?5tOY}0SL_k(|3PoIi`-_^q4b(~4lb6mjT>WZH;Tg&z6lJKoo zW3}@@zx%H4VOgdFPR_*FIn&GdRf9WAPG$9c_T46`&;!K5=d57^Gp;{^54#`16z+ST zU7N#ZiwsR_qsFB{{KnbOw|u_!7X4hk8pLx;{@5K#xdJes@Up2gsuV#Y=9|kN0WaKu0va9*5fwT>)6z zx#p3EPAs2|K*;$0U@l4b-J7bn;D%^1Vx7a#{Q$V?rStB3f+h@8p`_jp+5=zgBo;VG zey8m3`L|-j-f+d3@aSVO7f@AVyD183a5vfD1`i6H^Awf=5RD?^aWrvI=@f!qcdmPt zz3mTMPZHMMA9(LyYuNwkqS+-=E%CpccNZ8C5FQW|@INm4Ki0AT?x_EBO$+=Lett>+ z-@d9+CjW+CAy<+eBKtf5<$NO5GR%+#nh;3Gq{(>4rNmC~+eb|?DU}~p1U~C^Zin+D zkLIr%mB*+t7pyR8L(tJcGJ38nP>;FY>%6~4k_M!yV~JLv((LNbDko_urR+zWHVjFR zg4Ao%EIoGD)9CK!hP;4WzBRIUl5u2)A^v(xfWKBts%q8psy!cI`K=a|p?7e52MCbq zaMg1s=RI@U0-ei%lDEgqE?|XEFbu!ZkTtOwdiD%kOMt_O&~1N=V4~s=2~U7(6dyAy zz)+h=LNrEifW$$k)#04zdS*4{y?h0UseG4Yl;MwXm4xbnVWZPYMU1`rhLF}jf zLv$%D>?3sZc%?-<03DL|#=VO8g^B+OFV=ITs_w7o=o%IX2<1!SA9$HNIJnq5xR^Qr zT>>_wt=VTYB86SiJm4ce;evXLuf{r6IcbnzfN~DeQa%%{(Y8An;4;qC#s>V*#bPn% z|0M8+sBw@dbB@y-Ntw+#Gw`elrZQHNM&x;V`dPL*M47gHC-gNt3<0} zD)Xe87NYdtH;Ck75ov@MM@|#8k0g7NRK|#h1CzDt-6FO-kwE?9q57t0wbtsvMJGUk zI(h6Riny+Foe*mby0jt&2Z?hYV5&+%VStKaqWOuxF&vWOhIWbHU$A@gBd7q@)W^s|1!!$xFMH=)ycBuwB0EE#MV5Ndd~F* z30XJAAzPrXhEq`A5vUnRmzj2=yn%#8zRG2Q)q@aw^RH-yl8x-VHdKpJ)Pp#x$jh!f z%wx0yZfCiabP-^5)Ef2-pUgi8(YoIB!Yq$fu^&a<4@)vzbk#4ol`*b*219C}N#YDV z%Xjw8(d`E&CSE;E6D*5_f2?Gmnxh4?CPMmHV{vM`Axh+$J8Y|OqbmhtDpC#)!jB&I zqB>wXyJPD_~*1o=-bVWe*$Ji9&1shUR zgZ*xcTp|GxEC^BjacLPvrop@99--2+$0-JerfZDk(WUVivL8WdcIX{)4wkC3H{*!~ zFQbWN0hqUfzXO+HA|nX!a8o z4f|)Bpa^efEl7$R`>_) z$kqR#eU-A{5X>D_0cKLo@jY;`3>b{B2PHA^yI8;GGF(90c~iEFp*CB#wFd3C3y?F! zsz8T9U0_Fk803&xgxA_j4cbsP`JtUmK9D6$>vX|I3OTVDNQ|H`&TbNQNZP$0)fQ<| zL*RC^APo1`h=VsKkuQ3;x-Jd(CJkjZrkIa=R$!I#&u1jX{1k^=fqkk@QH5osdnjF| z;)zlQ!=``XZZ|2^6#q+Rs$?VgFWj4gorlvz-IsmAxW$SY`hd`p6@@2DY-HJU%>Dl4 zGREDF#PMO9Al0zH`g%CZRJIy7HrAZxxv~)!KOZeUbiA8?nB6q8;Y-5Z$v#Q=Y0mHY z5nv_fDE=;019f}KZ^%$jv7>ui!a=g&HuLm63ETP9pOQ1WqOCrw z+#vj4;m!>{fxYwfyLyTU2nhW@zwR!UW_D%_|8S;%Vtg$f8(axAKZbh&+Si)nrpo9@ zyy8?ejyhCS8Y)k`pW^K%la~=0iTKDM#Gcfl!o+l*mihN3h$XBuf+DXopUU4uSl^Lz zGEy6O=4j=OafR#bs#<-HCOD3=xttrk|BQ7)>4YaRi|(fBb*cWM!+JH1*v&WFBDjZz zUo*xV5DAci(|LqrejPh3%hQFx(?Tn-662Y!9S+oNTeqHo2fxi{uY<)%PoeE5^}aGVIX+l|bjbA!yS3{j zV|)@kY%eOQsP{v82B2HEq<^XbG_efm^!m9}N%uenbnRO=9}-NT+SbE)S*0(a&7Jhr_aO5FS}U@3cMvBqLS0*CTCWBy~dlAdY!mc>_dXlr*z(pb*AH zW^l&@h-~+<*gZV~XM!7X?mtE_D7F_*0>wQTidEv^dd`fBf!(2c@r7f(+vu0aw2g2e z4+l?JquarI3asoL2FE*3L__$P%kPDM%&rgi9S{XD?Wbjvnn1xDyCct?w*~u1V_^f% z=znnoVaqWKzG}0U2HiEBsMshGyZO|i}hd*cej#q}TwpFLVo@Mc)DD@Yl@im9&#QLO2LdR2}2 z!C^P3+L<`g8f%YS_6F=*RT(ssaU+8yDSY!$e=fnj5opda~DE;{V`S*czKRncu7V92^G<2@4IoswxP7loF`lv?sCw4c<5 zP~n7*2<~8Md@ev_;CU`nM3kjBM;kz{HyK~}*hJ1(2&5p)*sb(ylsB;QF-hK>FzV#A z=KjNngHHV8v_EiC-#4Ys2Q#9w&A5ji; zXdcm+Nm3MwMbYO@@j5C|+K=x^Yi=D;XXw)K%^Hps^5rv*Ym35bu9XM5I`pnQsgQk? zyfI_;zuXLbR)_2VjC-?nJ%R{mr~LlzgMuDe5gaY8+1bOOA9pCDP&@IiU9wfh z&eJGd|N9a%+rCW6(yLLvK6RKB0v3(`q`MOr_2 zQl;0*n{oNd-VN<->h1=Q`Z}VP5B>jFpBN@f=+gTY>RhV*+Y->(%*DmZ-r_$39$g&= zyw+4d1H;eY{G-K)r)WmE9vj}k957OaTisK7t|* zZf^hc<|BWv_pQ%|z5d0ft&8Kv3vAcAP5o-~pHo+E?URcK2X1c5Kie)4`%4W_J$Pa& z?Irx<2_8hREX2=lhU)8!dFC;qfUdd+}tD4=TCm$EqPM;pdw>Qd@6+Z1z^3=!Y zy%DqD!%q0&_TI_|9f%#QYq7(%x;N%Ps?)xKV4fWXE^^@W#lC~a`eyHT(O6Hdek{w3 zJv_M*b)ED~yi9K`hx0rFr05JD>(l)W1P;sd23bs6|M(7c92@$5>ghpw7Mi?RSbr4$ zyzt@Ze(k!Hw{hWWyl~slYxYeV5s7aezdBRuJiZ|^95;HrG0S^@Vv-YZeQxp6@4sj^ z1uo|obim{=;UKUbQYzM{ugv4G3a@L|Lg6C&Z9$e};eA^AIZvYSdG7z1_cZ-&lfZwS zzKn3-W!ZGj4?k>iwSTdc(4u(R6p@RkJ39ckFf+!K;Dh_T=4u$wVlcgRkI!e*=ZfVf z;jy{p_B6indU@!@VQU$nfIq1jX>xQ|=S{@-e%F%zSw!d_t<~JI>B8dW;+1OS?BiOu zLEApe(ckjys(ICB=4Y=n5+jhSo!!RY;eXon(8Srn*M2r+FRn@$uE09LNvq%>C+UzEcwM)b&*{~8)4SKlB%#5>-NC#HhXE@uXZ6W) z+VlLf(c8g=(Vup+=G=$nfnR2Xgzo#;mktQsAFb(Emk2UU(8Ft8uM5NWkAQZv1Gr>` zjo_#8CzIwChS#0mkBeJRk=&;jdqDeZ>sDgkipa*B|5bB)bF}Mcsew<++IxeafYe7p zo}Iz?+9jZ63t!zu;r5|dWqy5Wqe6goKl#a*V`4N_c^+`H=IUwfm@-jx+!F|a!kpCT zr?CBS36PT2xvIhJel+6ygq<`N;v)b%c~ZH)f;wKFAMqzOx%~jlFL#mBD}&t)!!;Sy zx9Qq$(v5({2vi@Lihk7gVl+3uOM=q2>3znjnlm9Fdh-*W&k?fGORWf;nEg6P5_NlI zLTKNp^}1_mCDs3gRKL9~$yL(i-pUF(8J;elQ#gzTjCYPfN`Je@HkuH3LmU5zRAbFK zb!j7N18Ar-AP!1BXY7-!!ctP(287Uy35hzX8H3h+V|#_TshG{$?=Tc~z9cR*jrAzi zmI}3~aD{5&uxoH=sADs%h>ZeQv8#eghaABD##Goaa95|TC7ZR!stPK_Z#1CD2!gDj zGKl7pj6)+KIkX3M!jfyH$Zc{0pDBt=I>fb3K|L$nz$-?wMMQ6M5<8?d5loxZQ<)Qc z-O?=lJHk^hMs|e&tq7Nwl7fw_>(|0@wKV+>wWG2(uga9FoT8W1@0L)OgY01_s%_mg zIM+C5I`|Z7`W6*nk~vd^*8Wsw@M#HW|A_T2F&Ei%_HnedvnKK*^_6wOl&5rd3(bME zy^L{>QvFDngUmxKyu%;ObL?LAV}|;W2k>dZ`A!3SV0PFGCYD_8cKyMjw>xp35OJr#V;=;P$8HLBytXkxgb!{y?}?W7rS*iI76gLvn1$}1;C;Ak%#mdWdyhzFTTATW@` z!n*w^451{%y%Esh(y1vEs_R*%$ZJT_{LE>fR8*3|C=4Yei$M`d@CFR2>Y6B{22kgi zWCvgn)2cG@d-~;4xCQsp{jP&}Y<<+0h{dx*tVr__B2csN<%KQMBJgQTEfKAIoY(>} ziuPgNuxU~gvyxTzL?J@nbVX|LUF0XQxmL>9uZ9`2>oWSC0$72hF;fe~h~)LPs|qp#){!v- zgI^T16+wtmT3M!%!3HG=hsz6U%dav8cV4&&uwfh1TGS-8i2cI;(hovPg;k0)QHT0| z$yx}D8futd03<0|uZdt$Wf;0v>EE~=Fj5xTkf_SFo$8TE>>W;{)Zs_TRfFvMW{Ir& zt+aZ5ER$&BCYPqlFXFi4Bxz@3)Kf4&ern&yR@!RSRfGnpYpLOa6$>gf(vEOUwzwql zgs9r4vJJX%J}ys4>dqGL_wT`kVbJcu2 zc-YdprVtxT#c)%1l+Gq02TB^J3bhwS=5b=oOOfjaFJuVH3YjAhFSpfZ-f)W5hS8(R zoWUnnkUh$_;cRHmTjMX;^?MY3h(`=Ijmfg9wK#=ffj=xQD(CzZ5?TW2UpM(h9kFt?~h6Q3Wm)6M!P&D6M5znBHB@D+2PbO zWdRbsa+z)jzL~{5%Wj<$wwn{OMwSdfUobUyv^Qt|&MC~as#pP8!$K5F ztP5+lLU6Tij=iE@PfuAm#=b!bW?8Z77qrBHI_$TCi$=61vh^%=bd8Pb zC3w#wm#uBh)uh0FHpnq)xG79pI`%YC8C2`*%yWde)M`waD+e719hBX&4~n0fro+ zV>siQQ+JV8h5!U~#lHbgkF^{yMwMZBuEJEh0JkKWbAPBv&T+v0DZuZv_|RiI0x8yp zQeKLpKo^ySNdmg=`94M^jf-+QL^7KLC8-YIRa?qdFS`jrgEYI~n($|k61c?KlwtrP z+ltb8&>8WR@+Q=KP(7NP@jzmsAxyRt{OXOg@!1u~_)1c{Ab{aeo)O~+mOja0fCdx2 z-y0k?s9sOlr!NVMZMY7LSbi6PVuq65L?+y`hemND1uIO;U%nrO)RK7wBUaoZM-Ib? zSRws907MLaWL{%!v6JZ)1zETBO4StH;2DL)XqP*mB#iwaoC0{ zoI4uTE+9MA!(iTf3@cyN(}9M+eHZi(N(YP($1N>kO#e}(k14iIWISEoLDBt+I&zZZ z;c1a_!R(NwZrQad)pa>vo~X5@6f^Yj2mjsBW%su;V?Y)O*&}RM)X-)6H}8O=fF9HS zK8RATO$kI(#M&wFDdtjc$0;TWP|T)2HK+xUt7&jzu(<2s1O%O1A{RTNBxl>ipaqDp z*J8SZy!jK9yXGYrdAWU(@)`V2*FVl~#N zw(@^x1XL>bI?rm_{Uq5OMch<9KLUwF=by$5y74feP;3aS%n!lB>keIr3K3=|$eTdO z$Qa_(VyhS~hzO{BEs&11$pKI|2u()C(AcJus^H}n#O|K~N^)iWjS_egb)xG*gkc^V zQWTl9KarBITj7PNb}P`hu!Aow7y9;)f-k`716d+9zz$WwLb$VUv#(v`H0u_Bew99qs`XdFUWWhcb+df~MXjF9tx zLn|syWGp1Fu^b|!jmtGo0@g4!E~JE4;mh&wpUcwPQSw-_O~N

DTANPD8R1Zly>m|7m--o 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 literal 0 HcmV?d00001