R中稀疏矩阵的R逆与正则逆

R中稀疏矩阵的R逆与正则逆,r,matrix,matrix-inverse,R,Matrix,Matrix Inverse,我正在构造一个矩阵C,它的类是“dgCMatrix”,因为我在R中的矩阵库中使用了bdiag函数。然而,与在不属于类稀疏(2)的情况下反转同一矩阵相比,反转稀疏矩阵(1)会产生不同的结果。一个是给出了错误的答案。有人知道为什么吗 ## rm(list=ls()) library(Matrix) cy11=function(a,b,H){ d=outer(a,b,`-`);I=outer(a,b,`==`) H[1]^2*exp(-0.25*d^2/H[2]^2) + I*H[3]^2

我正在构造一个矩阵C,它的类是“dgCMatrix”,因为我在R中的矩阵库中使用了bdiag函数。然而,与在不属于类稀疏(2)的情况下反转同一矩阵相比,反转稀疏矩阵(1)会产生不同的结果。一个是给出了错误的答案。有人知道为什么吗

## rm(list=ls())
library(Matrix)

cy11=function(a,b,H){
  d=outer(a,b,`-`);I=outer(a,b,`==`)
  H[1]^2*exp(-0.25*d^2/H[2]^2) +  I*H[3]^2
}
x0=c(1,1,0.05)
n1=25;n2=100
data=matrix( rnorm(n1*n2,mean=0,sd=5), n1, n2)
slast=seq(0,10,length.out=26)
z=list();Z=list()

for(i in 1:n2){
    a=data[,i]
    z[[i]]=cy11(a,a,x0)
    }
for(i in 1:n2)
{
  a=data[,i]
  Z[[i]]=cy11(a,slast,x0)
}
A=bdiag(z)
D=cy11(slast,slast,x0)
B=do.call(rbind,Z)

C=rbind(cbind(A,B),cbind(t(B),D))

one=solve(C)
two=solve(as.matrix(C))

我必须承认,人们对对角矩阵的求逆会导致问题的产生感到困惑。我也承认我在线性代数课上的很多课上都睡过觉。我不愿意将coed(呃,代码)粘贴到我的控制台中,因为它的第一行。这看起来确实产生了预期的结果:
solve(矩阵(c(7,0,0,5),2))
与矩阵1-2.3
all.equal(1,2)
在Windows 8.1上使用“R版本3.2.3修补(2016-01-12 r69945)”为我提供了真实的结果。@G.Grothendieck我刚刚更改(length.out=26)你会看到difference@G.Grothendieck似乎当slat的长度大于n1时,R中的稀疏函数存在一些问题。
all.equal(one,two)
仍然为真。