Matrix Preconditioning Techniques and Applications