
简介一份汇集20个数学建模案例的线性代数专题PDF面向数学建模竞赛参赛者、理工科师生以及需要借助矩阵工具处理实际工程与管理问题的读者。案例覆盖交通网络流量分析、配方、投入产出、平板稳态温度、CT图像代数重建、梁受力计算、化学方程式配平、互付工资、平衡价格、电路设计、几何变换、Hill密码、人员流动、金融基金流动、选举、种群增长直至微分方程组求解和最值问题场景跨度大难度循序渐进。每个案例都按“问题描述—模型构建—模型求解—结果分析”的结构展开突出线性方程组建立、增广矩阵初等行变换、矩阵运算与特征值等核心方法并配有详细计算过程和模型解释。资源共1个PDF文件压缩包约1.14MB便于下载后按目录系统学习。目前已有863人学习下载适合用于数学建模课程实训、竞赛备赛或线性代数应用案例教学。通过20个案例的反复演练读者能有效提升将实际问题抽象为线性代数模型的能力理解矩阵方法在工程与经济领域中的广泛价值。1. 从交通流量到CT图像一份案例集里的线性代数建模主线拿到这份案例集的时候我先翻到案例五CT图像重建那一章。原因很直接交通流量、配方、投入产出这些话题在教材里见得多CT重建是少数把“解不唯一”当作核心矛盾来教的案例。把20个案例全部过一遍后印象最深的不是某个具体解法而是它们共用的骨架先把问题里的守恒关系或平衡关系写成等式再把等式整理成矩阵形式 Axb 或 Ax0最后用秩、零空间、最小二乘去解释解的结构。这份资源适合三类人准备数学建模竞赛的学生、需要做MATLAB数值验证的工科生以及想把业务问题形式化成线性模型的数据从业者。下面按案例类型拆开讲重点放在建模假设、系数矩阵的来路以及解的结构如何指导后续决策。2. 守恒类问题交通流量与平板温度分布的线性方程组建模2.1 路口流量守恒方程组与移项细节案例一给出的单行线网络有4个路口每条路的车流量方向由箭头固定。建模只靠一条物理假设每个交叉路口进入的车辆数等于离开的车辆数。设四条道路的未知流量为 x1、x2、x3、x4把“流入 流出”按路口展开路口①500 x1 x2 路口②400 x1 x4 300 路口③x2 x3 100 200 路口④x4 x3 300整理成 Ax b 时最容易出错的是移项符号。我一般先保持“流入 - 流出 0”的格式再把常数移到右端这样可以避免路口②、④的符号写反。整理后得到系数矩阵 A 和右端项 bA [1 1 0 0; 1 0 0 -1; 0 1 1 0; 0 0 1 -1]; b [500; -100; 300; -300]; R rref([A b])行最简形 R 的前四列显示系数矩阵的秩为3最后一行为全零。这说明四个统计方程里有一个是冗余的四个未知量只对应三个独立方程自由变量为1。实际含义是若想唯一确定各条路的车流量只需在 x1 到 x4 中任意再增加一条路的流量统计。例如令 x4 350则 x1 250、x2 250、x3 50全部非负方案合理。若令 x4 200则 x3 -100出现负流量说明该路段的单行方向应当反向这是模型给交通管理提供的直接建议。这个案例的价值在于线性代数解决的问题不只是“能不能求出具体数字”而是“在信息不足时还需要补测哪些数据”。如果只盯着方程组的数值解容易忽略秩告诉我们的事实——最后一个方程的数据“300”根本不需要统计。2.2 平板稳态温度分布平均假设的离散化来源案例四讨论一块金属梁截面的稳态温度分布。模型假设忽略垂直于截面的热传导并且每个节点的温度等于与它相邻四个节点温度的平均值。这个假设不是拍脑袋而是拉普拉斯方程在均匀网格上的中心差分近似二维稳态热传导方程在无内热源时满足拉普拉斯方程离散化后每个网格点的温度就是周围四点的算术平均。中间四个未知量 T1 到 T4 的方程分别是T1 (90 100 T2 T3) / 4 T2 (80 60 T1 T4) / 4 T3 (80 60 T1 T4) / 4 T4 (50 50 T2 T3) / 4整理成矩阵格式后A [4 -1 -1 0; -1 4 0 -1; -1 0 4 -1; 0 -1 -1 4]; b [190; 140; 140; 100]; T A\bMATLAB 执行后得到 T1 82.9167、T2 70.8333、T3 70.8333、T4 60.4167。注意矩阵 A 是严格对角占优的每一行对角元的绝对值都大于非对角元绝对值之和。对于这类矩阵雅可比迭代和高斯-赛德尔迭代都收敛用 A\b 直接求解也不会出现数值不稳定。从建模角度看这个案例和交通流量案例有两点本质区别。第一方程个数等于未知量个数且系数矩阵满秩解唯一。第二物理假设更强——节点温度平均假设直接来自热传导方程而不是经验拟合。如果换到更细的网格例如实验中30个节点的版本方程数量会随网格规模线性增长手算不再现实但矩阵形式不变只是 A 变成稀疏矩阵。2.3 秩和自由变量三个守恒类案例的对比把交通流量、平板温度、梁受力三个案例放在一起看守恒类建模的标准步骤很清晰先列出守恒律再整理成矩阵最后用秩判断解是否唯一。案例未知量数方程数rank(A)自由变量数解的状态交通流量4431无穷多解需补测一条路平板温度4440唯一解梁受力8880唯一解梁受力案例在资源中也是守恒类水平方向合力为零、竖直方向合力为零、绕支点的合力矩为零。三类方程联立后得到一个8阶线性方程组系数矩阵满秩所以解唯一。把这三个案例放一起能看出“唯一确定”并不是天然成立的。当自由变量存在时反而要回到物理背景中找约束。交通流量案例中非负约束筛掉了一部分解也直接触发了单行线方向调整的决策建议。3. 投入产出、平衡价格与互付工资经济行为如何写成矩阵方程3.1 消耗系数矩阵的列含义案例三是列昂惕夫投入产出模型的经典形式。一个地区有煤矿、电厂、铁路三个部门每生产1元钱的煤需要消耗0.3元电和0.2元运输每生产1元电需要0.6元煤、0.1元电和0.1元运输每提供1元运输需要0.5元煤和0.1元电。把部门顺序固定为煤、电、铁路消耗系数矩阵每一列表示该部门生产一单位产品所需消耗的各类产品数量A [0 0.6 0.5; 0.3 0.1 0.1; 0.2 0.1 0]; x [x1; x2; x3]; % 煤、电、铁路的总产出 b [60000; 100000; 0]; % 外部订单这里 A 的第 j 列表示部门 j 每生产一单位产品需要消耗的煤、电、运输数量。于是 Ax 就是生产 x 元产品所需的部门间消耗总量x - Ax 才是可以用来满足外部订单的净产出。模型方程是 (E - A)x b也就是每个部门的总产出扣除内部消耗后刚好等于外部需求。求解时直接x (eye(3) - A)\bMATLAB 返回的倍数约为 1.0e005解大约是煤 199660 元、电 184150 元、运输 58350 元。注意这里用的是左除而不是显式求逆。左除在数值上更稳定并且当矩阵接近奇异时会给出警告而显式计算 inv(E-A)*b 容易放大舍入误差。3.2 为什么 (E - A) 可逆列和与谱半径这个模型要继续用下去一个值得检查的条件是消耗系数矩阵的列和必须小于1。例如煤炭这一列是 0 0.6 0.2 0.8电厂列是 0.6 0.1 0.1 0.8铁路列是 0.5 0.1 0 0.6。每一列加总小于1表示生产1元产品所消耗的中间投入小于1元整个经济系统有剩余产出。列和小于1在数学上保证矩阵的谱半径小于1因此 E - A 可逆并且 (E - A)^(-1) 可以展开成 Neumann 级数 E A A^2 …。这个级数在经济上对应追加需求经过一轮轮产业链传导后的总产出A 是直接消耗A^2 是第一轮间接消耗A^3 是第二轮间接消耗依此类推。很多学生看到 A 就套 x (E-A)^(-1)b却忘了先验证列和是否小于1。资源里虽然没有明确展开 Neumann 级数但模型分析部分已经暗示了总产值向量和最终产品向量的关系补上这一层后(E-A)^(-1) 的每一项都能对应到产业链的某一轮间接消耗。3.3 平衡价格与互付工资同一个零空间的两种应用案例九是平衡价格问题。煤炭、电力、钢铁三个行业的产出在下游购买者之间分配比例表本身构成一个列和为1的矩阵。购买者煤炭部门产出分配电力部门产出分配钢铁部门产出分配煤炭00.40.6电力0.60.10.2钢铁0.40.50.2这个矩阵 C 的每一列加总为1属于列随机矩阵。平衡价格要求每个行业的总产出价格等于它的产品在各处被购买支付的总金额也就是 x Cx或者 (E - C)x 0。列随机矩阵一定有一个等于1的特征值所以 E - C 奇异方程组有非平凡解。用 MATLAB 求零空间C [0 0.4 0.6; 0.6 0.1 0.2; 0.4 0.5 0.2]; M eye(3) - C; x null(M, r)得到归一化解 (0.9394, 0.8485, 1)表示平衡价格之间只存在比例关系不存在绝对价格。这和经济直觉一致没有外生货币锚价格水平无法唯一确定。建模任务到此为止已经完成负责人还需要根据市场行情确定一个参照价格才能最终落地。案例八的互付工资问题结构完全一样。木工、电工、油漆工相互在对方家工作每人工作10天日工资 x、y、z 需要满足“总收入 总支出”。设木工的收入10x等于他在三家收到的工资总额也就是 2x y 6z整理后得到齐次方程组A [-8, 1, 6; 4, -5, 1; 4, 4, -7]; w null(A, r); format rat wMATLAB 得到有理比 31/36、8/9、1换算成真实工资时取 k 72得木工62元、电工64元、油漆工72元三个数都在市场化区间60到80元内。这就是零空间的应用比例由方程组的唯一约束确定尺度由行业惯例决定。4. 化学方程式配平与CT图像重建零空间和最小二乘解决哪类问题4.1 化学方程式配平把元素守恒写成齐次方程组案例七是典型的待定系数法配平。废水处理中 KOCN 在碱性条件下被氯气氧化设反应式为x1KOCN x2KOH x3Cl2 → x4CO2 x5N2 x6KCl x7H2O按元素守恒列方程每一种元素对应一个方程。K、O、C、N、Cl、H 六种元素给出6个方程未知数有7个因此方程个数比未知数少1正常情况下零空间是1维的。A [1 1 0 0 0 -1 0; 1 1 0 -2 0 0 -1; 1 0 0 -1 0 0 0; 1 0 0 0 -2 0 0; 0 1 0 0 0 0 -2; 0 0 2 0 0 -1 0]; x null(A, r); format rat x返回的基础解是 (1, 2, 3/2, 1, 1/2, 3, 1)。基础解是分数化学方程式要求系数为最简整数取各分母2的最小公倍数得到 (2, 4, 3, 2, 1, 6, 2)。配平结果2KOCN 4KOH 3Cl2 → 2CO2 N2 6KCl 2H2O这里 null(A,r) 返回有理基配合 format rat 命令可以把浮点数直接显示成分数。若使用默认的 null(A) 返回值是正交规范化基数学上同样正确但不容易直观读出整数比例。当 r(A) n - 1 时基础解系只含一个向量通解中取各分量分母的最小公倍数即可。若秩亏更多基础解系含两个以上向量还需要根据化合价升降信息补充方程。4.2 CT图像重建超定方程组为什么还会秩亏案例五是CT代数重建的简化版一个3乘3灰度图像只知道水平、竖直和一组对角方向的灰度叠加值要求重建9个像素的灰度。按行、列、对角线分别列方程总共有11个方程、9个未知数行方向x1x2x3 1x4x5x6 1x7x8x9 1.5 列方向x1x4x7 1.5x2x5x8 0.5x3x6x9 1.5 右上方到左下方x1 1x2x4 0x3x5x7 1x6x8 0.5x9 1方程个数大于未知数个数但实际有效方程的个数却少于9。原因是从对角线方向得到的约束并没有引入全新的行向量某些投影方向在3乘3网格上线性相关导致系数矩阵秩亏。用 MATLAB 求解时见到的典型表现是A [...]; % 11x9 的投影矩阵 b [...]; % 11x1 的投影叠加值 x A\bMATLAB 输出“Rank deficient, rank 8, tol 4.2305e-15”同时仍然给出一个特解x (1, 0, 0, 0, 0.5, 0.5, 0.5, 0, 1)。这是一个灰度值在[0, 1]范围内的可解释解但并不是唯一解。秩亏的本质是投影数据不足或方向组合不佳而不是方程不够多。在真实CT中不会出现恰好秩亏这种情况因为投影角度多方程数远超未知数加上测量噪声方程组变成超定且不相容。这时要用最小二乘解代替精确解。案例五的Matlab实验题要求自己构造投影数据并绘制重建图像已经接近实际CT迭代重建的思路。线性代数版CT重建的教学意义在于图像重建问题可以归结为对超定线性系统求近似解而秩这个概念直接回答“需要多少个方向的投影才能确保解唯一”。4.3 什么时候用左除、用 null、用 pinv不同形态的方程组适合不同处理方式这一点在案例集里体现得很清楚我把选择逻辑整理成一张表方程组形态数学问题推荐命令对应案例方阵满秩唯一解A\b平板温度、梁受力方阵奇异但相容无穷多解null(A,r) 找基础解系化学配平、平衡价格超定且不相容最小二乘lsqminnorm(A,b)CT重建带噪声数据超定但秩亏最小范数解pinv(A)*b稀疏投影重建一个容易混淆的点A\b 在超定情形下默认给出的也是最小二乘解但秩亏时解可能不唯一。MATLAB 文档建议在秩亏时使用 lsqminnorm它返回所有最小二乘解中范数最小的那个。pinv(A)*b 也做类似的事只是 pinv 计算的是伪逆适合处理单次小规模问题数据规模变大或矩阵结构特殊时lsqminnorm 更稳定。5. 用 rank 和 cond 快速诊断线性代数模型的可解性拿到任何线性代数建模题的系数矩阵后我习惯先把三行代码跑掉rA rank(A); rAb rank([A b]); k cond(A);这三个数值量构成一套完整诊断。rank(A) 给出系数矩阵的独立行数rank([A b]) 与 rank(A) 的比较确定方程是否相容cond(A) 告诉你解的敏感度。完整判断逻辑可以写成下面的分支n size(A, 2); if rA rAb rA n x A\b; % 唯一解 elseif rA rAb rA n fprintf(自由变量个数: %d\n, n - rA); z null(A, r); % 通解 特解 自由变量的线性组合 else warning(方程组不相容需要重新检查假设); x lsqminnorm(A, b); % 带噪声数据时改走最小二乘 end这套诊断在案例二配方问题里可以直接验证。配方问题的方程数是4、未知量数是2增广矩阵列出来很容易让人以为需要解一个超定系统但 rank(A) 2 且 rank([A b]) 2两个秩相等且等于未知量个数说明解存在且唯一多余的方程只是数据冗余。先算秩再决定算法可以避免在不相容问题上做无意义的迭代。当 rank(A) 小于未知量个数 n 时用 null(A,r) 得到的参数化解可以把约束范围看清楚。交通流量案例中参数化 x x4 直接给出流量区间x4 必须在300到600之间所有流量才非负。这种参数化写法比直接罗列一堆浮点数更利于决策因为边界条件一眼可见。条件数也是同样重要的检查项。平板温度案例的矩阵严格对角占优条件数不大边界温度的小误差只会引起节点温度的等量级变化。CT重建案例则相反矩阵奇异cond(A) 直接返回 Inf提示投影方向配置不足。如果 cond(A) 是有限值但远大于1比如超过1e6说明矩阵接近奇异边界条件或测量数据的微小扰动会被放大此时要先检查单位是否统一、网格是否过密再考虑换用归一化或正则化方法。在建模报告中把这样一组诊断结果附在代码后面评审能直接看到你检查过解的存在性和稳定性。本文还有配套的精品资源点击获取