On Thu, Jun 10, 2010 at 12:11 AM, Jake Mannix <[email protected]> wrote:
> > The second term is just the row-average of row-i times v.zSum(), and the > last term is a constant for all values in the output vector, and is just (A > . v).zSum(). > So no additional map-reduces are needed to incorporate this - it's just > that the Lanczos solver will need to be told about the row and column > averages of the > input and optionally at each Lanczos iteration, modify the resultant vector > as above. > I should caution here: the simple form of my modification only would work in exactly that way if the input matrix is symmetric. When it's not symmetric, the inner loop of Lanczos isn't A . v, but A.timesSquared(v) = (A' . A).v, and so if you shift A, you will need to be slightly more clever about how you peel out the matrix of mean values. It can certainly be done sparsely still (at worst, compute (A - B).v, then (A - B)'.v !), but I'm not sure if you can do it in the k mapreduce steps that you can do it in the uncentered form (it might take the 2k that the previous parenthetical remark implies). -jake
