Devlog · U-M1s-01 linalg + Lawson–Hanson NNLS(2026-09-29,W4 轮,M1s 轨道开闸)
Source:vignettes/articles/devlog-2026-09-29-M1s-01.qmd
做了什么
-
engine/linalg.rs:pivot 化 LDLᵀ(Bunch–Kaufman 对角 pivot,α=(1+√17)/8,LAPACK dsytf2 型列搜索;选择依据入模块文档)+ 三角解族(无 formed-inverse)+ Gram 路径(对角缩放 + ε‖G‖ ridge,GRAM_RIDGE_EPS=1e-12 相对值,依据入注释);结构奇异显式拒绝不产 NaN。 -
engine/nnls.rs:Lawson–Hanson on Gram(K-format)——输入 G=AᵀA 与 b=Aᵀy(调用方不保留 A;KL/MM 内循环与 per-sample 拟合的公共接口)、passive/free 集 + 最速下降选列 + 可行方向截断步、KKT 可配置断言(容差为梯度后向误差尺度)、迭代上限、解结构含 passive/kkt_residual/objective_trace。 -
不引入 ndarray:纯 Vec
行主序足够,engine 保持零依赖且规避 matrixmultiply MSRV 坑(Cargo.lock 零变化)。 - 测试:手算 golden、随机 PSD 重建恒等式、暴力 2ⁿ active-set 对拍 60 例(1e-10)、Hilbert-8(κ≈1.5e10)与近平坦签名 Gram(96 通道、pairwise cosine 1−1e-10,正是领域场景)稳定性案例、截断路径确定性扫描命中、x≥0/trace 单调/确定性 property。TDD 先红(21 失败)后绿。
- 测试抓出 2 个真 bug(实现者自证测试价值):2×2 pivot 次对角元泄入 L;Schur 更新只写下三角致镜像过期扩散。均修复。
验收
stable 41/41 与 +1.71.0 41/41;workspace clippy -D warnings 零;deny 四节绿;零新依赖。
契约与裁决
- 近平坦 κ≈1e10 只断言稳定/KKT/拟合、不断言真值恢复(该尺度恢复本身病态)——对 ARCH §9 的忠实读法,恢复断言放 κ≈1e6 变体。
- 线程不变性就绪:全固定循环序(U-M1s-05 接 per-call 池)。
- 容差定值(select 1e-11/kkt 1e-8)待 U-M1s-02/U-M3a 端到端集成时复核。
遗留
- 高度简并 Gram 的 ridge 关闭退化循环由迭代上限兜底;U-M2 压力测试若暴露再上 Bro–de Jong。
- 本单元审核排下一轮(与 G0 修复验证合并)。