qsolve {INLA}R Documentation

Solves linear SPD systems

Description

This routine use the GMRFLib implementation to solve linear systems with a SPD matrix.

Usage

     inla.qsolve(Q, B, reordering = inla.reorderings(), method = c("solve", "forward", "backward"))
 

Arguments

Q

A SPD matrix, either as a (dense) matrix or sparse-matrix

.

B

The right hand side matrix, either as a (dense) matrix or sparse-matrix.

reordering

The type of reordering algorithm to be used for TAUCS; either one of the names listed in inla.reorderings() or the output from inla.qreordering(Q). The default is "auto" which try several reordering algorithm and use the best one for this particular matrix (using the TAUCS library).

method

The system to solve, one of "solve", "forward" or "backward". Let Q = L L^T, where L is lower triangular (the Cholesky triangle), then method="solve" solves L L^T X = B or equivalently Q X = B, method="forward" solves L X = B, and method="backward" solves L^T X = B.

Value

inla.qsolve returns a matrix X, which is the solution of Q X = B, L X = B or L^T X = B depending on the value of method.

Author(s)

Havard Rue hrue@r-inla.org

Examples

n = 10
QQ = matrix(runif(n^2), n, n)
Q = inla.as.dgTMatrix(QQ %*% t(QQ))
B = matrix(runif(n^2-n), n, n-1)

X = inla.qsolve(Q, B, method = "solve")
print(paste("err", sum(abs( Q %*% X - B))))

L = t(chol(Q))
X = inla.qsolve(Q, B, method = "forward")
print(paste("err", sum(abs( L %*% X - B))))

X = inla.qsolve(Q, B, method = "backward")
print(paste("err", sum(abs( t(L) %*% X - B))))

[Package INLA version 20.11.29 Index]