4. 矩阵运算与线性代数初步

在工程计算中,矩阵不只是“把数字排成方阵”的存储形式,它同时承载着线性变换、方程组约束、信号映射和系统结构。MATLAB 的命名本身就来自 Matrix Laboratory,理解矩阵运算的几何与代数含义,是后续建模、仿真和数据分析的基础。本节围绕矩阵乘法、转置、逆、行列式、线性方程组求解、特征值与特征向量以及矩阵分解,说明它们在工程中“为什么用、怎么用、结果怎么判断”。

一、矩阵乘法与转置:变换的复合与视角的切换

矩阵乘法 C = A*B 要求 A 的列数等于 B 的行数。从线性变换角度看,若 y = A*x 表示把向量 x 映射为 y,那么 A*B 表示先施加 B 再施加 A 的复合变换。工程中常见的坐标变换、状态方程 x(k+1) = A*x(k) + B*u(k)、传感器标定矩阵都依赖这一语义。注意 MATLAB 中 * 是矩阵乘法,.* 是逐元素乘法,两者不可混用。

转置 A' 是共轭转置,对实矩阵即普通转置;A.' 是非共轭转置。工程上转置常用于把列向量与行向量对齐、构造法方程 A'*A*x = A'*b、计算协方差矩阵,以及在数据表中切换“样本×特征”和“特征×样本”的布局。转置不改变矩阵所描述的信息,只改变观察方向。

二、逆、行列式与可解性判断

方阵 A 的逆 inv(A) 满足 A*inv(A) = I,存在条件是行列式 det(A) 不为零。行列式的绝对值反映线性变换对体积的缩放倍数:二维中 det 为面积缩放因子,三维中为体积缩放因子;det 接近零意味着矩阵接近奇异,变换把空间“压扁”,此时逆矩阵数值上极不稳定。工程判断中,不应只看 det 是否严格等于 0,而应结合条件数 cond(A):条件数越大,输入微小扰动被放大得越厉害。

实践中应避免用 inv(A)*b 解方程组。显式求逆计算量大且放大舍入误差,MATLAB 推荐使用反斜杠运算符 A\b,它根据矩阵结构自动选择 LU、Cholesky 或 QR 等分解方法。

三、线性方程组求解:从超定到欠定

对 A*x = b,当 A 为方阵且非奇异时,x = A\b 给出唯一解。工程测量中更常见的是方程数多于未知数的超定系统,此时一般无精确解,A\b 返回最小二乘解,使残差范数 norm(A*x-b) 最小;若方程数少于未知数,则返回一个基础解,并可通过 pinv(A)*b 取得最小范数解。判断结果是否可信,应检查残差大小、矩阵秩 rank(A) 以及条件数,而不是只看是否报错。

下面给出一个可复现的教学示例(数据为假设的标定实验值):用一次多项式拟合三个标定点,构造超定方程并求最小二乘解。

% 假设标定数据:输入 u 与输出 y
u = [1; 2; 3; 4];
y = [2.1; 3.9; 6.2; 7.8];
A = [u, ones(size(u))];      % 模型 y = k*u + b
coef = A \ y;                % 最小二乘解 [k; b]
res  = norm(A*coef - y);     % 残差范数
r    = rank(A);              % 应为 2
c    = cond(A);              % 观察数值稳定性
fprintf('k=%.4f, b=%.4f, 残差=%.4f, 秩=%d, 条件数=%.2f\n', ...
        coef(1), coef(2), res, r, c);

运行后可得到斜率与截距的估计,并通过残差判断拟合质量。若残差明显偏大,说明一次模型不足以描述数据;若条件数过大,说明输入点分布过于集中,应补充激励范围更广的标定点。

四、特征值与特征向量:系统固有模态

满足 A*v = lambda*v 的非零向量 v 是特征向量,标量 lambda 是特征值。几何上,特征向量是变换后方向不变的向量,特征值是该方向上的伸缩倍数。工程意义非常直接:在结构振动中,特征值对应固有频率的平方,特征向量对应振型;在状态空间模型中,特征值决定系统的稳定性与响应速度,实部为负表示衰减;在主成分分析中,协方差矩阵的特征向量给出主方向,特征值大小表示该方向解释的方差。MATLAB 用 [V,D] = eig(A) 求解,D 的对角元为特征值,V 的列为对应特征向量。

五、矩阵分解的工程意义

矩阵分解把复杂矩阵拆成结构简单、数值稳定的因子,是工程计算的核心工具。LU 分解用于一般方阵求解与行列式快速计算;Cholesky 分解 chol 适用于对称正定矩阵,常见于最小二乘正规方程与协方差处理;QR 分解 qr 数值稳定性优于正规方程,适合超定系统;SVD 分解 svd 对任意矩阵适用,可做降维、去噪、病态问题求解与秩的可靠判定。选择分解方式的依据是矩阵结构(对称、正定、方阵、长方阵)与数值条件,而不是习惯。

矩阵运算与线性代数:从结构到工程判断 基本运算 A*B:变换复合(列=行) A.*B:逐元素乘法 A':共轭转置 / A.':转置 det(A):体积缩放因子 cond(A):扰动放大程度 rank(A):独立信息维度 线性方程组 A*x = b 方阵非奇异 → x = A\b 唯一解 超定 → 最小二乘解 欠定 → pinv 最小范数解 判断:残差、秩、条件数 避免 inv(A)*b,优先 A\b 分解:LU / Cholesky / QR 特征与分解 A*v = λ*v:方向不变 λ:固有频率² / 稳定性 v:振型 / 主方向 [V,D] = eig(A) SVD:降维、去噪、病态求解 QR:超定系统稳定求解 工程判断链:输入 → 结构识别 → 方法选择 → 结果校验 输入与结构 矩阵尺寸 m×n 是否对称/正定 秩与条件数 方法选择 方阵 → LU / A\b 正定 → Cholesky 长方阵 → QR / SVD 结果校验 残差 norm(A*x-b) 条件数是否过大 特征值实部符号 工程结论 解可信 / 需补数据 系统稳定 / 发散 模态频率与振型

六、把运算串成工程工作流

面对一个实际计算任务,合理的顺序是:先明确矩阵的尺寸与物理含义,再检查对称性、正定性、秩和条件数,据此选择求解或分解方法,最后用残差、条件数和特征值符号校验结果。例如在状态空间稳定性分析中,先由 A 矩阵计算 eig(A),若所有特征值实部为负则系统渐近稳定;若存在实部为正的特征值,则系统发散,此时继续求解稳态响应没有意义。又如在传感器标定中,先构造超定方程,用 QR 或反斜杠求最小二乘解,再检查残差是否落在测量噪声量级内,若残差过大应回到模型阶次或激励范围上找原因。

需要强调的是,MATLAB 的运算符语义与数学定义一致,但数值行为受矩阵条件影响。同一个方程组,用 inv(A)*b 与 A\b 在良态问题上结果接近,在病态问题上可能差异显著。养成“先看结构、再选方法、后验结果”的习惯,比记住某个函数名更重要。矩阵运算的价值不在于算出一个数,而在于通过分解、特征分析和残差校验,把工程问题转化为可判断、可解释的计算结论。