次数 N < 10 の行列の Cramer の規則 (2 つの行列式の商) を使用して線形方程式系を解くと、LAPACK ソリューションと比較してかなり大きな残差エラーが発生することがわかりました。
次に例を示します。
float B00[36] __attribute__((aligned(16))) = {127.3611, -46.75962, 62.8739, -9.175959, 27.23792, 1.395347,
-46.75962, 841.5496, 406.2475, -119.3715, -33.60108, 6.269638,
62.8739, 406.2475, 1302.981, -542.8405, 95.03378, 42.77704,
-9.175959, -119.3715, -542.8405, 434.3342, 34.96918, -33.74546,
27.23792, -33.60108, 95.03378, 34.96918, 59.10199, -1.880791,
1.395347, 6.269638, 42.77704, -33.74546, -1.880791, 2.650853};
float c00[6] __attribute__((aligned(16))) = {-0.102149, -5.76615, -17.02828, 12.47396, 1.158018, -0.9571021};
これをlinsolvingすると、LAPACK (Intel MKL から) が生成されます。
x = [-0.000314947
-0.000589154
-0.00587876
0.0184799
0.01738
-0.0170484]
Cramer の規則 (独自の実装) により、次の結果が得られます。
x = [-0.000314933
-0.000798058
-0.00587888
0.0184808
0.017381
-0.0170508]
違いに注意x[1]
。
私の行列式計算が正しいことを保証できます。誰かが同様の観察をしたか、これについて何か言うことができますか?