physics_simulation

第12章:系统辨识与参数估计

系统辨识是连接仿真与现实的关键桥梁。本章深入探讨如何从实验数据中准确估计物理系统参数,包括质量、惯性、摩擦系数等关键物理量。我们将从经典的最小二乘方法出发,逐步深入到贝叶斯框架下的参数估计,并特别关注接触参数的标定问题。这些技术对于构建高保真度的数字孪生系统至关重要,是实现仿真到现实成功迁移的基础。

12.1 最小二乘辨识

12.1.1 线性参数化模型

在机器人系统中,动力学方程往往可以重新整理为参数的线性形式:

\[\mathbf{Y}(\mathbf{q}, \dot{\mathbf{q}}, \ddot{\mathbf{q}}) \boldsymbol{\theta} = \boldsymbol{\tau}\]

其中 $\mathbf{Y}$ 是回归矩阵(regressor matrix),$\boldsymbol{\theta}$ 是待辨识的参数向量,包含:

对于第 $i$ 个连杆,其最小参数集表示为:

\[\boldsymbol{\theta}_i = [m_i, m_i r_{cx,i}, m_i r_{cy,i}, m_i r_{cz,i}, I_{xx,i}, I_{yy,i}, I_{zz,i}, I_{xy,i}, I_{xz,i}, I_{yz,i}]^T\]

12.1.2 激励轨迹设计

系统辨识的成功很大程度上取决于激励轨迹的质量。理想的激励轨迹应该:

  1. 持续激励条件:确保回归矩阵满秩
  2. 覆盖工作空间:遍历机器人的典型运动范围
  3. 激发动力学耦合:包含加速、减速、方向变化

常用的激励轨迹形式:

\[q_j(t) = \sum_{k=1}^{N_f} \left[ a_{jk} \sin(\omega_k t) + b_{jk} \cos(\omega_k t) \right]\]

其中频率 $\omega_k$ 的选择需要避免共振,通常选择为基频的整数倍。

优化激励轨迹的目标函数:

\[\min_{\mathbf{a}, \mathbf{b}} \text{cond}(\mathbf{Y}^T\mathbf{Y})\]

其中 $\text{cond}(\cdot)$ 是条件数,用于衡量数值稳定性。

12.1.3 递归最小二乘(RLS)

对于在线参数估计,递归最小二乘提供了计算高效的更新方式:

\[\hat{\boldsymbol{\theta}}_{k+1} = \hat{\boldsymbol{\theta}}_k + \mathbf{K}_{k+1} (\boldsymbol{\tau}_{k+1} - \mathbf{Y}_{k+1} \hat{\boldsymbol{\theta}}_k)\]

其中增益矩阵:

\[\mathbf{K}_{k+1} = \mathbf{P}_k \mathbf{Y}_{k+1}^T (\lambda + \mathbf{Y}_{k+1} \mathbf{P}_k \mathbf{Y}_{k+1}^T)^{-1}\]

协方差矩阵更新:

\[\mathbf{P}_{k+1} = \frac{1}{\lambda} (\mathbf{I} - \mathbf{K}_{k+1} \mathbf{Y}_{k+1}) \mathbf{P}_k\]

遗忘因子 $\lambda \in (0, 1]$ 用于处理时变参数。

12.1.4 物理一致性约束

辨识得到的参数必须满足物理约束:

  1. 质量正定性:$m_i > 0$
  2. 惯性张量正定性: \(\mathbf{I}_i = \begin{bmatrix} I_{xx} & I_{xy} & I_{xz} \\ I_{xy} & I_{yy} & I_{yz} \\ I_{xz} & I_{yz} & I_{zz} \end{bmatrix} \succ 0\)

  3. 三角不等式: \(I_{xx} + I_{yy} \geq I_{zz}, \quad I_{yy} + I_{zz} \geq I_{xx}, \quad I_{zz} + I_{xx} \geq I_{yy}\)

带约束的最小二乘问题可以表述为半定规划(SDP):

\[\begin{aligned} \min_{\boldsymbol{\theta}} & \quad \|\mathbf{Y}\boldsymbol{\theta} - \boldsymbol{\tau}\|^2 \\ \text{s.t.} & \quad \mathbf{I}_i(\boldsymbol{\theta}) \succeq \epsilon \mathbf{I}_3, \quad \forall i \\ & \quad m_i \geq \epsilon_m \end{aligned}\]

12.2 贝叶斯参数估计

12.2.1 概率框架

贝叶斯方法将参数估计问题转化为后验分布的推断:

\[p(\boldsymbol{\theta} | \mathcal{D}) = \frac{p(\mathcal{D} | \boldsymbol{\theta}) p(\boldsymbol{\theta})}{p(\mathcal{D})}\]

其中:

对于动力学辨识,似然函数通常假设为高斯噪声模型:

\[p(\boldsymbol{\tau} | \mathbf{q}, \dot{\mathbf{q}}, \ddot{\mathbf{q}}, \boldsymbol{\theta}) = \mathcal{N}(\mathbf{Y}\boldsymbol{\theta}, \boldsymbol{\Sigma}_{\tau})\]

12.2.2 共轭先验

选择共轭先验可以得到解析的后验分布。对于高斯似然,正态-逆威沙特分布是共轭先验:

\[p(\boldsymbol{\theta}, \boldsymbol{\Sigma}) = \text{NIW}(\boldsymbol{\mu}_0, \boldsymbol{\Lambda}_0, \nu_0, \boldsymbol{\Psi}_0)\]

后验更新公式:

\[\begin{aligned} \boldsymbol{\mu}_n &= \frac{\boldsymbol{\Lambda}_0 \boldsymbol{\mu}_0 + n\bar{\boldsymbol{\theta}}}{\boldsymbol{\Lambda}_0 + n} \\ \boldsymbol{\Lambda}_n &= \boldsymbol{\Lambda}_0 + n \\ \nu_n &= \nu_0 + n \\ \boldsymbol{\Psi}_n &= \boldsymbol{\Psi}_0 + \mathbf{S} + \frac{n\boldsymbol{\Lambda}_0}{n + \boldsymbol{\Lambda}_0}(\bar{\boldsymbol{\theta}} - \boldsymbol{\mu}_0)(\bar{\boldsymbol{\theta}} - \boldsymbol{\mu}_0)^T \end{aligned}\]

12.2.3 马尔可夫链蒙特卡洛(MCMC)

对于复杂的后验分布,MCMC方法提供了通用的采样框架。Hamiltonian Monte Carlo (HMC) 特别适合高维参数空间:

动量变量引入: \(p(\boldsymbol{\theta}, \mathbf{p}) = p(\boldsymbol{\theta}) p(\mathbf{p}) = p(\boldsymbol{\theta}) \mathcal{N}(\mathbf{0}, \mathbf{M})\)

哈密顿动力学: \(\begin{aligned} \frac{d\boldsymbol{\theta}}{dt} &= \mathbf{M}^{-1} \mathbf{p} \\ \frac{d\mathbf{p}}{dt} &= -\nabla_{\boldsymbol{\theta}} U(\boldsymbol{\theta}) \end{aligned}\)

其中 $U(\boldsymbol{\theta}) = -\log p(\boldsymbol{\theta} \mathcal{D})$ 是势能函数。

12.2.4 变分推断

变分推断通过优化寻找最接近真实后验的分布:

\[q^*(\boldsymbol{\theta}) = \arg\min_{q \in \mathcal{Q}} \text{KL}(q(\boldsymbol{\theta}) \| p(\boldsymbol{\theta} | \mathcal{D}))\]

对于平均场近似: \(q(\boldsymbol{\theta}) = \prod_i q_i(\theta_i)\)

坐标上升更新: \(\log q_j^*(\theta_j) = \mathbb{E}_{q_{-j}}[\log p(\boldsymbol{\theta}, \mathcal{D})] + \text{const}\)

12.3 接触参数标定

12.3.1 摩擦系数辨识

摩擦参数的辨识需要特殊设计的实验。对于库仑摩擦模型:

\[\mathbf{f}_t = \begin{cases} -\mu_s \|\mathbf{f}_n\| \frac{\mathbf{v}_t}{\|\mathbf{v}_t\|} & \text{if } \|\mathbf{f}_t^{\text{trial}}\| > \mu_s \|\mathbf{f}_n\| \\ \mathbf{f}_t^{\text{trial}} & \text{otherwise} \end{cases}\]

标定实验设计:

  1. 倾斜平面法:测量临界倾角 $\theta_c$ \(\mu_s = \tan(\theta_c)\)

  2. 拉力测试:施加水平力直到滑动 \(\mu_s = \frac{F_{\text{critical}}}{mg}\)

  3. 振荡运动:通过能量耗散估计动摩擦系数 \(E_{\text{lost}} = \mu_k mg \cdot d\)

12.3.2 恢复系数测量

恢复系数 $e$ 定义了碰撞前后的相对速度关系:

\[e = -\frac{v_{\text{sep}}}{v_{\text{app}}}\]

标准测量方法:

  1. 垂直跌落测试: \(e = \sqrt{\frac{h_{\text{bounce}}}{h_{\text{drop}}}}\)

  2. 摆锤碰撞:通过角度测量 \(e = \frac{\cos(\theta_{\text{min}}) - \cos(\theta_0)}{\cos(\theta_{\text{max}}) - \cos(\theta_0)}\)

  3. 高速摄像分析:直接测量碰撞前后速度

恢复系数的速度依赖性模型: \(e(v) = e_0 \cdot \exp(-\alpha v)\)

12.3.3 接触刚度与阻尼

柔性接触模型(Hunt-Crossley)的参数辨识:

\[\mathbf{f}_n = k_n \delta^n - c_n \delta^n \dot{\delta}\]

其中:

通过力传感器数据拟合:

\[\min_{k_n, c_n, n} \sum_i \|\mathbf{f}_{\text{measured},i} - \mathbf{f}_{\text{model},i}(k_n, c_n, n)\|^2\]

使用Levenberg-Marquardt算法求解非线性最小二乘问题。

12.3.4 接触面积与压力分布

对于面接触,压力分布的测量对于验证接触模型至关重要:

  1. 压力敏感膜:提供二维压力分布
  2. 触觉传感器阵列:高分辨率接触信息
  3. 光学方法:基于变形的压力推断

接触面积与法向力的关系(对于弹性接触): \(A = \pi \left(\frac{3FR}{4E^*}\right)^{2/3}\)

其中有效弹性模量: \(\frac{1}{E^*} = \frac{1-\nu_1^2}{E_1} + \frac{1-\nu_2^2}{E_2}\)

12.4 动力学模型验证

12.4.1 交叉验证策略

将数据集分为训练集和验证集,评估模型的泛化能力:

  1. k折交叉验证
    将数据分为k个子集
    for i = 1 to k:
        使用除第i个子集外的所有数据训练
        在第i个子集上验证
    计算平均性能指标
    
  2. 留一法(LOO-CV):k = n的特殊情况

  3. 时间序列分割:保持时间顺序的连续性

12.4.2 预测误差分析

定义归一化预测误差:

\[\text{NPE} = \frac{1}{N} \sum_{i=1}^N \frac{\|\boldsymbol{\tau}_{\text{pred},i} - \boldsymbol{\tau}_{\text{meas},i}\|}{\|\boldsymbol{\tau}_{\text{meas},i}\|}\]

频域分析通过传递函数评估:

\[H(\omega) = \frac{\mathcal{F}\{\boldsymbol{\tau}_{\text{pred}}\}}{\mathcal{F}\{\boldsymbol{\tau}_{\text{cmd}}\}}\]

相位和幅值裕度提供稳定性指标。

12.4.3 轨迹跟踪验证

在闭环控制下验证模型:

  1. 位置跟踪误差: \(e_p = \sqrt{\frac{1}{T} \int_0^T \|\mathbf{q}_{\text{ref}}(t) - \mathbf{q}(t)\|^2 dt}\)

  2. 力矩预测误差: \(e_{\tau} = \sqrt{\frac{1}{T} \int_0^T \|\boldsymbol{\tau}_{\text{model}}(t) - \boldsymbol{\tau}_{\text{real}}(t)\|^2 dt}\)

  3. 能量一致性: \(\Delta E = |E_{\text{model}} - E_{\text{real}}|\)

12.4.4 统计检验

使用统计方法验证模型假设:

  1. 残差白度检验(Ljung-Box test): \(Q = n(n+2) \sum_{k=1}^h \frac{r_k^2}{n-k}\) 其中 $r_k$ 是滞后k的自相关系数

  2. 正态性检验(Shapiro-Wilk test): 验证残差的高斯分布假设

  3. 异方差性检验(Breusch-Pagan test): 检测误差方差的非恒定性

12.4.5 模型选择准则

平衡模型复杂度与拟合质量:

  1. 赤池信息准则(AIC): \(\text{AIC} = 2k - 2\ln(L)\)

  2. 贝叶斯信息准则(BIC): \(\text{BIC} = k\ln(n) - 2\ln(L)\)

  3. 最小描述长度(MDL): \(\text{MDL} = -\ln(L) + \frac{k}{2}\ln(n)\)

其中 $k$ 是参数数量,$L$ 是似然值,$n$ 是样本数。

12.5 RL应用:真实机器人参数的获取

12.5.1 Sim-to-Real的参数鸿沟

仿真与现实之间的参数差异是策略迁移失败的主要原因之一。典型的参数不确定性来源:

  1. 制造公差:实际质量与CAD模型的偏差可达5-10%
  2. 装配误差:连杆长度、关节零位的微小偏差
  3. 磨损与老化:摩擦系数随使用时间变化
  4. 负载变化:抓取物体改变系统动力学

12.5.2 在线自适应辨识

强化学习训练过程中的参数自适应:

初始化: θ_sim 从制造商规格
while 训练进行中:
    1. 在真实机器人上执行探索动作
    2. 收集状态-动作-力矩数据 (q, q̇, q̈, τ)
    3. 使用RLS更新参数估计 θ̂_real
    4. 计算参数不确定性范围 Δθ = |θ̂_real - θ_sim|
    5. 在仿真中使用 θ ∼ Uniform(θ̂_real - Δθ, θ̂_real + Δθ)
    6. 训练策略对参数变化的鲁棒性

12.5.3 元学习框架下的快速适应

使用MAML(Model-Agnostic Meta-Learning)加速参数辨识:

\[\theta^* = \arg\min_\theta \sum_{i=1}^N \mathcal{L}(\theta - \alpha \nabla_\theta \mathcal{L}_i(\theta))\]

其中每个任务 $i$ 对应不同的机器人实例或工作条件。

12.5.4 主动学习策略

设计信息量最大的探索动作:

\[\mathbf{u}^* = \arg\max_{\mathbf{u}} I(\boldsymbol{\theta}; \mathbf{y} | \mathbf{u}, \mathcal{D})\]

其中 $I(\cdot;\cdot)$ 是互信息,衡量动作 $\mathbf{u}$ 对参数 $\boldsymbol{\theta}$ 的信息增益。

实践中使用近似方法:

12.6 历史人物:Åström与1971年自适应控制理论奠基

Karl Johan Åström(1934-)是现代控制理论的奠基人之一,他在1970年代开创性地将统计方法引入控制系统设计。

主要贡献

  1. 自适应控制理论(1971):
    • 提出了自校正调节器(Self-Tuning Regulator)
    • 将系统辨识与控制设计统一在一个框架下
    • 证明了双重控制(Dual Control)的最优性
  2. 最小方差控制(1970):
    • 针对随机系统的最优控制策略
    • 奠定了预测控制的理论基础
  3. 确定性等价原理(1973):
    • 分离估计与控制的理论依据
    • 简化了自适应控制器的设计

对现代机器人学的影响

Åström的工作直接影响了:

他的名言:”All models are wrong, but some are useful”深刻影响了系统辨识领域的哲学思考。

12.7 高级话题:神经系统辨识与物理引导学习

12.7.1 物理信息神经网络(PINN)

将物理定律作为神经网络训练的约束:

\[\mathcal{L} = \mathcal{L}_{\text{data}} + \lambda \mathcal{L}_{\text{physics}}\]

其中物理损失项: \(\mathcal{L}_{\text{physics}} = \|\mathbf{M}(\mathbf{q})\ddot{\mathbf{q}} + \mathbf{C}(\mathbf{q}, \dot{\mathbf{q}})\dot{\mathbf{q}} + \mathbf{g}(\mathbf{q}) - \boldsymbol{\tau}\|^2\)

12.7.2 神经常微分方程(Neural ODE)

将动力学建模为连续时间系统:

\[\frac{d\mathbf{x}}{dt} = f_\theta(\mathbf{x}, t)\]

其中 $f_\theta$ 是神经网络参数化的向量场。

优势:

12.7.3 哈密顿神经网络

保持能量守恒的神经网络架构:

\[\begin{aligned} \frac{d\mathbf{q}}{dt} &= \frac{\partial H_\theta}{\partial \mathbf{p}} \\ \frac{d\mathbf{p}}{dt} &= -\frac{\partial H_\theta}{\partial \mathbf{q}} \end{aligned}\]

其中 $H_\theta(\mathbf{q}, \mathbf{p})$ 是神经网络表示的哈密顿量。

12.7.4 高斯过程动力学模型

使用高斯过程捕获模型不确定性:

\[\mathbf{f}(\mathbf{x}) \sim \mathcal{GP}(m(\mathbf{x}), k(\mathbf{x}, \mathbf{x}'))\]

核函数选择:

稀疏高斯过程用于大规模数据: \(q(\mathbf{f}) = \int p(\mathbf{f} | \mathbf{u}) q(\mathbf{u}) d\mathbf{u}\)

其中 $\mathbf{u}$ 是诱导点。

12.7.5 可解释的混合模型

结合物理模型与数据驱动补偿:

\[\boldsymbol{\tau} = \boldsymbol{\tau}_{\text{physics}}(\mathbf{q}, \dot{\mathbf{q}}, \ddot{\mathbf{q}}, \boldsymbol{\theta}) + \boldsymbol{\tau}_{\text{residual}}(\mathbf{q}, \dot{\mathbf{q}}, \ddot{\mathbf{q}})\]

其中:

这种方法保持了可解释性,同时提高了预测精度。

本章小结

系统辨识是连接理论模型与实际系统的关键技术。本章介绍了从经典最小二乘到现代贝叶斯方法的参数估计技术,强调了物理一致性约束的重要性。关键要点:

  1. 最小二乘辨识提供了计算高效的参数估计方法,但需要精心设计激励轨迹
  2. 贝叶斯框架不仅给出点估计,还量化了参数不确定性
  3. 接触参数的准确标定对仿真保真度至关重要
  4. 模型验证需要多角度的评估,包括预测精度、能量一致性和统计检验
  5. 神经网络方法为复杂系统提供了灵活的建模工具,但需要与物理知识结合

核心公式回顾:

练习题

基础题

练习 12.1:最小二乘辨识 一个2自由度机械臂的动力学方程可以写成线性参数形式 $\mathbf{Y}\boldsymbol{\theta} = \boldsymbol{\tau}$。给定100组测量数据 $(q_i, \dot{q}_i, \ddot{q}_i, \tau_i)$,如何判断激励轨迹是否充分?

Hint:检查回归矩阵 $\mathbf{Y}$ 的秩和条件数。

答案 1. 构建回归矩阵 $\mathbf{Y}$ (100×10 对于2DOF机械臂) 2. 计算 $\text{rank}(\mathbf{Y})$,应该等于参数个数(10) 3. 计算条件数 $\kappa = \sigma_{\max}/\sigma_{\min}$ 4. 如果 $\kappa < 100$,激励充分;$\kappa > 1000$ 表示数值问题 5. 检查 $\mathbf{Y}^T\mathbf{Y}$ 的最小特征值,应远大于机器精度

练习 12.2:递归最小二乘 推导遗忘因子 $\lambda = 0.95$ 时,历史数据的有效窗口长度(即多少步之前的数据权重降到原来的5%)。

Hint:权重按 $\lambda^k$ 指数衰减。

答案 设第k步前的数据权重为 $\lambda^k$,要求: $$\lambda^k = 0.05$$ $$k = \frac{\ln(0.05)}{\ln(0.95)} = \frac{-2.996}{-0.0513} \approx 58.4$$ 因此约59步前的数据权重降到5%,有效窗口约60个采样点。

练习 12.3:摩擦系数测量 设计一个实验测量机器人关节的粘性摩擦系数。假设摩擦模型为 $\tau_f = b\dot{q}$,其中 $b$ 是粘性摩擦系数。

Hint:考虑恒速运动时的力矩平衡。

答案 实验设计: 1. 让关节以不同恒定速度 $\dot{q}_i$ 运动(如 0.1, 0.2, ..., 1.0 rad/s) 2. 测量维持恒速所需的力矩 $\tau_i$ 3. 在恒速下,$\tau_i = b\dot{q}_i$(忽略重力) 4. 用最小二乘拟合:$b = (\sum \dot{q}_i^2)^{-1} \sum \dot{q}_i \tau_i$ 5. 检查线性关系的R²值验证模型假设

挑战题

练习 12.4:贝叶斯参数估计 假设机器人连杆质量的先验分布为 $m \sim \mathcal{N}(1.0, 0.1^2)$ kg。经过n次测量后,后验分布为 $m \sim \mathcal{N}(\mu_n, \sigma_n^2)$。推导需要多少次独立测量才能将不确定性(标准差)降低到0.01 kg?

Hint:使用贝叶斯更新公式,假设测量噪声标准差为 $\sigma_m$。

答案 对于高斯先验和高斯似然: $$\frac{1}{\sigma_n^2} = \frac{1}{\sigma_0^2} + \frac{n}{\sigma_m^2}$$ 其中 $\sigma_0 = 0.1$,要求 $\sigma_n = 0.01$: $$\frac{1}{0.01^2} = \frac{1}{0.1^2} + \frac{n}{\sigma_m^2}$$ $$10000 = 100 + \frac{n}{\sigma_m^2}$$ $$n = 9900 \sigma_m^2$$ 如果测量噪声 $\sigma_m = 0.05$ kg,则需要 $n = 9900 \times 0.0025 = 24.75 \approx 25$ 次测量。

练习 12.5:物理一致性约束 证明对于任意刚体,其惯性张量必须满足三角不等式。提示:考虑主轴坐标系。

Hint:在主轴坐标系中,惯性张量是对角的。

答案 在主轴坐标系中,惯性张量: $$\mathbf{I} = \text{diag}(I_1, I_2, I_3)$$ 根据定义: $$I_1 = \int (y^2 + z^2) dm, \quad I_2 = \int (x^2 + z^2) dm, \quad I_3 = \int (x^2 + y^2) dm$$ 显然: $$I_1 + I_2 = \int (x^2 + y^2 + 2z^2) dm > \int (x^2 + y^2) dm = I_3$$ 同理可证其他两个不等式。物理意义:刚体不能退化为一维线段。

练习 12.6:主动学习 设计一个基于高斯过程的主动学习策略,用于机器人动力学模型的在线改进。定义获取函数(acquisition function)并说明其物理意义。

Hint:考虑预测不确定性和模型改进的权衡。

答案 获取函数设计: $$a(\mathbf{x}) = \sigma^2(\mathbf{x}) + \beta \cdot |\mu(\mathbf{x}) - f_{\text{physics}}(\mathbf{x})|$$ 其中: - $\sigma^2(\mathbf{x})$:GP预测方差(探索项) - $|\mu(\mathbf{x}) - f_{\text{physics}}(\mathbf{x})|$:与物理模型的偏差(利用项) - $\beta$:权衡参数 物理意义: 1. 高方差区域:模型不确定,需要更多数据 2. 大偏差区域:物理模型不准确,需要数据驱动补偿 3. 结合两者实现高效的数据收集 实施步骤: 1. 在状态空间采样候选点 2. 计算每个点的获取函数值 3. 选择值最大的点进行实验 4. 更新GP模型 5. 重复直到满足精度要求

练习 12.7:开放性思考题 在仿真到现实迁移中,是否应该让仿真参数完全匹配真实系统?讨论过度拟合真实参数可能带来的问题。

答案 不应该追求完全匹配,原因: 1. **过拟合风险**: - 完美匹配特定机器人,策略可能对微小变化敏感 - 失去对其他机器人的泛化能力 2. **参数时变性**: - 摩擦随温度、磨损变化 - 负载变化改变动力学 - 固定参数无法捕获这些变化 3. **测量局限性**: - 某些参数难以准确测量(如内部摩擦) - 测量本身有噪声和偏差 4. **更好的方法**: - 使用参数分布而非点估计 - 域随机化训练鲁棒策略 - 在线自适应补偿参数变化 - 学习对参数不敏感的策略 5. **实践建议**: - 核心参数(质量、长度)尽量准确 - 不确定参数(摩擦、阻尼)使用范围 - 保留10-20%的参数随机化 - 定期重新标定关键参数

常见陷阱与错误

1. 数值问题

问题:回归矩阵病态导致参数估计不稳定

症状

解决方案

# 使用SVD进行稳健求解
U, S, Vt = np.linalg.svd(Y)
# 截断小奇异值
threshold = 1e-6 * S[0]
S_inv = np.where(S > threshold, 1/S, 0)
theta = Vt.T @ np.diag(S_inv) @ U.T @ tau

2. 物理不一致

问题:辨识得到的参数违反物理定律

常见情况

预防措施

3. 激励不充分

问题:某些参数无法辨识或辨识精度差

诊断方法

# 计算Fisher信息矩阵
FIM = Y.T @ Y
# 检查可辨识性
eigenvalues = np.linalg.eigvals(FIM)
if min(eigenvalues) < 1e-6:
    print("参数不可辨识")

改进激励轨迹

4. 模型偏差

问题:使用错误的模型结构

例子

检测方法

5. 过度自信

问题:忽略参数估计的不确定性

后果

正确做法

最佳实践检查清单

实验设计

数据预处理

参数估计

模型验证

文档记录

实施集成