R中有效的三角后置变换

时间:2015-06-30 17:04:54

标签: r regression linear-algebra

我有兴趣求解线性方程组Ax = b,其中A是下三角矩阵(n×n),b是(n×1)向量,其中n≈600k。

我在R中编码了后置替换,它适用于大小高达1000的矩阵,但对于较大的n(≈600k)则非常慢。我知道天真的后代换是O(n ^ 2)。

我的R功能如下;有没有人知道更有效(矢量化,并行化等)的方式,它可以扩展到大n?

回代

backsub=function(X,y)
{ 
 l=dim(X)
 n=l[1]  
 p=l[2]
 y=as.matrix(y)

   for (j in seq(p,1,-1))
    {  
      y[j,1]=y[j,1]/X[j,j]
      if((j-1)>0)
         y[1:(j-1),1]=y[1:(j-1),1]-(y[j,1]*X[1:(j-1),j])
    }  
    return(y)
}

1 个答案:

答案 0 :(得分:1)

R函数backsolve怎么样?它调用Level 3 BLAS routine dtrsm,这可能是你想要做的。一般来说,你不会打败BLAS / LAPACK线性代数例程:它们是疯狂优化的。