跳到正文

预条件思想

65 分钟

预条件思想

本节属于“线性方程组迭代法”。学习目标是把 预条件思想 从名词变成一条可复查的证据链:明确数学对象,推导核心公式,手算最小例题,实现算法,区分误差来源,并让已知反例按预期失败。

主题专属核心:先把《预条件思想》讲明白

这一节真正研究的对象是:预条件思想。先把它与本章其他方法分开:它的输入前提、被更新的数学量、希望保留的结构和停止证据都必须明说。不能只写一个库函数名就跳到结果。

定义与公式从哪里来

本节的核心关系是:解 ,PCG实际用 ,目标是让 谱聚集且 变小。读公式时要逐项标出已知量、状态量和新状态,再说明分母为何不能为零、矩阵需要什么性质、步长或网格受什么约束。推导不是为了背诀,而是为了知道实现中每一个中间量应该是什么。 对《预条件思想》,本段的验收证据具体是:预条件思想

一个可以手算的 worked example

A=diag(1,100),b=(1,100);M=diag(A)时 ,条件数从100降到1,一步得x=(1,1)。请不要直接跳到最后数字:把第一步的代入、中间量、新状态和残差写在四行中,然后用原定义独立代回。这个小例是代码的 oracle:程序第一步与手算不一致时,先查索引、符号、新旧状态和边界,不要通过放宽容差掩盖错误。 对《预条件思想》,本段的验收证据具体是:解 ,PCG实际用 ,目标是让 谱聚集且 变小

从纸面到算法

可执行顺序是:选容易求解且近似A的M;每轮解Mz=r,用z构造方向;对比谱、残差和单步成本。每一轮要保存足以复原失败的状态,但不要用后一步数据污染本轮本应使用的旧状态。返回值至少包含近似解、迭代/网格信息、残差或误差估计、停止原因和成功状态,这样调用者才能区分“收敛”与“被迫停下”。 对《预条件思想》,本段的验收证据具体是:A=diag(1,100),b=(1,100);M=diag(A)时 ,条件数从100降到1,一步得x=(1,1)

主动打破前提

本节必须保留的反例是:Jacobi在强非对角耦合下改善弱;ILU可填充/分解失败;M非SPD会破坏PCG。先预测哪个量会最先异常,再逐步改变一个条件。如果只看最后一个数,就无法区分问题病态、算法不稳定、实现错误和容差口径不合理。合格实验要给正常、最小、性质边界和已知失败四类输入。 对《预条件思想》,本段的验收证据具体是:选容易求解且近似A的M;每轮解Mz=r,用z构造方向;对比谱、残差和单步成本

把推导变成可验收证据

现在回到核心公式“解 ,PCG实际用 ,目标是让 谱聚集且 变小”,用维度、极端值和代回三种方法审核它。维度检查防止矩阵左右乘反或步长漏乘;极端值检查在步长趋零、残差为零或矩阵变对角时是否回到直觉;代回检查则把 worked example 的新状态放回原问题。三者中任一不通过,都不应进入大规模计算。 对《预条件思想》,本段的验收证据具体是:Jacobi在强非对角耦合下改善弱;ILU可填充/分解失败;M非SPD会破坏PCG

预条件不是“先除一下对角元”

左预条件把 改成 ,但实现中绝不显式求 ,而是每轮解较容易的 。对 SPD 问题,PCG 需要 M 也是 SPD;在对称形式下可看成求解 。CG 的经典误差界含 ,因此条件数变小、特征值聚成少数簇,Krylov 多项式就更容易同时压低所有谱分量。 对《预条件思想》,本段的验收证据具体是:预条件思想

Jacobi 取 ,构造和求解都便宜,适合先消除尺度差;对 ,从 直接降到 1。但对 ,Jacobi 完全不改变矩阵,两特征值 1.99 与 0.01 仍相差 199 倍,说明它没捕捉强耦合。ILU(0) 在原稀疏模式内做不完全 LU,通常更贴近 A,但可遇到零/小主元,也可因排序和允许填充而得到完全不同的时间—内存权衡。 对《预条件思想》,本段的验收证据具体是:解 ,PCG实际用 ,目标是让 谱聚集且 变小

严格对照要同时报告:M 的构造时间和内存、每次 成本、迭代次数、真残差、总时间及失败状态。“迭代数更少”不一定更快;一个过于昂贵或数值不稳定的 M 会让总成本反而上升。

公式逐行复核

本节唯一公式证据为:解 ,PCG实际用 ,目标是让 谱聚集且 变小。

复核时必须写出三层含义。第一层是定义:公式左侧究竟是近似解、残差、误差、概率、能量还是更新后的状态;第二层是操作:右侧每一项来自输入、旧状态还是本轮刚算出的中间量;第三层是条件:分母非零、矩阵结构、光滑性、步长、边界、独立性或稳定域中哪一项保证这一步合法。 对《预条件思想》,本段的验收证据具体是:A=diag(1,100),b=(1,100);M=diag(A)时 ,条件数从100降到1,一步得x=(1,1)

再做三个极限检查:把离散尺度或步长趋近零,观察是否回到连续定义;把耦合、噪声或残差设为零,观察是否回到可手算基线;把参数推到性质边界,确认程序返回失败或切换算法,而不是悄悄给出一个有限数。

数字基准与测试 oracle

本节已算完的基准是:A=diag(1,100),b=(1,100);M=diag(A)时 ,条件数从100降到1,一步得x=(1,1)。

把它写成测试时,断言不能只有最终答案。至少保存输入、第一中间量、最终结果、代回残差和停止状态。若答案有单位或归一化约定,也必须进入测试描述。随后只改一个参数两倍,判断结果应按线性、平方、平方根、指数还是迭代谱规律变化;缩放不符合预期时,优先检查公式与实现的对应关系。 对《预条件思想》,本段的验收证据具体是:选容易求解且近似A的M;每轮解Mz=r,用z构造方向;对比谱、残差和单步成本

这个小例负责验证实现,不负责证明所有输入都可靠。因此还要增加最小规模、性质边界和已知失败三类用例。对于浮点结果,容差必须由舍入、离散或统计误差预算推出,不能因为当前程序输出多少就把期待值改成多少。

实现清单与可观察状态

本节算法为:选容易求解且近似A的M;每轮解Mz=r,用z构造方向;对比谱、残差和单步成本。

实现时按“校验—初始化—单步更新—停止—独立复核—归档”组织。校验阶段确认形状、单位、有限值和结构前提;初始化阶段保留原始输入副本;单步更新阶段禁止混用新旧状态;停止阶段同时看残差/误差与最大工作量;复核阶段用原始问题代回;归档阶段记录版本、参数、运行命令和原始证据。 对《预条件思想》,本段的验收证据具体是:Jacobi在强非对角耦合下改善弱;ILU可填充/分解失败;M非SPD会破坏PCG

返回结果至少包括近似值、工作量、残差或误差估计、停止原因和成功状态。只返回一个数组会迫使调用者把“达到精度”“达到上限”“数值溢出”和“前提不满足”混成同一种成功。

主动打破前提

本节必须保留的反例是:Jacobi在强非对角耦合下改善弱;ILU可填充/分解失败;M非SPD会破坏PCG。

先预测反例会让哪个量首先异常,再构造最小输入实跑。报告要指出错误首次发生在问题条件、公式、索引、迭代状态还是统计解释,并给出修复所需的主元、正则化、回退、步长限制、边界处理或替代算法。仅写“可能不准”不合格;必须展示残差不降、守恒量漂移、状态越界、误差阶下降或置信区间失真等可观察差异。 对《预条件思想》,本段的验收证据具体是:预条件思想

误差预算与比较口径

预条件思想 至少分开报告输入误差、问题条件放大、离散/截断误差、迭代误差、舍入误差和随机误差中实际存在的部分。当前主导项未识别前,盲目增加迭代、网格或样本可能只会增加成本。若要比较两个算法,必须固定同一问题、同一精度目标、同一失败口径和同一硬件计时范围。 对《预条件思想》,本段的验收证据具体是:解 ,PCG实际用 ,目标是让 谱聚集且 变小

闭卷验收

  1. 用自己的话定义 预条件思想,说明输入、输出和结构前提。
  2. 重建公式 解 $M^{-1}Ax=M^{-1}b$,PCG实际用 $Mz=r$,目标是让 $M^{-1}A$ 谱聚集且 $\kappa$ 变小,逐行标注成立条件。
  3. 不看正文重算基准 A=diag(1,100),b=(1,100);M=diag(A)时 $M^{-1}A=I$,条件数从100降到1,一步得x=(1,1),并用原问题代回。
  4. 把“选容易求解且近似A的M;每轮解Mz=r,用z构造方向;对比谱、残差和单步成本”改写成带失败状态的伪代码。
  5. 解释反例“Jacobi在强非对角耦合下改善弱;ILU可填充/分解失败;M非SPD会破坏PCG”会先破坏哪一步以及如何修复。 对《预条件思想》,本段的验收证据具体是:A=diag(1,100),b=(1,100);M=diag(A)时 ,条件数从100降到1,一步得x=(1,1)

五项均能针对《预条件思想》独立回答,才算完成本节;同章另一方法的通用话术不能代替这些证据。

Practice

本课练习

4

先独立作答再提交;编程题会在隔离沙箱中真实编译、运行并对拍。

1单选:预条件思想 3

验收“提交预条件思想的数学定义、手算小例、逐步状态、残差/误差表、停止原因和失效反例”时哪项形成可复现证据?

登录 后答题可以领小红花
2多选:预条件思想 3

复核预条件思想哪些材料不可缺?

多选题:必须选全正确项,漏选或多选均不得分。

登录 后答题可以领小红花
3计算:预条件思想 3

《预条件思想》误差实验:步长缩小8倍,题设方法为一阶且处于渐近区,原误差为5,新误差是多少?

登录 后答题可以领小红花
4U04独立题07:预条件思想 4

围绕预条件思想,7个单元各2次操作,总工作量?

登录 后答题可以领小红花