ToeplitzInverseUpdate function

Inverse of Toeplitz matrix of order n+1 given inverse of order n

Inverse of Toeplitz matrix of order n+1 given inverse of order n

Let G be a Toeplitz matrix of order n and with (i,j)-element, r[Abs[i-j]]. So the first row of G may be written (r[0],...,r[n-1]). Suppose the next element in the sequence is r[n]. Then the inverse of the Toeplitz matrix whose first row is (r[0],...,r[n]) may be obtained either using ToeplitzInverseUpdate or directly using TrenchInverse. ToeplitzInverseUpdate is somewhat faster.

ToeplitzInverseUpdate(GI, r, rnew)

Arguments

  • GI: inverse of Toeplitz matrix G of order n
  • r: first row of G , ie r[0],...,r[n-1]
  • rnew: next element, r[n]

Details

Although this update requires O(n2)O(n^2) flops, the same as TrenchInverse, it is somewhat faster in practice.

Returns

inverse matrix of order n+1

References

Graybill, F.A. (1983). Matrices with Applications in Statistics.

McLeod, A.I., Yu, Hao, Krougly, Zinovi L. (2007). Algorithms for Linear Time Series Analysis, Journal of Statistical Software.

Author(s)

A.I. McLeod

See Also

TrenchInverse

Examples

#In this example we compute the update inverse directly and using ToeplitzInverseUpdate and #compare the result. phi<-0.8 sde<-30 n<-30 r<-arima.sim(n=30,list(ar=phi),sd=sde) r<-phi^(0:(n-1))/(1-phi^2)*sde^2 n1<-25 G<-toeplitz(r[1:n1]) GI<-solve(G) #could also use TrenchInverse GIupdate<-ToeplitzInverseUpdate(GI,r[1:n1],r[n1+1]) GIdirect<-solve(toeplitz(r[1:(n1+1)])) ERR<-sum(abs(GIupdate-GIdirect)) ERR