Tremendous progress has been made in the scientific and engineering disciplines regarding the use of iterative methods for linear systems. The size and complexity of linear and nonlinear systems arising in typical applications has grown, meaning that using direct solvers for the three-dimensional models of these problems is no longer effective. At the same time, parallel computing, becoming less expensive and standardized, has penetrated these application areas. Iterative methods are easier than direct solvers to implement on parallel computers but require approaches and solution algorithms that are different from classical methods. This second edition gives an in-depth, up-to-date view of practical algorithms for solving large-scale linear systems of equations, including a wide range of the best methods available today. A new chapter on multigrid techniques has been added, whilst material throughout has been updated, removed or shortened. Numerous exercises have been added, as well as an updated and expanded bibliography.