第1章:数学预备知识(一)——线性代数基础

各位同学好,我是老张。在飞控这行摸爬滚打了十几年,今天咱们来聊聊飞行器动力学模型降阶里最基础的数学工具——线性代数。

说实话,很多刚入行的工程师觉得线性代数就是一堆枯燥的公式。但在我眼里,它就像一把瑞士军刀,能帮我们把复杂的动力学问题拆解得明明白白。你想想看,一个六自由度的飞行器模型,动辄几十个状态变量,如果没有这些数学工具,根本无从下手。

1.1 特征值与特征向量——系统的“灵魂”

先说说特征值和特征向量。这个概念,说白了就是描述一个矩阵“拉伸”和“旋转”特性的核心参数。

定义很简单:对于一个方阵 A,如果存在非零向量 v 和标量 λ,使得 Av = λv,那么 λ 就是特征值,v 就是对应的特征向量。

为什么会这么重要?因为飞行器的动力学特性,比如模态频率、阻尼比,本质上就是系统矩阵的特征值。我在做某型无人机纵向稳定性分析时,就是通过特征值判断出短周期模态的阻尼比偏小,后来调整了控制增益才解决问题。

核心要点:特征值的实部决定系统的稳定性(负实部稳定),虚部决定振荡频率。特征向量则告诉我们每个模态的“形状”——哪些状态变量参与了这个模态的运动。

计算特征值的方法有很多,但工程上最常用的是 QR 算法。不过说实话,现在 MATLAB 和 Python 都封装好了,我们更关注的是怎么解读结果。

# Python 示例:计算系统矩阵的特征值
import numpy as np

# 假设一个简化的纵向动力学矩阵
A = np.array([[-0.5, 1.0, 0.0],
              [-2.0, -0.8, 0.0],
              [0.0, 0.0, -1.2]])

eigenvalues, eigenvectors = np.linalg.eig(A)
print("特征值:", eigenvalues)
print("特征向量:\n", eigenvectors)

个人经验:我建议你在做模态分析时,先把特征值画在复平面上。一眼就能看出哪些模态是稳定的,哪些可能有问题。我曾经有个项目,就是靠这张图发现了一个被忽略的螺旋模态不稳定。

1.2 奇异值分解(SVD)——矩阵的“解剖刀”

接下来是奇异值分解。如果说特征值只适用于方阵,那 SVD 就是“通吃”所有矩阵的利器。

任何 m×n 的矩阵 A 都可以分解为:A = UΣVᵀ。其中 U 和 V 是正交矩阵,Σ 是对角矩阵,对角线上的元素就是奇异值。

你可能会问:这玩意儿在飞控里有什么用?用处大了去了!

  • 模型降阶:通过保留最大的几个奇异值,可以近似原矩阵。这就是所谓的“截断 SVD”。
  • 系统辨识:在 ERA(特征系统实现算法)中,SVD 是核心步骤,用来提取系统的可控性和可观性子空间。
  • 传感器布局:通过分析观测矩阵的奇异值,可以判断哪些传感器对系统状态的估计最有效。

避坑指南:我曾经在做一个柔性机翼的模型降阶时,直接对所有奇异值做了截断,结果降阶后的模型在特定频率下完全失稳。后来才发现,有些小奇异值对应的模态虽然能量低,但却是结构的关键耦合模态。所以,截断前一定要做物理分析!

# SVD 分解示例
import numpy as np

# 假设一个 4×3 的传递函数矩阵
H = np.array([[1.0, 0.5, 0.2],
              [0.3, 2.0, 0.1],
              [0.1, 0.4, 3.0],
              [0.2, 0.3, 0.5]])

U, S, Vt = np.linalg.svd(H)
print("奇异值:", S)
print("保留前2个奇异值的近似:")
H_approx = U[:, :2] @ np.diag(S[:2]) @ Vt[:2, :]
print(H_approx)

1.3 矩阵范数——衡量“大小”的尺子

最后聊聊矩阵范数。说白了,就是给矩阵一个“长度”的概念。在模型降阶中,我们经常需要比较两个模型的“接近程度”,这时候范数就派上用场了。

常用的范数有几种:

范数类型 定义 工程含义
Frobenius 范数 ||A||F = √(∑aij²) 所有元素的平方和,类似向量的 2-范数
谱范数(2-范数) ||A||2 = σmax(A) 最大奇异值,代表系统的最大增益
1-范数 ||A||1 = maxj ∑|aij| 最大列和,反映输入到输出的最大影响
∞-范数 ||A|| = maxi ∑|aij| 最大行和,反映最坏情况下的输出

我的习惯:在做模型降阶误差分析时,我通常用谱范数。因为它直接对应系统的 H∞ 范数,能给出最坏情况下的误差上界。但如果你需要整体误差的“平均”水平,Frobenius 范数更合适。

举个例子,假设我们有一个全阶模型 G 和一个降阶模型 Ĝ,误差矩阵 E = G - Ĝ。如果 ||E||2 很小,说明降阶模型在所有频率下的响应都很接近原模型。但如果某个频率下误差很大,谱范数可能无法反映——这时候就需要结合频率响应分析了。

知识体系总览

下面这张图是我自己整理的,把这三个数学工具在飞控模型降阶中的关系画清楚了。

飞行器动力学模型降阶——数学工具关系图 特征值/特征向量 系统稳定性分析 模态频率与阻尼 状态解耦 奇异值分解 (SVD) 模型降阶(截断SVD) 系统实现(ERA) 传感器/执行器选择 矩阵范数 误差度量与界 模型逼近质量 鲁棒性分析 方阵特例 奇异值=谱范数 工程应用 平衡截断法 · 最优Hankel范数降阶 · 模态截断 系统辨识 · 控制器降阶 · 实时仿真

从这张图可以看得很清楚:特征值分析是基础,SVD 是核心工具,矩阵范数则是评价标准。三者环环相扣,缺一不可。

一点建议:刚开始学的时候,别急着背公式。先理解每个工具能解决什么问题。比如你拿到一个飞行器模型,先问自己:我要分析稳定性(特征值)?还是要降阶(SVD)?或者要评估误差(范数)?带着问题去学,效率高得多。

好了,这一章的内容就到这里。线性代数这块儿是后面所有降阶方法的基础,建议你花点时间把代码跑一跑,亲手算几个例子。下一章咱们会聊到更具体的模型降阶方法——到时候这些数学工具就会派上大用场了。

专注资料整理