Table of Contents Author Guidelines Submit a Manuscript
Mathematical Problems in Engineering
Volume 2011 (2011), Article ID 545470, 12 pages
Research Article

A Polynomial Preconditioner for the CMRH Algorithm

1School of Mathematical Sciences, Xiamen University, Xiamen 361005, China
2School of Mathematics and Computer Science, Guizhou Normal University, Guiyang 550001, China

Received 4 June 2010; Revised 21 December 2010; Accepted 24 January 2011

Academic Editor: P. Liatsis

Copyright © 2011 Jiangzhou Lai et al. This is an open access article distributed under the Creative Commons Attribution License, which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.


Many large and sparse linear systems can be solved efficiently by restarted GMRES and CMRH methods Sadok 1999. The CMRH(m) method is less expensive and requires slightly less storage than GMRES(m). But like GMRES, the restarted CMRH method may not converge. In order to remedy this defect, this paper presents a polynomial preconditioner for CMRH-based algorithm. Numerical experiments are given to show that the polynomial preconditioner is quite simple and easily constructed and the preconditioned CMRH(m) with the polynomial preconditioner has better performance than CMRH(m).

1. Introduction

In many practical applications, we have to solve a large and sparse, nonsymmetric linear system of equations where is nonsingular, and . The linear system (1.1) can be solved efficiently by iterative methods, especially those based on the Krylov subspace Although the GMRES method [1] and CMRH method [2] are Krylov-type algorithms, they construct different Krylov subspace bases in different ways; the GMRES method uses the Arnoldi process, while CMRH uses the Hessenberg process. As the number of iterations increases, the methods become impractical because of growth of memory and computational requirement as increases, so they must be remedied by restarting; thus, the GMRES(m) and CMRH(m) algorithms were developed. It is concluded in [2] that the CMRH(m) algorithm only requires half the arithmetical operations per iteration and slightly less storage than GMRES(m). However, like GMRES(m), the CMRH(m) method may not converge in some cases. In order to remedy this defect, van Gijzen [3] presented a polynomial preconditioner to improve the GMRES(m) method. The main idea is finding the low-degree polynomials satisfying and transferring the original linear system of (1.1) into then applying the iterative method based on the following Krylov subspace: to the new linear system (1.3), obviously, . This method becomes very effective when large computation of inner product is needed. In this paper, we apply the same technique to the CMRH(m) algorithm. Our method is efficient since the CMRH process itself is utilized to construct the polynomial preconditioner. Numerical experiments are given to show that the CMRH(m) method with a polynomial preconditioner has better performance, in the sense of fewer iterations, than the original CMRH(m) method.

The rest of the paper is arranged as follows. The first part of Section 2 reviews the CMRH(m) method. The construction of the polynomial preconditioner is described in the second part of Section 2, and in the third part, the PCMRH(m) method is developed. We present some numerical experiments to show that the polynomial preconditioner is effective for the CMRH(m) method in Section 3. Section 4 is a simple conclusion.

Throughout the paper, all vectors and matrices are assumed to be real. For a vector , denotes the Euclidean norm , and denotes the maximum norm , where is the th component of a vector , and denotes the absolute value(modulus) of a real(complex) number . For a matrix , denotes the 2-norm. Furthermore, we denote by the th canonical vector of , and the first th columns of an -dimensional identity matrix, and we denote by the pseudoinverse of a matrix .

2. PCMRH(m) Algorithm

2.1. CMRH(m) Algorithm

The principle of CMRH [2] method is to use the Hessenberg process with pivoting to construct a basis of the Krylov subspace : . Precisely, the Hessenberg process produces an unit lower trapezoidal matrix and a upper Hessenberg matrix , such that Then, we find a correction vector , such that Since , we let and have Therefore, a least-squares solution could be obtained from the Krylov subspace by minimizing over , just as in the GMRES method, except that the Hessenberg process is replaced by the Arnoldi process; this is the basic idea of the CMRH method. Since the Hessenberg process will be breakdown if is zero, Sadok [2] uses a pivoting strategy such as in the Gaussian elimination method to avoid such a breakdown, and then the approximating solution can be computing by where satisfies , is an unit lower trapezoidal matrix, and denotes the pseudoinverse of a matrix for more details, see (Algorithm 1) [2].

Algorithm 1: Hessenberg process with pivoting [2].

The notation “” means as “swap contents”: . As increases, the CMRH method(Hessenberg process with pivot) becomes impractical because of the growth of memory and computational requirement, so it must be remedied by restarting, thus the CMRH(m) algorithm is developed, which is described in (Algorithm 2) [2].

Algorithm 2: CMRH(m) [2].

The main body of Algorithm 2 is the Hessenberg process with pivoting [2], in the last, we get , where minimizes ; this is a little different from the GMRES method because of the pivot strategy used in the Hessenberg process.

2.2. Construction of the Polynomial Preconditioner

The main idea of the polynomial preconditioned method is to construct a polynomial satisfying and then solve the linear system of equations instead of solving the linear system (1.1). Generally, we do not need to compute really, since what we need is only that the matrix approaches the unit matrix. In practice, if a polynomial is constructed, such that is an approximation of the solution of the linear system (1.1), then when , the following relationship holds: That is, is a polynomial preconditioner.

In the following, we utilize the residual polynomial produced from the CMRH process to construct a polynomial preconditioner.

Let be an matrix formed by Krylov vectors, that is, From (2.1), we get where is the th column of . Since the columns of span the same space as the columns of , the following relationship holds: where is an upper triangular matrix. Thus, Hence, from (2.7), we have On the other hand, from , we have . Since the columns of are linear independent, we obtain Thus, from the CMRH algorithm, we can obtain the approximate solution Since , we know that the entries of are the coefficients of , that is, if , then . Note that is the residual polynomial, so we have and [4]; therefore, becomes a preconditioner.

In the next subsection, we present the preconditioned CMRH(m) with the polynomial preconditioner described above.

2.3. PCMRH(m) Algorithm

The polynomial preconditioned CMRH(m) (PCMRH(m)) method is given in the following, which is composed of two parts, in the first part, the polynomial preconditioner is constructed, and in the second part, the CMRH(m) method is applied to the new linear systems (Algorithm 3).

Algorithm 3: PCMRH(m).

3. Numerical Experiments

In this section, we give some numerical examples to compare the performance of PCMRH(m) with CMRH(m). All codes were written in Matlab 6.5 and run on AMD Athlon(tm) 64 X2 Dual Core Processor 2.20 GHz equipped with 1.5 G of RAM. In these numerical experiments, all the matrices are from Sadok's paper [2] we always take the initial vector , , and . We use the inequality as stopping criteria. In the figures, solid lines(-) denote the CMRH(m) method, and dots(-.) denote the PCMRH(m) method. The -axis denotes the number of iterations, and -axis denotes the norm of the residual : .

Example 3.1. The first example is taken from Brown [5]. The matrix is used in three experiments, whose results are listed in Figures 1 and 2 and Table 1, respectively. In Figure 1, , , and the degree of the preconditioned polynomial: . In Figure 2, , , and . In Table 1, , and ranges from 1 to 20.
From Figures 1 and 2, we can see that the PCMRH(m) method converges much faster than CMRH(m), when , , the CMRH(20) method needs 107 restarts to make sure that the residual norm is , while PCMRH(20) can get only in 3 restarts. When , , the CMRH(20) method needs 840 restarts to make sure that the residual norm is , while PCMRH(20) can get only by 6 restarts. The polynomial preconditioner is well done.
Let range from 1 to 20 and list PCMRH(20) in Table 1. We see that only when , the PCMRH(20) method does not converge, and when , PCMRH(20) has the best performance.

Table 1
Figure 1: , .
Figure 2: , .

Example 3.2. The matrix is taken from [6]. In this experiment, we let , , and .
From Figure 3, we can also see that the PCMRH(20) method converges much faster than CMRH(20). The CMRH(20) method needs 317 restarts to make sure the residual norm is , while PCMRH(20) reaches only in 37 restarts. So, we can conclude that the polynomial preconditioner makes CMRH(m) algorithm more efficient.

Figure 3: , .

Example 3.3. Let , where is a bidiagonal matrix of the form and .
In this experiment, we compare the PCMRH(m) method with CMRH(m) and GMRES(m). In Figure 4, we use the dot line to denote the GMRES(m) method.
It can be seen from Figure 4 that the GMRES(20) method is stagnate since some eigenvalues of are negative; it uses 1000 restarts or about 368 seconds to make the residual norm reach . Meanwhile, the CMRH(20) method uses 883 restarts or about 100 seconds to get the residual norm be ; however, the PCMRH(20) method with can reach only by 481 restarts or about 57 seconds. These results are also listed in Table 2 and show that the polynomial preconditioner is effective.

Table 2
Figure 4: .

Table 3 lists the performance of PCMRH(20). It is seen that the PCMRH(20) method is convergent when the value of ranges from 1 to 20, but it can not conclude that the number of restarts and the time needed by PCMRH(20) decrease(increase) as increases(decreases). In fact, when , the PCMRH(20) method performs the best.

Table 3

4. Conclusion

To accelerate the convergence, we take advantage of the CMRH process to construct a polynomial preconditioner for CMRH(m) algorithm. Numerical experiments show that the preconditioned CMRH(m) algorithm is more efficient than the CMRH(m) algorithm without the polynomial preconditioner. However, the degree of the polynomial used as preconditioner should be small, otherwise it possibly reduces the preconditioner's effectiveness.


This work is supported by the National Natural Science Foundation of China no. 10961010.


  1. Y. Saad and M. H. Schultz, “GMRES: a generalized minimal residual algorithm for solving nonsymmetric linear systems,” SIAM Journal on Scientific and Statistical Computing, vol. 7, no. 3, pp. 856–869, 1986. View at Publisher · View at Google Scholar · View at Zentralblatt MATH
  2. H. Sadok, “CMRH: a new method for solving nonsymmetric linear systems based on the Hessenberg reduction algorithm,” Numerical Algorithms, vol. 20, no. 4, pp. 303–321, 1999. View at Publisher · View at Google Scholar · View at Zentralblatt MATH
  3. M. B. van Gijzen, “A polynomial preconditioner for the GMRES algorithm,” Journal of Computational and Applied Mathematics, vol. 59, no. 1, pp. 91–107, 1995. View at Publisher · View at Google Scholar · View at Zentralblatt MATH
  4. P. E. Saylor and D. C. Smolarski, “Implementation of an adaptive algorithm for Richardson's method,” Linear Algebra and its Applications, vol. 154–156, pp. 615–646, 1991. View at Publisher · View at Google Scholar · View at Zentralblatt MATH
  5. P. N. Brown, “A theoretical comparison of the Arnoldi and GMRES algorithms,” SIAM Journal on Scientific and Statistical Computing, vol. 12, no. 1, pp. 58–78, 1991. View at Publisher · View at Google Scholar · View at Zentralblatt MATH
  6. R. T. Gregory and D. L. Karney, A Collection of Matrices for Testing Computational Algorithms, John Wiley & Sons, New York, NY, USA, 1969.