15.05.2015 Views

Greville's Method for Preconditioning Least Squares ... - Projects

Greville's Method for Preconditioning Least Squares ... - Projects

Greville's Method for Preconditioning Least Squares ... - Projects

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

18<br />

10. f i = ‖u‖ 2 2<br />

11. v i = u<br />

12. else<br />

13. f i = ‖k i ‖ 2 2 + 1<br />

14. v i = (A † ∑i−1<br />

1<br />

i−1 )T k i = v p(e p − k p) T k i<br />

f p<br />

p=1<br />

15. end if<br />

16. end <strong>for</strong><br />

17. K = [k 1 , . . . , k n], F = Diag {f 1 , . . . , f n}, V = [v 1 , . . . , v n].<br />

In Algorithm 2, all the columns k j , j = i, . . . , n are updated in one outer loop. In<br />

Algorithm 5, all the updates <strong>for</strong> each k i column are finished at a time. This left-looking<br />

approach is suggested in [1,5]. From [1], a left-looking version is sometimes more robust<br />

and efficient. In Section 8 our preconditioners are computed by Algorithm 5.<br />

In the next section, we will use Algorithm 5 as our preconditioning algorithm.<br />

Since we cannot control the sparsity of V , and V can be very dense, we try not to<br />

store V . Note that when column a j is recognized as a linearly independent column,<br />

the corresponding column becomes v j = A(e j − k j ). Hence, we do not have to store<br />

v j . When we need v j in the 4th line in Algorithm 5, we can compte θ = a T i A(e j − k j ),<br />

where a T i A is used <strong>for</strong> i − 1 times and discarded. For the v j corresponding to a linearly<br />

dependent column, we need to store it.<br />

8 Numerical Examples<br />

In this section, we use matrices from the Florida University Sparse Matrices Collection<br />

[11] to test our algorithms, where zero rows are omitted and if the original matrix<br />

has more columns than rows we use its transpose. All computations were run on a<br />

Dell Precision 690, where the CPU is 3 GHz and the memory is 16 GB, and the<br />

programming language and compiling environment was GNU C/C++ 3.4.3 in Redhat<br />

Linux. Detailed in<strong>for</strong>mation of the matrices is given in Table 1.

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!