ALIOTH · 三分钟看懂

从方程到矩阵

一台求解器的入口,以及它的边界
−∇·(κu) = f u 温度场(未知) κ 材料的导热系数 f 热源 变系数热传导方程 −∇·(κ∇u) = f 5 × 5 = 25 个未知数 连续的 u(x, y) ↓ 只看格点 u1, u2, … , u25 真实仿真里,是一百万个。 4u0uu uu = h²f0 一条关系,只连 5 个未知数 A x = f A:25 × 25,邻居关系 x:25 个未知数 f:热源与边界 每行只有 ≈ 5 个非零元 一百万未知数 ≈ 五百万非零元,而不是一万亿 稀疏,让百万阶矩阵 存得下、算得动。 x 回到网格上,就是温度场 1e0 1e-4 1e-8 目标 28 次迭代,残差 < 1e-8 迭代次数 → 对称正定 · 稀疏 同一类矩阵 多重网格 · 共轭梯度 ✓ 解 + 回执 此前的热传导:线性 −∇·( κu ) = f 系数 κ 是已知的材料参数,直接装配 流体的对流项:非线性 (u·∇)u 同一个未知数,出现两次 “系数”是 u 本身:要装配,得先知道答案 装配 A,需要先知道系数 u 解出 u,需要先有矩阵 A 循环依赖:鸡生蛋,蛋生鸡 ① 先猜一个解 x0 瞎猜也行,比如全零 ② 冻结:用猜测算出系数 u 暂时当已知,装配出 Ak Ak x = f ③ 解线性方程:前面的老手艺全用得上 ④ 得到更好的猜测 解冻,回到 ②,再转一圈 残差一圈圈缩小 1e01e-21e-51e-8 每圈解一张线性矩阵,几圈到几十圈收敛 对称:作用是相互的 aij = aji 两点之间一条导热路径,两头共用 正定:能量地形是一只碗 往低处滚 碗底 = 解,且只有一个 任何状态的能量都为正,弯曲方向处处向上 热、结构、电路是耗散系统,离散后天然长成这样 共轭梯度 = 顺碗壁下滚;多重网格 = 粗碗里找方向,细碗里精修 高频波动(Helmholtz) −Δu − k²u = f 波不耗散:−k² 从刚度里往外减,减过了头 有的方向向上 有的方向向下 碗塌成马鞍:“往低处滚”失去方向 对流占优的输运 风向 → 上游推得动下游,下游推不动上游 aij ≠ aji 镜像被打破 GMRES · 专用预条件器 不靠碗也能走的迭代法:另一套手艺,另一个战场 一般矩阵:低能模态孤立可数 粗网格逐个网住 ✓ cfd2:低能谱连成一片 粗空间装不下 ✗ 回退:经典迭代,慢而必达 fallback_used: true converged: true 输入:一张稀疏矩阵 玉衡 读代数特征,一次前向,数十毫秒 同时吐出两样组件 ① 逐点平滑权重 每个格点,一个数 松弛因子,从旋钮 变成一张场 ② 层间插值算子 粗化策略交给网络:粗点 = 细邻居的加权和 两样组件一起上场:收敛与精度,由数值框架背书 科学计算的话 AI 的话 严格说,是 U-Net 长得像多重网格:多重网格 1977 年就出生了。 −∇·(κ∇u) = f 方程 离散 Ax = f 矩阵 求解器 ★ 由 AI 现场生成 解 x + 可查验的回执 吃得下的走流水线,吃不下的有手法兜底。