جزییات کتاب
This book is an excellent introduction to the field of scientific computing and serves well as a textbook, given the many exercises included in it. Although the software packages quoted in the book have been considerably revised since the time of publication of the book, one can still use it effectively as a guide to the construction of algorithms and software for scientific applications. The level of the book makes it suitable for a course in numerical analysis at the advanced undergraduate level. After a brief review of the concepts and strategies employed in mathematical modeling in chapter 1, the author begins in chapter 2 with the study of initial value problems for ordinary differential equations. He motivates the discussion with the predator-prey problem from mathematical biology and the ballistic trajectory problem with air resistance from physics. The initial-value problem for the general case of systems of ordinary differential equations is then solved using finite difference methods. The author treats thoroughly Euler's method along with its discretization error. Recognizing that first-order methods have very slow rates of convergence, Runge-Kutta methods are discussed next to alleviate this problem. The Heun method, fourth-order method, and more general one-step methods are discussed in detail. The sample initial value problems are then treated using some of these techniques. The technique of polynomial interpolation, so popular as a solution technique in high-level symbolic programming languages such as Mathematica, is discussed in this chapter also. Multistep methods, such as the Adams-Bashforth, Adams-Moulton, and predictor-corrector methods are treated also. The author also discusses the important concept of stability in this chapter. Although he does not give a rigorous definition of stability, due to the mathematical formalism needed for such a definition, he does give several examples of differential equations that are not stable, and also examples of instabilities in the actual numerical methods employed. Boundary value problems for ordinary differential equations are treated in the next chapter. The author motivates the problem via a two-point boundary value problem, but only concentrates on linear boundary value problems in this chapter, with the nonlinear case treated in chapter 5. The author carefully distinguishes between Dirichlet and Neumann boundary conditions. The solution of the discretized problem is solved appropriately with Gaussian elimination, and the author gives a numerical example. The case of periodic boundary conditions is also treated, and the author chooses to solve the resulting linear system using the Sherman-Morrison technique, instead of Gaussian elimination, arguing (correctly) that this method only needs code for solving tridiagonal matrices. The study of the solution of linear systems of equations is taken up in more detail in the next chapter, with emphasis on solution techniques for banded or full matrices. The class of least square problems is treated first, with least square polynomials and their calculation using orthogonal polynomials. The author then treats Gaussian elimination in more detail in this chapter, with treatments of LU factorization and banded matrices being treated. The author gives the reader more details on the performance issues involved in the different solution techniques. Ill-conditioning and error analysis are first discussed here in the context of solution of systems of linear equations, along with definitions and calculations of condition numbers. The author also gives good overviews of alternative factorization techniques, such as Cholesky and QR factorization. The most important application of numerical methods is in the class of nonlinear problems, since these usually do not have analytical solutions. Even if analytical solutions are found in terms of special functions, the calculation of these special functions typically must be done using techniques from numerical analysis. Nonlinear problems are discussed in chapter 5 of this book, wherein the author again uses the projectile problem to introduce shooting methods. This is followed by a very detailed discussion of the solution of a nonlinear equation using bisection, secant, and Newton's methods. Systems of nonlinear equations are then discussed, with the infamous Picard iteration technique leading the discussion, followed again by a treatment using Newton's method. Then in the next chapter, the author switches gears somewhat by moving away from techniques based on finite differences and discussing ones such as finite element, Galerkin's and Rayleigh-Ritz methods. The mathematical considerations employed in this chapter are a little more involved than the other chapters, but the author explains the ideas well, and the assigned exercises shed more light on the issues involved. Spine approximations are also discussed, along with the numerical evaluation of the integrals that naturally arise in Galerkin methods. Eigenvalue problems, so ubiquitous in all areas of science and engineering, are the subject of the next chapter. Interestingly, the author discusses Gerschgorin's theorem, which usually does not appear in a book at this level. Most of the popular techniques for solving eigenvalue problems, such as QR and iterative methods, are discussed thoroughly. The author gives the reader a taste of the numerical solution of partial differential equations starting in the next chapter, where the heat equation, wave equation, and Poisson's equation lead off the discussion. Separation of variables is discussed briefly as a technique of solution, but the author places emphasis first on finite difference methods for solving these equations. The stability and error analysis of these methods are first studied for the heat and wave equations, and this is followed by a discussion of implicit methods, with a brief treatment given of the Crank-Nicolson method. After a discussion of semi-discrete methods, the author then moves on in last chapter to problems in dimensions two and three. The sparse matrices arising from the discretization of the problems are shown for the Poisson and heat equations. The ADI method, along with Gaussian elimination, Jacobi's, Gauss-Seidel, SOR, and conjugate gradient methods are all given fine treatments.