Fundamentals-of-Engineering-Numerical-Analysis
Fundamentals-of-Engineering-Numerical-Analysis
net/publication/245378079
CITATIONS READS
275 13,765
1 author:
Parviz Moin
Stanford University
635 PUBLICATIONS 76,165 CITATIONS
SEE PROFILE
All content following this page was uploaded by Parviz Moin on 18 April 2016.
Since the original publication of this book, available computer power has increased
greatly. Today, scientific computing is playing an ever more prominent role as a
tool in scientific discovery and engineering analysis. In this second edition, the
key addition is an introduction to the finite element method. This is a widely used
technique for solving partial differential equations (PDEs) in complex domains.
This text introduces numerical methods and shows how to develop, analyze, and use
them. Complete MATLAB programs for all the worked examples are now available
at www.cambridge.org/Moin, and more than 30 exercises have been added. This
thorough and practical book is intended as a first course in numerical analysis,
primarily for new graduate students in engineering and physical science. Along
with mastering the fundamentals of numerical methods, students will learn to write
their own computer programs using standard numerical methods.
FUNDAMENTALS OF ENGINEERING
NUMERICAL ANALYSIS
SECOND EDITION
PARVIZ MOIN
Stanford University
C Parviz Moin 2010
A catalog record for this publication is available from the British Library.
Contents
1 INTERPOLATION 1
1.1 Lagrange Polynomial Interpolation 1
1.2 Cubic Spline Interpolation 4
Exercises 8
Further Reading 12
3 NUMERICAL INTEGRATION 30
3.1 Trapezoidal and Simpson’s Rules 30
3.2 Error Analysis 31
3.3 Trapezoidal Rule with End-Correction 34
3.4 Romberg Integration and Richardson Extrapolation 35
3.5 Adaptive Quadrature 37
3.6 Gauss Quadrature 40
Exercises 44
Further Reading 47
vi CONTENTS
CONTENTS vii
Index 235
To Linda
Since the original publication of this book ten years ago, the available computer
power has increased by more than 2 orders of magnitude due to massive par-
allelism of computer processors and heterogeneous computer clusters. Today,
scientific computing is playing an ever more prominent role as a tool in scientific
discovery and engineering analysis.
In the second edition an introduction to the finite element method has
been added. The finite element method is a widely used technique for solving
partial differential equations (PDEs) in complex domains. As in the first edition,
numerical solution of PDEs is treated in Chapter 5, and the development there is
based on finite differences for spatial derivatives. This development is followed
in Chapter 6 by an introduction to more advanced transform methods for solving
PDEs: spectral methods and, now, the finite element method. These methods
are compared to the finite difference methods in several places throughout
Chapter 6.
Hopefully, most of the errors that remained in the 2007 reprint of the book
have now been corrected. Several exercises have also been added to all the
chapters. In addition, complete MATLAB programs used for all the worked
examples are available at www.cambridge.org/Moin. Students should find this
new feature helpful in attempting the exercises, as similar computer programs
are used in many of them. Working out the exercises is critical to learning
numerical analysis, especially using this book. The intention for including this
feature is for students to spend less time writing and debugging computer
programs and more time digesting the underlying concepts.
I thank all the students and teaching assistants who have provided valuable
feedback to me on the teaching of numerical analysis and the contents of this
book. In particular, I am grateful to Dr. Ali Mani who took a special interest
in this book and made significant technical contributions to the new edition.
Special thanks are due to Nick Henderson for compiling the examples programs
and Drs. Erich Elsen and Lawrence Cheung for their due diligence and help in
ix
the preparation of this edition. Prof. Jon Freund suggested the addition of the
finite element section and gave me a draft of his notes on the subject to get me
started.
Parviz Moin
Stanford, California
March 2010
xi
about the choice and parameters of the method, which should have been asked
before going to the computer in the first place. The exercises at the end of
each chapter are intended to give these important experiences with numerical
methods.
Along with mastering the fundamentals of numerical methods, the students
are expected to write their own programs to solve problems using standard
numerical methods. They are also encouraged to use standard (commercial)
software whenever possible. There are several software libraries with well-
documented programs for basic computational work. Recently, I have used the
Numerical Recipes by Press et al. (Cambridge) as an optional supplement to
my lectures. Numerical Recipes is based on a large software library that is well
documented and available on computer disks. Some of the examples in this
book refer to specific programs in Numerical Recipes.
Students should also have a simple (x, y) plotting package to display their
numerical results. Some students prefer to use MATLAB’s plotting software,
some use the plotting capability included with a spreadsheet package, and oth-
ers use more sophisticated commercial plotting packages. Standard well-written
numerical analysis programs are generally available for almost everything cov-
ered in the first four chapters, but this is not the case for partial differential
equations, discussed in Chapter 5. The main technical reason for this is the
large variety of partial differential equations, which requires essentially tailor-
made programs for each application.
No attempt has been made to provide complete coverage of the topics that
I have chosen to include in this book. This is not meant to be a reference book;
rather it contains the material for a first course in numerical analysis for future
practitioners. Most of the material is what I have found useful in my career
as a computational physicist/engineer. The coverage is succinct, and it is ex-
pected that all the material will be covered sequentially. The book is intended
for first-year graduate students in science and engineering or seniors with good
post-calculus mathematics backgrounds. The first five chapters can be cov-
ered in a one-quarter course, and Chapter 6 can be included in a one-semester
course.
Discrete data and numerical interpolation are introduced in Chapter 1, which
exposes the reader to the dangers of high-order polynomial interpolation. Cu-
bic splines are offered as a good working algorithm for interpolation. Chapter 2
(finite differences) and Chapter 3 (numerical integration) are the foundations
of discrete calculus. Here, I emphasize systematic procedures for construct-
ing finite difference schemes, including high-order Padé approximations. We
also examine alternative, and often more informative, measures of numeri-
cal accuracy. In addition to introducing the standard numerical integration
techniques and their error analysis, we show in Chapter 3 how knowledge of
the form of numerical errors can be used to construct more accurate numeri-
cal results (Richardson extrapolation) and to construct adaptive schemes that
obtain the solution to the accuracy specified by the user. Usually, at this point
in my lectures, I seize the opportunity, offered by these examples, to stress the
value of a detailed knowledge of numerical error and its pay-offs even for the
most application-oriented students. Knowledge is quickly transferred to power
in constructing novel numerical methods.
Chapter 4 is on numerical solution of ordinary differential equations
(ODEs) – the heart of this first course in numerical analysis. A number of
new concepts such as stability and stiffness are introduced. The reader begins
to experience new tools in the arsenal for solving relatively complex problems
that would have been impossible to do analytically. Because so many inter-
esting applications are cast in ordinary differential equations, this chapter is
particularly interesting for engineers. Different classes of numerical methods
are introduced and analyzed even though there are several well-known powerful
numerical ODE solver packages available to solve any practical ODE without
having to know their inner workings. The reason for this extensive coverage of
a virtually solved problem is that the same algorithms are used for solution of
partial differential equations when canned programs for general PDEs are not
available and the user is forced to write his or her own programs. Thus, it is
essential to learn about the properties of numerical methods for ODEs in order
to develop good programs for PDEs.
Chapter 5 discusses numerical solution of partial differential equations and
relies heavily on the analysis of initial value problems introduced for ODEs.
In fact by using the modified wavenumber analysis, we can cast into ODEs
the discretized initial value problems in PDEs, and the knowledge of ODE
properties becomes very useful and no longer of just academic value. Once
again the knowledge of numerical errors is used to solve a difficult problem
of dealing with large matrices in multi-dimensional PDEs by the approximate
factorization technique. Dealing with large matrices is also a focus of numerical
techniques for elliptic partial differential equations, which are dealt with by
introducing the foundations of iterative solvers.
Demand for high accuracy is increasing as computational engineering ma-
tures. Today’s engineers and physicists are less interested in qualitative features
of numerical solutions and more concerned with numerical accuracy. A branch
of numerical analysis deals with spectral methods, which offer highly accu-
rate numerical methods for solution of partial differential equations. Chapter 6
covers aspects of Fourier analysis and introduces transform methods for partial
differential equations.
My early work in numerical analysis was influenced greatly by discus-
sions with Joel Ferziger and subsequently by the works of Harvard Lomax at
NASA–Ames. Thanks are due to all my teaching assistants who helped me
develop the course upon which this book is based; in particular, I thank Jon
Freund and Arthur Kravchenko who provided valuable assistance in prepara-
tion of this book. I am especially grateful to Albert Honein for his substantial
help in preparing this book in its final form and for his many contributions
as my teaching assistant in several courses in computational mathematics at
Stanford.
Parviz Moin
Stanford, California
July 2000