You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Dyalog中使用矩阵求逆⌹避免DOMAIN ERROR?

从APL*PLUS PC移植到Dyalog时⌹运算符触发DOMAIN ERROR的解决方法

问题场景

将DOS平台旧版APL*PLUS PC函数移植到Dyalog APL过程中,矩阵求逆操作⌹触发DOMAIN ERROR,该问题在GNU_64 APL中同样可复现。

复现代码

F←6.91E9 5.655E9
      I←¯0.0144722 ¯0.01897385

      Z←I⌹2 2⍴F[1],(÷-F[1]),F[2],÷-F[2]
DOMAIN ERROR
      Z←I⌹2 2⍴F[1],(÷-F[1]),F[2],÷-F[2]
         ∧

问题原因

APL*PLUS PC对矩阵奇异性的判定阈值更为宽松,而Dyalog与GNU APL的⌹运算符对接近奇异的矩阵会严格抛出DOMAIN ERROR。本次案例中的2x2矩阵行列式数值极小,属于接近奇异的范畴,因此触发报错。

自定义解决方案

针对2x2矩阵,手动实现求逆与矩阵乘法逻辑,绕过标准运算符的严格检查,可得到正确计算结果。

自定义DIVIDE函数代码

Z←I2 DIVIDE M22;A;B;C;D
 A←M22[1;1] ⋄ B←M22[1;2] ⋄ C←M22[2;1] ⋄ D←M22[2;2]
 Z←÷(A×D)-B×C
 Z←Z×(2 2)⍴D,(-B),(-C),A
 Z←Z+.×I2

测试结果

Z←I DIVIDE 2 2⍴F[1],(÷-F[1]),F[2],÷-F[2]
      Z
4.625648461E¯13 122089494.5

结果验证

(2 2⍴F[1],(÷-F[1]),F[2],÷-F[2])+.×Z
¯0.0144722 ¯0.01897385

验证结果与原始输入I完全一致,说明自定义函数逻辑正确。

内容的提问来源于stack exchange,提问作者MLS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 17:55:58