简介:《Linear Algebra with Applications》第十版是Steven J. Leon与Lisette de Pillis合著的线性代数经典教材,全球版由Pearson出版,在计算机革命背景下已成为比肩微积分的数学核心课程。PDF电子书完整收录全书8章共556页,覆盖线性代数课程研究组(LACSG)推荐的全部主题,包括矩阵运算、行列式、向量空间、线性变换、特征值与特征向量、内积空间等内容,并为每个章节配备MATLAB计算机练习,结合工程、经济、数据科学等领域的应用实例,帮助不同层级的学习者理解抽象概念的实用价值。压缩包内仅含1个PDF文件,大小6.69MB,排版清晰、目录完整,适合在PC、平板或手机端阅读批注。已有1055人浏览学习,适合高校学生作为教材配套参考、考研备考生巩固基础,也适合自学者系统提升线性代数素养。
1. Linear Algebra with Applications 10th 在讲什么:从“背公式”到“看得见运算”
当第一次拿到Linear Algebra with Applications 10th这本教材时,多数人第一反应是“又一本线性代数”。但翻到中间任意一章就会发现,它和常见的高校教材在讲法上有个明显差异:几乎每一个概念都先从一个具体场景进入。比如特征值不是直接给定义,而是先讲一个种群数量随时间变化的例子,让读者看到“特征值决定了这个系统会不会发散”。这本书在解决的核心问题,是让学习者从“记住公式”转向“看出运算的含义”,同时保留足够的严谨度,能对接后续的工程数学、数值计算和数据分析课程。
这本书适合两类人:一类是正在修线性代数课程的在校学生,可以用它作为主教材的补充读物,补上“为什么这样算”的环节;另一类是工作多年、需要把线性代数捡起来的工程师,因为第 10 版在数值计算和实际应用上的笔墨明显加重,读完一章就能动手验证。我的建议是:不要把这本书当作词典式的公式手册,而要按“先读场景、再读定理、最后做练习”的顺序推进,它才能真正发挥作用。接下来我会把这套书的章节骨架、三条不同的读法路线、以及如何用代码验证书中的结论拆开讲清楚。
2. 为什么这本教材值得从第 1 章读起:从消元法到特征值的完整骨架
很多人拿到Linear Algebra with Applications 10th习惯直接跳到矩阵那一章,跳过前两章。这是个常见错误——这本书的编排顺序本身就是一条逻辑链:先讲线性方程组,再引出矩阵和行列式,然后用向量空间把前面的计算统一起来,最后用特征值和正交性把几何意义补全。跳过任何一环,后面都会出现“定理看得懂、题目做不出”的断层。
2.1 线性方程组与矩阵:第 1 章打底的内容比想象中多
这本书第 1 章并不是简单复习初等代数,而是把“消元法”这件事从操作层面提升到结构层面。它反复强调一个观点:同解变形不改变方程组的解集,因此可以用增广矩阵的行变换来代替对未知数的操作。这个“用矩阵替代未知量”的思想,是整本书往后所有内容的起点。
在第 1 章里,真正值得花时间的不是那些简单的二元一次方程组,而是“无解、唯一解、无穷多解”的判别条件。这本书用了一个非常清楚的讲法:把增广矩阵化成行阶梯形之后,如果某一行的左边全是零而右边非零,方程组就无解;如果自由变量存在,就有无穷多解。很多学生在高中已经把消元法练得很熟,但缺乏对“行变换不改变解集”这个逻辑的理解,导致后面遇到参数方程时手足无措。
读第 1 章时,我建议做三件事:一是把每道例题的计算过程完整走一遍,不要只看结果;二是重点看“齐次方程组”与“非齐次方程组”的对比,这本书在这一点上讲得很清楚——齐次方程组永远有零解,问题只在于有没有非零解;三是动手画一画三元方程组的几何示意图,理解“两个平面相交成一条线”这类情景在矩阵里的表现。
这里有一个阅读方法的细节。这本书的例题常常是“一步一行地演算”,但它在关键步骤旁边会加一小段说明文字,解释“为什么把这一行乘以 -2 再加到下一行”。很多读者会忽略这种夹叙夹议的说明,只抄步骤,结果就是“看的时候都懂,合上书又不会”。我个人的做法是:每道例题读完之后,把书的演算合上,自己在草稿纸上重新做一遍,做到哪一步卡住,就回头查那一段说明。
2.2 行列式与向量空间:两个难点之间的桥梁
行列式在Linear Algebra with Applications 10th里的位置有点微妙。从体系上讲,它夹在高斯消元法和向量空间之间;从难度上讲,它是大多数读者第一个真正感到吃力的章节。这本书处理行列式的策略是“先教计算规则,再讲几何含义”,并且明确告诉你:行列式的绝对值的几何意义是有向体积。
读行列式这一章,不需要把余子式展开的所有技巧都练到条件反射的程度。这本书在后面章节也用到了行列式,但主要用途集中在三块:判断矩阵是否可逆、克拉默法则、以及在特征值相关问题中判断特征多项式是否为零。第 10 版特意强调了“行列式作为体积缩放因子”这一层含义。如果只记住展开公式而忽略这个含义,到后面学习特征值时会错过一个重要的直觉:矩阵作用于一个区域时,面积或体积的放大倍数正是行列式的绝对值。
接下来是向量空间。在书里,向量空间这一章承担的任务是把前面所有的计算抽象化,因此阅读速度必须慢下来。特别是“子空间”的定义——非空、对加法和数乘封闭——看起来简单,但做题时极容易忽略封闭性的验证。这本书这里的编排出色之处在于,它把前面学过的几类对象统一放进向量空间的框架:齐次方程组的解集是一个子空间、矩阵的列空间和零空间是子空间、多项式集合也能构成向量空间。读到这个部分,建议自己做一张对照表,把“线性无关、基、维数、秩”四个概念分别在方程组、矩阵和多顶式场景中的具体表现写下来,这本教材的习题里有不少这类对比,值得做。
2.3 特征值与数值方法:第 10 版在应用层面加厚的地方
特征值那一章是整本书的重心。这本书引入特征值的方式不是直接给出定义式,而是从一个离散动力系统的例子出发:假设每年某种动物的数量变化由一组线性规则决定,那么系统的长期行为就取决于矩阵的特征值。这个切入方式的好处是,读者在还没有接触特征值定义时,已经能感觉到“特征值是一个系统被反复作用后的缩放因子”。
第 10 版在数值方法部分做了明显的加强。与旧版相比,它花了更多篇幅讲“幂法”——用反复乘以矩阵的方式逼近最大特征值——并且明确指出了这种做法在工程中比直接解特征多项式更常用。原因是:对于大型矩阵,求解特征多项式的根在数值上不稳定,而迭代乘法的稳定性好得多。这个认知对工科读者价值很大,因为现实中遇到的矩阵大多是几百阶甚至上千阶,解多项式根本行不通。
在这一章的练习里,有一个经常被忽视却很重要的概念:相似矩阵。这本书用“不同坐标系下观察同一个线性变换”来介绍相似矩阵,而不是单纯给公式。读到这个地方时,建议动手做一件事:随便取一个矩阵,计算它的特征值和特征向量,然后用特征向量作为新的基底重写这个矩阵,验证得到的对角矩阵是否与原来的矩阵相似。这个过程对应到编程里就是特征分解,后面的 Python 验证会再展开。
3. 按目标选读法:三种读者各自的核心路径
Linear Algebra with Applications 10th的章节结构是按“从具体到抽象”的方式排的,但不同读者投入的时间和学习目标差别很大。大学生和在职工程师不可能用同一种节奏读完整本书。这一章给出三条不同的路径,每条路径都注明了必读章节、可跳过的部分、以及必须完成的练习数量。选取原则是“不破坏逻辑链,但压缩非核心计算训练”。
3.1 工程与编程背景读者:最短路径,重概念轻技巧
如果你的目标是快速掌握线性代数的概念,用于后续的数据分析或仿真建模,不需要参加闭卷考试,那么可以把重心放在这几部分:线性方程组的几何解释、向量空间与线性无关、特征值与特征向量在动态系统中的应用、以及正交性与最小二乘。
具体来说,第一章只需要把例题读懂,做到“能说出每一行变换的目的”即可,不需要对三元方程组做大量的手算训练。行列式一章只需掌握三阶以内展开,高阶行列式用程序算就好。而向量空间那一章,应该逐字读,特别是线性无关与生成空间这两节,因为这些正是编程中“矩阵的秩”这个函数背后的逻辑。特征值一章是无论如何都要精读的,而且必须读数值方法那一节——它会解释为什么程序中常用的eig函数不是先求特征多项式再求根。
这条路径下,建议每章只做偶数编号的基础题,证明题可以先跳过。这是因为工程背景的读者目标是把定理“用起来”,而不是构造证明。如果时间只有两周,这样分配是效率最高的:第一周读完线性方程组、向量空间和特征值三章的核心内容;第二周回头补正交性与最小二乘。
3.2 课程考试读者:完整通读,附加做透章末题
在校学生面对的情况完全不同:需要应付闭卷考试,证明题和计算题都会考。这类读者必须完整阅读这本书的正文,不能跳过任何一节。但有一个顺序上的建议:第一遍阅读时不要做题,只读正文和例题,目标是连续两周内把全书过一遍,建立整体图谱;第二遍再从头开始,按照“读一节、做一节题”的节奏推进。
这里有一个重要的时间分配原则:不要把时间平均花在每一章。第 1 章的计算技巧考前简单过一遍即可,真正决定成绩的是向量空间、特征值、正交性三章——它们在考试中通常占掉六成以上的分数。第 10 版在中后部分安排的“线性变换”内容很多学校会跳过,但如果考试大纲里包含,建议把注意力放在“核空间与值域”的关系上,这是证明题的高发地带。
章末题的用法也有讲究。这本书的章末习题不是按难度均匀排布的,往往越到后面综合性越强。我的建议是:每章必做前三分之一的基础题,确保计算熟练;后三分之一至少尝试五道题,允许做不出来时看答案;中间部分的题按时间情况弹性处理。重点做“判断正误并说明理由”这类题,因为它们在考察概念边界,与考试中的选择题和解答题高度接近。
3.3 自学者:如何用三个环节对抗遗忘
完全自学的读者面临的最大问题是“学完前面忘记后面”。这本书的体系性很强,但正因为强,遗忘的代价也更大。我的建议是把读书过程拆成三个环节:精读正文、合书复述、隔周重做。
精读环节的要点是“每读一小节就停下来用自己的话写三行摘要”。不要觉得这个动作多余,第十八章之后的内容依赖前面太多概念,三行摘要就是日后找回记忆的锚点。复述环节是指读完一章后,合上书本,在白纸上画出这一章的概念网络:本章提出了什么问题、用了什么工具、得出了什么结论、遗留了什么未解的问题。这一步不需要写得很规范,潦草没关系,关键是自己能看懂。
隔周重做是自学者最容易忽略的环节。建议在完成第 3 章后回头重做第 1 章的部分习题,完成第 5 章后回头重做第 3 章的习题,以此类推。这本书的习题设计有一个特点:后面的章节会用到前面的结论,但不会明确标注“这道题用了第三章的定理”。因此,隔周重做既能发现遗忘点,也能顺便建立跨章节的联系。如果时间紧张,至少做到“每个周末花一小时重做本周之前某一章的 5 道题”,坚持下来效果会很明显。
4. 把书里的定理变成可运行的代码:用 Python 复现课后题的五个关键步骤
这一步适用于决定动手验证的读者。Linear Algebra with Applications 10th的正文里包含大量数值例子,这些例子用手算可以验证,但手算只能验证小规模情况。真正理解“计算过程为什么是这样”,不如直接写程序。
我常用的环境是 NumPy 配合 SymPy:NumPy 负责数值计算,适合验证结论;SymPy 负责符号计算,适合查看运算的中间形态。两者在本节的配合方式会逐步说明。
4.1 环境准备:NumPy 做数值验证,SymPy 做符号追踪
先做环境准备。安装两个库,推荐用 Python 3.10 及以上版本:
pip install numpy sympy逻辑说明:这个组合覆盖了两种验证需求。NumPy 的线性代数模块numpy.linalg提供det、eig、solve、svd等常用函数,处理数值场景时又快又稳;SymPy 则提供Matrix类和符号运算能力,可以显示“分数形式的精确结果”,排查公式错误时比浮点数更直观。两套工具的分工是:看结论用 NumPy,查推导用 SymPy。
参数说明不涉及具体调参,但要留意版本差异。NumPy 从 1.22 开始对numpy.linalg的实现做了多次底层调整,不同版本在极端病态矩阵上可能给出略有差异的结果。如果你在验证过程中发现结果与书中的手算结果在小数点后若干位不一致,不必惊慌,优先检查是不是浮点数累计误差导致的,而不是直接怀疑算法出错。
4.2 复现消元法与行列式的计算:先看阶梯形再算体积
第一个要复现的内容是高斯消元法。书中展示了行变换的过程,而程序里最容易对比的是“行阶梯形”的结果。用 SymPy 来实现最直观:
import sympy as sp A = sp.Matrix([[1, 2, 1], [2, 3, 1], [1, 1, 2]]) # 行阶梯形:只做行变换,不归一化主元 rref_matrix, pivot_cols = A.rref() print("行最简形(RREF):") print(rref_matrix) print("主元所在的列:", pivot_cols) # 行列式:精确的分数/整数结果 det_value = A.det() print("行列式:", det_value)逻辑说明:rref()返回行最简形和主元列的索引。书中在判断方程组解的结构时用的正是主元列的位置——如果每一列都有主元,且主元贯穿全部行,矩阵就可逆;如果出现全零行,就说明行向量线性相关。行列式用.det()计算,SymPy 的矩阵在整数元素时会给回精确结果,不像 NumPy 会给出浮点数,这样一旦结果与书上的手算不一致,可以直接定位到公式层面的错误。
参数说明里最重要的一条是:rref()默认采用的是 Gauss-Jordan 消元,即把主元上下的元素也一并消成零。这与书中“先化成行阶梯形”的中间步骤略有不同,但判定解的结构时二者等价。如果你想看“行阶梯形”而不是“行最简形”,需要自行参考消元的中间结果,简单的做法是逐次使用A[1:, :]手动操作行切片,不过通常没有必要。
4.3 特征值与特征向量:验证一个关键等式
特征值的核心验证是“矩阵乘以特征向量,等于特征值乘以同一个向量”。下面用 NumPy 实现这个检查:
import numpy as np A = np.array([[4.0, -2.0], [1.0, 1.0]]) eigenvalues, eigenvectors = np.linalg.eig(A) for i in range(len(eigenvalues)): lam = eigenvalues[i] v = eigenvectors[:, i] # 验证 A v = λ v left = A @ v right = lam * v print(f"特征值 {lam:.4f}: 残差 = {np.linalg.norm(left - right):.2e}")逻辑说明:np.linalg.eig返回的特征向量按列存放,因此取第 i 列时用的是eigenvectors[:, i]。残差计算的是两侧差向量的模,用于量化验证结果与理论之间的误差。如果矩阵规模小且条件数不大,残差应当在1e-14量级左右,这基本是双精度浮点数的极限精度。
参数说明:eig不保证返回的特征向量方向与书中的一致,这是正常的。特征向量乘以任何非零常数后仍是特征向量,因此程序中得到的向量的某个分量可能与手算结果差一个负号,不要把它当作错误。如果残差明显偏大,例如超过1e-8,第一个要排查的是矩阵是否接近“有重特征值”的情况,此时特征向量对数值误差非常敏感,换用eigvalsh等针对对称矩阵的函数有时能改善结果。
4.4 最小二乘与正交性:用投影矩阵验证书中的结论
在正交性与最小二乘章节,书中的核心公式是“正规方程”的解:x = (A^T A)^(-1) A^T b。用 NumPy 可以直接复现,但更好的做法是用lstsq函数,它在数值稳定性上更可靠。
import numpy as np A = np.array([[1.0, 1.0], [1.0, 2.0], [1.0, 3.0]]) b = np.array([1.0, 2.2, 2.9]) # 方法一:正规方程 ATA = A.T @ A ATb = A.T @ b x_normal = np.linalg.solve(ATA, ATb) # 方法二:最小二乘专用函数 x_lstsq, residuals, rank, singular_values = np.linalg.lstsq(A, b, rcond=None) print("正规方程解:", x_normal) print("lstsq 解:", x_lstsq)逻辑说明:两组结果应当几乎一致。但要注意的是,正规方程中涉及A^T A的计算,当矩阵条件数很大时这个乘积会放大误差;lstsq内部使用 QR 分解或 SVD,数值稳定性更好。这本书在最小二乘一章并没有强调这一点,但作为工程师应当知道:只要数据量稍大,就应当避免手动计算正规方程。
参数说明:rcond=None表示让 NumPy 根据机器精度自动判断哪些奇异值视为零。如果你的数据处理的是满秩的小矩阵,这个参数无需改动;当矩阵秩亏时,rcond的设置会影响解的范数,这个细节与书中“最小范数解”的概念相呼应。
5. 读这本书最常见的 5 个坑:现象、原因与排查方法
这本书总体编排友好,但实际使用中仍有几个高频问题反复出现。下面 5 条来自教学中常见的反馈和自学者的提问,每条按“现象 → 原因 → 解决”展开。理解了这些坑,阅读过程能少走很多弯路。
5.1 只记公式不读“应用小节”,导致后半本书跟不上
现象:读者在第三周突然发现特征值一章的题目几乎做不动,回头翻前面的笔记却找不出对应公式哪里出了问题。
原因:这本书每个章节尾部都有一个“应用”类的小节,内容是前面定理在一个真实场景里的完整使用过程。很多读者把这些小节当作阅读材料扫一眼就过,没有意识到它们是连接“定理”与“工程方法”的桥梁。到了后面的章节,书中会直接引用前面应用小节的结论,不再重复推导。
解决:为每一章的“应用”小节专门建一个笔记条目,记录“这个应用用了哪些定理、分几步完成”。不需要写得很长,三到五条即可。当后面章节再次提到同一个场景时,直接回看这些条目,比重新翻书快得多。
5.2 混淆“行等价”与“矩阵相等”
现象:读者把两个矩阵做完全相同的一组行变换,得到两个不同的矩阵,然后认为这两个矩阵相等。
原因:这本书强调“行变换不改变方程组的解集”,但没有特别强调“经过行变换后的矩阵是另一个矩阵,只是它代表同一个方程组”。初学者在心理上把“等价”理解成“相等”,为后面的“矩阵乘法不可交换”等概念埋下误解。
解决:在使用Linear Algebra with Applications 10th时,我给读者的建议是:在笔记中把“用箭头连接的两个矩阵”和“用等号连接的两个矩阵”区分开。行变换前后的矩阵之间只能用箭头或波浪线,不要用等号。每次书写时注意这个细节,能有效减少概念混淆。
5.3 在特征值章节里强行求特征多项式,导致数值误差失控
现象:用程序计算一个 6 阶矩阵的特征值时,程序输出的结果与书上的答案在小数点后第二位就出现分歧,且换了算法也是一样。
原因:书中确实用特征多项式定义特征值,但第 10 版在数值方法部分已经说明:实际程序不使用求根方法。可很多读者看到定义后,自己先用sympy展开特征多项式再求根,由于高次多项式的根对系数误差极度敏感,得到的数值结果漂移很大。
解决:当验证结果与书上不一致时,先问一句“我用的方法是不是数值上稳定的”。如果确实想用符号方式验证,请使用 SymPy 的A.eigenvals()方法,它会用更稳定的代数方法计算精确特征值;如果使用 NumPy,直接信任np.linalg.eig给出的结果即可。不要把特征多项式展开成系数再求根作为对照手段,这就是在主动制造误差。
5.4 跳过复数特征值相关小节,到后续课程才发现断层
现象:读者读到旋转矩阵的特征值时发现特征值是虚数,觉得书上肯定哪里出了问题,带着这个疑问跳过了这一节,后面学习差分方程时遇到复数振子问题完全不知所措。
原因:第 10 版在特征值章节专门安排了一节关于“复数特征值与旋转”的内容。这个内容在有些课程里不考,但它是之后学习振动分析、量子力学或者控制系统的基础。因为不考而跳过的读者,实际上是切断了这条应用线。
解决:即使不要求掌握复数情况下的计算细节,至少应该读一遍“为什么实矩阵会出现复数特征值”这一段。书中用旋转矩阵的例子说明:实矩阵的特征多项式是实系数多项式,它的根自然可能是复数。这一节不需要做题,但应当留下笔记。日后需要用时至少知道去哪个章节找能够解释的方向。
5.5 使用习题答案的方式不当,把验证题做成了填空题
现象:很多读者做每章末尾的基础练习题时会先翻到答案部分,看到答案与自己预期一致就跳过推理过程,结果是考试或实践中遇到同类问题仍然无法从第一步起手。
原因:这本书的题目设计往往刻意在一道题里同时考察多个概念,答案中给出的“提示”本身包含思路。一旦先看答案,大脑就跳过了“自己组织思路”这一步,效果接近于无效学习。
解决:给自己立一条规则:做每道题时必须在纸上写出完整的推理过程,哪怕最后结果与答案不同,也先把草稿保留至少一天再对照答案。这本书的价值恰恰在于它的习题设计层次分明,跳过推理过程就等于放弃了这个层次的训练。
6. 把第 10 版当工具书用:建立个人主题索引的三个技巧
读过一两遍之后,Linear Algebra with Applications 10th的价值不减反增。关键做法是把它从“按顺序读的课本”转变为“按问题查的参考手册”。这里分享三个我一直沿用的习惯。
第一个习惯是建“问题→章节”跳转表。不要按教材目录组织笔记,而按“我遇到什么问题”组织。比如,当你需要判断一组数据是否线性相关时,在笔记里写下“线性相关判定:查向量空间一章的线性无关节;数值上用np.linalg.matrix_rank”。这本书的索引通常给出的是名词,但个人的跳转表给出的是“问题与答案之间的路径”。
第二个习惯是“应用小节的代码化”。书中每个应用小节都描述了具体的计算流程,我的做法是把这些流程逐个转成 10 行以内的 Python 函数,比如从差分方程得到特征值再判断系统稳定性。这样一旦日后遇到类似分析场景,不需要重读书本,只要翻出代码稍作修改即可。这个习惯把书本知识沉淀成了个人工具库。
第三个习惯是按需回读“数值方法”内容。第 10 版加了更多数值计算的段落,每次在用程序遇到奇异结果时,我会先回读书中对应的数值章节,用里面的概念排查问题的来源,而不是直接修改代码里的参数。这种“问题驱动”的读书方式,能保证书本始终供你调用,而非读完之后就束之高阁。
最后说一个我自己的教训:掌握这本教材,关键不在于读得有多快,而在于“每读一个定理就问一句它在哪里用得上”的习惯。带着这样的问题去读例题和习题,书里的每一个公式都在工程场景里获得具体含义。希望这些梳理和路径能帮到你,在通读这本书时少走弯路。
本文还有配套的精品资源,点击获取