On Thu, Jun 10, 2010 at 12:11 AM, Jake Mannix <jake.mannix@gmail.com> wrote:
>
> The second term is just the rowaverage of rowi 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 mapreduces 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
