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

Python/numpy与Mathematica计算矩阵特征值/向量结果不一致排查

Mathematica移植Python特征计算结果不匹配问题

我承担了将Mathematica程序移植为Python(Jupyter Notebook)代码的任务,移植过程中发现两侧计算结果无法匹配:Mathematica程序调用Eigensystem[]函数计算矩阵的特征值与特征向量,Python侧选用功能对应的eig()函数实现相同逻辑,但最终计算结果存在明显差异——特征值偏差幅度较小,但特征向量差异较大。
已提前排除特征向量存储与归一化规则的影响:Python返回的特征向量为归一化形式、按列存储,Mathematica返回的特征向量默认不归一化、按行存储,该差异并非导致结果不匹配的原因。

待验证猜想

  • 待计算矩阵规模为26×26,较大的矩阵尺寸是否会导致两个平台的数值计算结果出现差异?
  • Mathematica更擅长符号数学运算、计算过程无舍入误差,这一特性是否是造成结果偏差的原因?

待计算的26×26矩阵

535.8 228.0 0 0 0 0 0 0 0 0 0 0 0 98.7 0 0 0 0 0 0 0 0 0 0 0 0
228.0 535.8 98.7 0 0 0 0 0 0 0 0 0 0 0 98.7 0 0 0 0 0 0 0 0 0 0 0
0 98.7 535.8 228.0 0 0 0 0 0 0 0 0 0 0 0 98.7 0 0 0 0 0 0 0 0 0 0
0 0 228.0 535.8 98.7 0 0 0 0 0 0 0 0 0 0 0 98.7 0 0 0 0 0 0 0 0 0
0 0 0 98.7 535.8 228.0 0 0 0 0 0 0 0 0 0 0 0 98.7 0 0 0 0 0 0 0 0
0 0 0 0 228.0 535.8 98.7 0 0 0 0 0 0 0 0 0 0 0 98.7 0 0 0 0 0 0 0
0 0 0 0 0 98.7 535.8 228.0 0 0 0 0 0 0 0 0 0 0 0 98.7 0 0 0 0 0 0
0 0 0 0 0 0 228.0 535.8 98.7 0 0 0 0 0 0 0 0 0 0 0 98.7 0 0 0 0 0
0 0 0 0 0 0 0 98.7 535.8 228.0 0 0 0 0 0 0 0 0 0 0 0 98.7 0 0 0 0
0 0 0 0 0 0 0 0 228.0 535.8 98.7 0 0 0 0 0 0 0 0 0 0 0 98.7 0 0 0
0 0 0 0 0 0 0 0 0 98.7 535.8 228.0 0 0 0 0 0 0 0 0 0 0 0 98.7 0 0
0 0 0 0 0 0 0 0 0 0 228.0 535.8 98.7 0 0 0 0 0 0 0 0 0 0 0 98.7 0
0 0 0 0 0 0 0 0 0 0 0 98.7 535.8 228.0 0 0 0 0 0 0 0 0 0 0 0 98.7
98.7 0 0 0 0 0 0 0 0 0 0 0 228.0 535.8 98.7 0 0 0 0 0 0 0 0 0 0 0
0 98.7 0 0 0 0 0 0 0 0 0 0 0 98.7 535.8 228.0 0 0 0 0 0 0 0 0 0 0
0 0 98.7 0 0 0 0 0 0 0 0 0 0 0 228.0 535.8 98.7 0 0 0 0 0 0 0 0 0
0 0 0 98.7 0 0 0 0 0 0 0 0 0 0 0 98.7 535.8 228.0 0 0 0 0 0 0 0 0
0 0 0 0 98.7 0 0 0 0 0 0 0 0 0 0 0 228.0 535.8 98.7 0 0 0 0 0 0 0
0 0 0 0 0 98.7 0 0 0 0 0 0 0 0 0 0 0 98.7 535.8 228.0 0 0 0 0 0 0
0 0 0 0 0 0 98.7 0 0 0 0 0 0 0 0 0 0 0 228.0 535.8 98.7 0 0 0 0 0
0 0 0 0 0 0 0 98.7 0 0 0 0 0 0 0 0 0 0 0 98.7 535.8 228.0 0 0 0 0
0 0 0 0 0 0 0 0 98.7 0 0 0 0 0 0 0 0 0 0 0 228.0 535.8 98.7 0 0 0
0 0 0 0 0 0 0 0 0 98.7 0 0 0 0 0 0 0 0 0 0 0 98.7 535.8 228.0 0 0
0 0 0 0 0 0 0 0 0 0 98.7 0 0 0 0 0 0 0 0 0 0 0 228.0 535.8 98.7 0
0 0 0 0 0 0 0 0 0 0 0 98.7 0 0 0 0 0 0 0 0 0 0 0 98.7 535.8 228.0
0 0 0 0 0 0 0 0 0 0 0 0 98.7 0 0 0 0 0 0 0 0 0 0 0 228.0 535.8

两侧实现代码与运行结果

Python侧

实现代码:

EigVal, EigVec = eig(H)
print(EigVal)

运行得到的特征值结果:

[114.72374539 141.10213701 154.80916862 224.05697839 240.17122217
 313.58869418 326.37713436 329.32297117 350.05452044 362.92295125
 381.1300867  402.40762061 415.23547492 656.36452508 669.19237939
 690.4699133  708.67704875 721.54547956 742.27702883 745.22286564
 758.01130582 831.42877783 847.54302161 916.79083138 930.49786299
 956.87625461]

Mathematica侧

实现代码:

ES = Eigensystem[H];
ES[[1]]

运行得到的特征值结果:

953.936, 932.579, 898.44, 853.757, 801.921, 758.013, 747.697, 
739.529, 711.095, 700.995, 677.212, 669.422, 536.572, 535.028, 
402.178, 394.388, 370.605, 360.505, 332.071, 323.903, 313.587, 
269.679, 217.843, 173.16, 139.021, 117.664

注:因特征向量数据量较大,此处未附上对应的计算结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 01:51:20