云计算百科
云计算领域专业知识百科平台

第 18 章 · 线性方程组

矩阵最重要的应用之一,就是表示和求解线性方程组。本章讲清楚"Ax = b"到底是什么意思,以及如何求解。

18.1 什么是线性方程组

你肯定见过这种方程:

2x + y = 5
x + 3y = 10

两个未知数 x、y,两个方程。求 x、y 的值,就是解线性方程组。

"线性"指:每个方程里未知数都是一次的(没有 x²、没有 xy、没有 sin(x))。

18.2 用矩阵表示方程组

上面的方程组可以写成矩阵形式:

[ 2 1 ] [ x ] [ 5 ]
[ 1 3 ] [ y ] = [ 10 ]

也就是:

A · x = b

A = [ 2 1 ] x = [ x ] b = [ 5 ]
[ 1 3 ] [ y ] [ 10 ]

  • A:系数矩阵(未知数前面的系数)
  • x:未知数向量
  • b:常数向量(等号右边的数)

于是"解方程组"就变成了"已知 A 和 b,求 x"。

验证一下:A·x 展开就是

[ 2 1 ] [ x ] [ 2x + y ]
[ 1 3 ] [ y ] = [ x + 3y ]

等于 b,正好就是原来的两个方程!所以 Ax = b 就是线性方程组的矩阵写法。

18.3 解方程组的方法

方法一:代入消元(中学方法)

2x + y = 5 … ①
x + 3y = 10 … ②

从 ① 得 y = 5 – 2x,代入 ②:

x + 3(5 – 2x) = 10
x + 15 – 6x = 10
-5x = -5
x = 1

代回 y = 5 – 2×1 = 3。所以 x=1,y=3。

方法二:高斯消元(计算机用)

计算机用的是高斯消元:通过"行变换"把矩阵变成"阶梯形",再回代求解。核心操作:

  • 某一行乘一个数
  • 两行交换
  • 某一行加到另一行
  • 这些操作不改变方程组的解,但能把矩阵化简成容易求解的形式。

    你不需要手算高斯消元,Eigen 会帮你做。但理解"解方程组 = 消元"这个思想很重要,因为 Eigen 的 solve() 内部就是在做这类分解。

    18.4 解的存在性

    方程组可能有三种情况:

    情况例子说明
    唯一解 两条不平行的直线 交于一点
    无解 两条平行直线 永远不相交
    无穷多解 两条重合直线 处处相交

    几何上看,两个未知数两个方程 = 两条直线,解就是它们的交点。

    • 相交 → 唯一解
    • 平行 → 无解
    • 重合 → 无穷多解

    对应到矩阵:A 是否可逆(第 19 章)决定了是否有唯一解。

    18.5 用 Eigen 解方程组

    #include <Eigen/Dense>
    #include <iostream>

    int main() {
    Eigen::Matrix2d A;
    A << 2, 1,
    1, 3;
    Eigen::Vector2d b(5, 10);

    // 求解 Ax = b
    Eigen::Vector2d x = A.colPivHouseholderQr().solve(b);

    std::cout << "x = " << x.transpose() << std::endl; // 1 3

    // 验证
    std::cout << "A*x = " << (A * x).transpose() << std::endl; // 5 10
    return 0;
    }

    A.分解方法().solve(b) 就是 Eigen 解方程组的标准写法(第 29 章详解各分解方法的选择)。

    18.6 实际应用

    线性方程组是科学计算的核心:

    • 电路分析:基尔霍夫定律列出的方程
    • 结构力学:受力平衡方程
    • 经济模型:投入产出方程
    • 最小二乘拟合:拟合数据(第 36 章项目会用到)

    很多实际问题最终都归结为"解一个 Ax = b"。

    18.7 小结

    • 线性方程组 = Ax = b(A 系数、x 未知、b 常数)。
    • 几何意义:两条(或多条)直线的交点。
    • 解有唯一解、无解、无穷多解三种情况。
    • Eigen 用 A.分解().solve(b) 求解。

    下一章,学习行列式与逆矩阵,理解"可逆"和"唯一解"的关系。


    练习题

  • 把方程组 3x + y = 9; x + 2y = 8 写成 Ax = b 的矩阵形式。
  • 用代入消元手算上面方程组的解。
  • 用 Eigen 求解上面方程组,并验证结果。
  • 几何解释:为什么两个未知数两个方程对应两条直线?
  • 说说线性方程组无解、唯一解、无穷多解分别对应直线的什么位置关系。
  • 赞(0)
    未经允许不得转载:网硕互联帮助中心 » 第 18 章 · 线性方程组
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!