是否有人知道允许使用tikhonov正则化来求解线性系统的函数或例程?更一般地说,正确解决线性系统的功能或程序,无论是好还是病态?
使用R标准函数solve和ginv找到正确的逆矩阵存在很大问题。我不明白为什么解决或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} $给出了Identity矩阵(不是使用solve或ginv计算的逆矩阵)。
有没有人有解释?
如何在R
中计算正确的逆矩阵?
感谢您的帮助
答案 0 :(得分: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