1

tl/dr

有谁知道允许使用 tikhonov 正则化求解线性系统的函数或例程?更一般地说,正确求解线性系统的函数或例程,无论是条件良好还是病态?

细节

我在使用 R 标准函数 solve 和 ginv 找到正确的逆矩阵时遇到了很大的问题。我不明白为什么 solve 或 ginv 无法正确反转某些矩阵。例如,反转以下矩阵 $X$ $(4 \times 4)$:

[r1] 112    114.02675   -99.0725    48.21424
[r2] 114.02675  116.09108   -100.91021  49.01754
[r3] -99.0725   -100.91021  89.97304    -39.267
[r4] 48.21424   49.01754    -39.267         26.11804

给出了这个奇怪的结果 $X^{-1}$ :

[r1]  7581993.46   -7459378.79  -46534.6234 -66885.6052
[r2] -7459378.79   7338753.44   45787.7223  65800.3842
[r3] -46534.62     45787.72 290.6085    407.4297
[r4]  66885.61     65800.38 407.4297    592.1243

MS Excel 提供了这个是正确的:

[r1] 290607.5736   -285895.9835 -1773.086548    -2570.2266
[r2] -285895.9835  281267.2032  1749.988341 2524.997062
[r3] -1773.086548  1749.988341  15.81951395 12.59978592
[r4] -2570.2266    2524.997062  12.59978592 24.81554691

我知道这是正确的解决方案,因为 $XX^{-1}$ 给出了单位矩阵(不是用solve或ginv计算的逆矩阵)。

  1. 有人有解释吗?

  2. 如何计算正确的逆矩阵R

谢谢你的帮助

4

1 回答 1

0

我刚看到这个问题。让我分享一些信息:

我使用 Microsoft R open v. 4.0。看看我的结果:

> a = c(112,    114.02675,   -99.0725,    48.21424,
+ 114.02675,  116.09108,   -100.91021,  49.01754,
+ -99.0725,   -100.91021,  89.97304,    -39.267,
+ 48.21424,   49.01754,    -39.267,         26.11804)
> 
> matA = matrix(a, ncol=4)
> matA
          [,1]       [,2]       [,3]      [,4]
[1,] 112.00000  114.02675  -99.07250  48.21424
[2,] 114.02675  116.09108 -100.91021  49.01754
[3,] -99.07250 -100.91021   89.97304 -39.26700
[4,]  48.21424   49.01754  -39.26700  26.11804
> 
> solve(matA)
            [,1]        [,2]        [,3]        [,4]
[1,]  290607.572 -285895.982 -1773.08654 -2570.22659
[2,] -285895.982  281267.202  1749.98833  2524.99705
[3,]   -1773.087    1749.988    15.81951    12.59979
[4,]   -2570.227    2524.997    12.59979    24.81555
于 2021-07-13T02:30:02.557 回答