A preconditioner (matrix) is a matrix which multiplies (from left or from right, thus left and right preconditioners) the matrix of coefficients of a system which discretizes a differential equation in order to get faster convergence (=smaller condition number) of iterative numerical solution techniques. As a technique, preconditioning is used also for optimization algorithms.
Owe Axelsson, Iterative Solution Methods, Cambridge University Press 1996
J. H. Bramble, J.E. Pasciak, A preconditioning technique for indefinite systems resulting from mixed approximations of elliptic problems, Math. Comp. 50 (1988) 1–17
Tyrone Rees, Martin Stoll, Andy Wathen, All-at-once preconditioning in PDE-constrained optimization, Kybernetika 46:2 (2010) 341 – 360 pdf
John W. Pearson, Martin Stoll, Andy Wathen, Regularization-robust preconditioners for time-dependent PDE constrained optimization problems, SIAM J. Matrix Anal. and Appl., 33(4), 1126–1152, 2012 doi
Michele Benzi, Preconditioning techniques for large linear systems: a survey, J. of Computational Physics 182, 418–477 (2002) doipdf