CS143M Project -- Questions that you might look at:

  • For GMRES: What is a good choice of restrt? Choose several values of restrt (between 10 and 100 or perhaps somewhat larger) a several matrices. Use run time (calculated using tic and toc) to decide which choices of restrt are best

For any method:

  • Does preconditioning make a big difference? Try a method with several examples with and without preconditioning. What is the effect on the number of iterations? On the run time (use tic and toc to determine the run time)? On the flop count (if you use Matlab 5.3)? Does changing the drop tolerance in luinc make a big difference? Also Matlab’s function luinc includes a number of different kinds of preconditioning (drop tolerance, level of fill-in, modified incomplete LU).
  • Examine the relative effect of two of these. In Matlab type “help luinc” (and “help struct”) or use the help menu (I find the html help desk most useful) to find out more about the options. I will try to hand out a short summary of the some of these methods.
  • Compare Matlab’s older routine, luinc, for incomplete LU factorization with the newer Matlab routine ilu. Type “helpilu” to see how to use ilu.

Compare any two methods:

  • Does bicgstab converge faster than bicg? Is the extra work per step worth the reduction in steps? Does bicg fail more frequently?
  • Does QMR require substantially less work than GMRES? Is the reduction of work per step worth the extra iterations? Does QMR fail more often?
  • Is GMRES with a restrt better or worse than GMRES without restrt in terms of run time, iterations and reliability? . (Note that if you want to use the gmres function to run gmres without restarts let restrt be max_iter).
  • Is QMR better than bicg in terms of iterations, run time(or flops if you have Matlab 5.3) or reliability?
  • Is CGS better than bicg in terms of iterations, run time or reliability?
  • Compare any two methods (bicg, cgs, qmr, bicgstab or gmres) in the same way.

Focus on a class of matrices (UFget is useful to examine these questions):

  • Select matrices in a range of condition numbers (you can use Matlab’scondest to estimate the condition number). Compare two methods (or even one method) for moderately well conditioned matrices (for example, condest(A) <= 100) and poorly condition (condest(A) >= 1.e6).
  • For matrices of different condition numbers how important is preconditioning?
  • Focus on matrices in a particular type application. The application is discussed in four places in the UF sparse matrix collection: (a) If you download a matrix using Problem= UFget(some number); the Problem.notes may describe the application. (b) If you go to the web page for a particular matrix the notes will also appear on that web page. (c) Problem.kind has some information about the kind of application. (d) If you go to a matrix group, click on the description of the matrix group for application information.
  • Compare matrices of different sizes. For example, how well does a method or two methods work on smaller matrices (dimension <= 1000)? How about on larger matrices (dimension >= 10000)?
  • Examine matrices with certain properties such as matrices that are almost symmetric (for example, those with index.numerical_symmetry < 0.1)