# sweepex.r J F Monahan September 2007 # # sweep operator -- function and example # A <- matrix( c(3,1,0,1,4,2,0,2,6), 3, 3) # write it out A # define function regsweep <- function(A,k) { d <- A[k,k] # sweep out row k, col k A[k,] <- A[k,]/d b <- A[,k] b[k] <- 0 # don't change row k here A <- A - outer(b,A[k,]) # main operation A[,k] <- -b/d # fix col k A[k,k] <- 1/d # diagonal element & done regsweep <- A } # # write it out A <- regsweep(A,2) # sweep second row/col A A <- regsweep(A,3) # sweep third row/col A A <- regsweep(A,2) # sweep second row/col A A <- regsweep(A,1) # sweep first row/col A rm(list=ls()) # clean up