An Introduction to Numerical Analysis for Electrical and Computer Engineers / Edition 1

Hardcover (Print)
Buy New
Buy New from
Used and New from Other Sellers
Used and New from Other Sellers
from $40.00
Usually ships in 1-2 business days
(Save 80%)
Other sellers (Hardcover)
  • All (9) from $40.00   
  • New (5) from $44.00   
  • Used (4) from $40.00   


This book provides an introduction to numerical analysis intended to strike a balance between analytical rigor and the treatment of particular methods for engineering problems.

Read More Show Less

Editorial Reviews

From the Publisher
"Zarkowski (Univ. of Alberta) offers this book as a general, advanced undergraduate work in numerical analysis, containing all of the usual topics." (CHOICE, October 2004)
Read More Show Less

Product Details

  • ISBN-13: 9780471467373
  • Publisher: Wiley
  • Publication date: 4/13/2004
  • Edition number: 1
  • Pages: 608
  • Product dimensions: 6.42 (w) x 9.35 (h) x 1.31 (d)

Meet the Author

CHRISTOPHER J. ZAROWSKI, PhD, is an associate professor in the Department of Electrical and Computer Engineering at the University of Alberta, Canada. He has authored more than fifty journal articles and conference papers and is a senior member of the IEEE.

Read More Show Less

Read an Excerpt

An Introduction to Numerical Analysis for Electrical and Computer Engineers

By Christopher J. Zarowski

John Wiley & Sons

Copyright © 2004 John Wiley & Sons, Inc.
All right reserved.

ISBN: 0-471-46737-5

Chapter One

Functional Analysis Ideas


Many engineering analysis and design problems are far too complex to be solved without the aid of computers. However, the use of computers in problem solving has made it increasingly necessary for users to be highly skilled in (practical) mathematical analysis. There are a number of reasons for this. A few are as follows.

For one thing, computers represent data to finite precision. Irrational numbers such as [pi] or [square root of 2] do not have an exact representation on a digital computer (with the possible exception of methods based on symbolic computing). Additionally, when arithmetic is performed, errors occur as a result of rounding (e.g., the truncation of the product of two n-bit numbers, which might be 2n bits long, back down to n bits). Numbers have a limited dynamic range; we might get overflow or underflow in a computation. These are examples of finite-precision arithmetic effects. Beyond this, computational methods frequently have sources of error independent of these. For example, an infinite series must be truncated if it is to be evaluated on a computer. The truncation error is something "additional" toerrors from finite-precision arithmetic effects. In all cases, the sources (and sizes) of error in a computation must be known and understood in order to make sensible claims about the accuracy of a computer-generated solution to a problem.

Many methods are "iterative." Accuracy of the result depends on how many iterations are performed. It is possible that a given method might be very slow, requiring many iterations before achieving acceptable accuracy. This could involve much computer runtime. The obvious solution of using a faster computer is usually unacceptable. A better approach is to use mathematical analysis to understand why a method is slow, and so to devise methods of speeding it up. Thus, an important feature of analysis applied to computational methods is that of assessing how much in the way of computing resources is needed by a given method. A given computational method will make demands on computer memory, operations count (the number of arithmetic operations, function evaluations, data transfers, etc.), number of bits in a computer word, and so on.

A given problem almost always has many possible alternative solutions. Other than accuracy and computer resource issues, ease of implementation is also relevant. This is a human labor issue. Some methods may be easier to implement on a given set of computing resources than others. This would have an impact on software/hardware development time, and hence on system cost. Again, mathematical analysis is useful in deciding on the relative ease of implementation of competing solution methods.

The subject of numerical computing is truly vast. Methods are required to handle an immense range of problems, such as solution of differential equations (ordinary or partial), integration, solution of equations and systems of equations (linear or nonlinear), approximation of functions, and optimization. These problem types appear to be radically different from each other. In some sense the differences between them are true, but there are means to achieve some unity of approach in understanding them.

The branch of mathematics that (perhaps) gives the greatest amount of unity is sometimes called functional analysis. We shall employ ideas from this subject throughout. However, our usage of these ideas is not truly rigorous; for example, we completely avoid topology, and measure theory. Therefore, we tend to follow simplified treatments of the subject such as Kreyszig, and then only those ideas that are immediately relevant to us. The reader is assumed to be very comfortable with elementary linear algebra, and calculus. The reader must also be comfortable with complex number arithmetic (see Appendix 1.A now for a review if necessary). Some knowledge of electric circuit analysis is presumed since this will provide a source of applications examples later. (But application examples will also be drawn from other sources.) Some knowledge of ordinary differential equations is also assumed.

It is worth noting that an understanding of functional analysis is a tremendous aid to understanding other subjects such as quantum physics, probability theory and random processes, digital communications system analysis and design, digital control systems analysis and design, digital signal processing, fuzzy systems, neural networks, computer hardware design, and optimal design of systems. Many of the ideas presented in this book are also intended to support these subjects.


Variables in an engineering problem often take on values from sets of numbers. In the present setting, the sets of greatest interest to us are (1) the set of integers Z = {...-3, -2, -1, 0, 1, 2, 3 ...}, (2) the set of real numbers R, and (3) the set of complex numbers BLDBLD = {x + jy|j = [square root of (-1)], x, y [member of] R}. The set of nonnegative integers is [Z.sup.+] = {0, 1, 2, 3, ...,} (so [Z.sup.+] [subset] Z). Similarly, the set of nonnegative real numbers is [R.sup.+] = {x [member of] R|x [greater than or equal to] 0}. Other kinds of sets of numbers will be introduced if and when they are needed.

If A and B are two sets, their Cartesian product is denoted by A × B = {(a, b)|a [element of] A, b [element of] B}. The Cartesian product of n sets denoted [A.sub.0], [A.sub.1], ..., [A.sub.n-1] is [A.sub.0] × [A.sub.1] × ··· × [A.sub.n-1] = {([a.sub.0], [a.sub.1], ..., [a.sub.n-1])|[a.sub.k] [member of] [A.sub.k]}.

Ideas from matrix/linear algebra are of great importance. We are therefore also interested in sets of vectors. Thus, [R.sup.n] shall denote the set of n-element vectors with real-valued components, and similarly, [BLDBLD.sup.n] shall denote the set of n-element vectors with complex-valued components. By default, we assume any vector x to be a column vector:


Naturally, row vectors are obtained by transposition. We will generally avoid using bars over or under symbols to denote vectors. Whether a quantity is a vector will be clear from the context of the discussion. However, bars will be used to denote vectors when this cannot be easily avoided. The indexing of vector elements [x.sub.k] will often begin with 0 as indicated in (1.1). Naturally, matrices are also important. Set [R.sup.n×m] denotes the set of matrices with n rows and m columns, and the elements are real-valued. The notation [BLDBLD.sup.n×m] should now possess an obvious meaning. Matrices will be denoted by uppercase symbols, again without bars. If A is an n × m matrix, then


Thus, the element in row p and column q of A is denoted [a.sub.p,q]. Indexing of rows and columns again will typically begin at 0. The subscripts on the right bracket "]" in (1.2) will often be omitted in the future. We may also write [a.sub.pq] instead of [a.sub.p,q] where no danger of confusion arises.

The elements of any vector may be regarded as the elements of a sequence of finite length. However, we are also very interested in sequences of infinite length. An infinite sequence may be denoted by x = ([x.sub.k]) = ([x.sub.0], [x.sub.1], [x.sub.2], ...), for which [x.sub.k] could be either real-valued or complex-valued. It is possible for sequences to be doubly infinite, for instance, x = ([x.sub.k]) = (..., [x.sub.-2], [x.sub.-1], [x.sub.0], [x.sub.1], [x.sub.2], ...).

Relationships between variables are expressed as mathematical functions, that is, mappings between sets. The notation ƒ|A [right arrow] B signifies that function ƒ associates an element of set A with an element from set B. For example, ƒ|R [right arrow] R represents a function defined on the real-number line, and this function is also real-valued; that is, it maps "points" in R to "points" in R. We are familiar with the idea of "plotting" such a function on the xy plane if y = ƒ(x) (i.e., x, y [element of] R). It is important to note that we may regard sequences as functions that are defined on either the set Z (the case of doubly infinite sequences), or the set [Z.sup.+] (the case of singly infinite sequences). To be more specific, if, for example, k [element of] [Z.sup.+], then this number maps to some number [x.sub.k] that is either real-valued or complex-valued. Since vectors are associated with sequences of finite length, they, too, may be regarded as functions, but defined on a finite subset of the integers. From (1.1) this subset might be denoted by [Z.sub.n] = {0, 1, 2, ..., n - 2, n - 1}.

Sets of functions are important. This is because in engineering we are often interested in mappings between sets of functions. For example, in electric circuits voltage and current waveforms (i.e., functions of time) are input to a circuit via voltage and current sources. Voltage drops across circuit elements, or currents through circuit elements are output functions of time. Thus, any circuit maps functions from an input set to functions from some output set. Digital signal processing systems do the same thing, except that here the functions are sequences. For example, a simple digital signal processing system might accept as input the sequence ([x.sub.n]), and produce as output the sequence ([y.sub.n]) according to

(1.3) [y.sub.n] = [x.sub.n] + [x.sub.n+1]/2

for which n [element of] [Z.sup.+].

Some specific examples of sets of functions are as follows, and more will be seen later. The set of real-valued functions defined on the interval [a, b] [subset] R that are n times continuously differentiable may be denoted by [C.sup.n]]a, b]. This means that all derivatives up to and including order n exist and are continuous. If n = 0 we often just write ITLa, b], which is the set of continuous functions on the interval [a, b]. We remark that the notation [a, b] implies inclusion of the endpoints of the interval. Thus, (a, b) implies that the endpoints a and b are not to be included [i.e., if x [element of] (a, b), then a < x < b].

A polynomial in the indeterminate x of degree n is


Unless otherwise stated, we will always assume [p.sub.n,k] [element of] R. The indeterminate x is often considered to be either a real number or a complex number. But in some circumstances the indeterminate x is merely regarded as a "placeholder," which means that x is not supposed to take on a value. In a situation like this the polynomial coefficients may also be regarded as elements of a vector (e.g., [p.sub.n] = [[[p.sub.n,0] [p.sub.n,1] ··· [p.sub.n,n]].sup.T]). This happens in digital signal processing when we wish to convolve sequences of finite length, because the multiplication of polynomials is mathematically equivalent to the operation of sequence convolution. We will denote the set of all polynomials of degree n as [P.sup.n]. If x is to be from the interval [a, b] [subset of] R, then the set of polynomials of degree n on [a, b] is denoted by [P.sup.n][a, b]. If m < n we shall usually assume [P.sup.m][a, b] [subset] [P.sup.n][a, b].


Sets of objects (vectors, sequences, polynomials, functions, etc.) often have certain special mappings defined on them that turn these sets into what are commonly called function spaces. Loosely speaking, functional analysis is about the properties of function spaces. Generally speaking, numerical computation problems are best handled by treating them in association with suitable mappings on well-chosen function spaces. For our purposes, the three most important special types of mappings are (1) metrics, (2) norms, and (3) inner products. You are likely to be already familiar with special cases of these really very general ideas.

The vector dot product is an example of an inner product on a vector space, while the Euclidean norm (i.e., the square root of the sum of the squares of the elements in a real-valued vector) is a norm on a vector space. The Euclidean distance between two vectors (given by the Euclidean norm of the difference between the two vectors) is a metric on a vector space. Again, loosely speaking, metrics give meaning to the concept of "distance" between points in a function space, norms give a meaning to the concept of the "size" of a vector, and inner products give meaning to the concept of "direction" in a vector space.

In Section 1.1 we expressed interest in the sizes of errors, and so naturally the concept of a norm will be of interest. Later we shall see that inner products will prove to be useful in devising means of overcoming problems due to certain sources of error in a computation. In this section we shall consider various examples of function spaces, some of which we will work with later on in the analysis of certain computational problems. We shall see that there are many different kinds of metric, norm, and inner product. Each kind has its own particular advantages and disadvantages as will be discovered as we progress through the book.

Sometimes a quantity cannot be computed exactly. In this case we may try to estimate bounds on the size of the quantity. For example, finding the exact error in the truncation of a series may be impossible, but putting a bound on the error might be relatively easy. In this respect the concepts of supremum and infimum can be important. These are defined as follows.

Suppose we have E [subset] R.


Excerpted from An Introduction to Numerical Analysis for Electrical and Computer Engineers by Christopher J. Zarowski Copyright © 2004 by John Wiley & Sons, Inc.. Excerpted by permission.
All rights reserved. No part of this excerpt may be reproduced or reprinted without permission in writing from the publisher.
Excerpts are provided by Dial-A-Book Inc. solely for the personal use of visitors to this web site.

Read More Show Less

Table of Contents


1 Functional Analysis Ideas.

1.1 Introduction.

1.2 Some Sets.

1.3 Some Special Mappings: Metrics, Norms, and Inner Products.

1.3.1 Metrics and Metric Spaces.

1.3.2 Norms and Normed Spaces.

1.3.3 Inner Products and Inner Product Spaces.

1.4 The Discrete Fourier Series (DFS).

Appendix 1.A Complex Arithmetic.

Appendix 1.B Elementary Logic.



2 Number Representations.

2.1 Introduction.

2.2 Fixed-Point Representations.

2.3 Floating-Point Representations.

2.4 Rounding Effects in Dot Product Computation.

2.5 Machine Epsilon.

Appendix 2.A Review of Binary Number Codes.



3 Sequences and Series.

3.1 Introduction.

3.2 Cauchy Sequences and Complete Spaces.

3.3 Pointwise Convergence and Uniform Convergence.

3.4 Fourier Series.

3.5 Taylor Series.

3.6 Asymptotic Series.

3.7 More on the Dirichlet Kernel.

3.8 Final Remarks.

Appendix 3.A COordinate Rotation DIgital Computing (CORDIC).

3.A.1 Introduction.

3.A.2 The Concept of a Discrete Basis.

3.A.3 Rotating Vectors in the Plane.

3.A.4 Computing Arctangents.

3.A.5 Final Remarks.

Appendix 3.B Mathematical Induction.

Appendix 3.C Catastrophic Cancellation.



4 Linear Systems of Equations.

4.1 Introduction.

4.2 Least-Squares Approximation and Linear Systems.

4.3 Least-Squares Approximation and Ill-Conditioned Linear Systems.

4.4 Condition Numbers.

4.5 LU Decomposition.

4.6 Least-Squares Problems and QR Decomposition.

4.7 Iterative Methods for Linear Systems.

4.8 Final Remarks.

Appendix 4.A Hilbert Matrix Inverses.

Appendix 4.B SVD and Least Squares.



5 Orthogonal Polynomials.

5.1 Introduction.

5.2 General Properties of Orthogonal Polynomials.

5.3 Chebyshev Polynomials.

5.4 Hermite Polynomials.

5.5 Legendre Polynomials.

5.6 An Example of Orthogonal Polynomial Least-Squares Approximation.

5.7 Uniform Approximation.



6 Interpolation.

6.1 Introduction.

6.2 Lagrange Interpolation.

6.3 Newton Interpolation.

6.4 Hermite Interpolation.

6.5 Spline Interpolation.



7 Nonlinear Systems of Equations.

7.1 Introduction.

7.2 Bisection Method.

7.3 Fixed-Point Method.

7.4 Newton–Raphson Method.

7.4.1 The Method.

7.4.2 Rate of Convergence Analysis.

7.4.3 Breakdown Phenomena.

7.5 Systems of Nonlinear Equations.

7.5.1 Fixed-Point Method.

7.5.2 Newton–Raphson Method.

7.6 Chaotic Phenomena and a Cryptography Application.



8 Unconstrained Optimization.

8.1 Introduction.

8.2 Problem Statement and Preliminaries.

8.3 Line Searches.

8.4 Newton’s Method.

8.5 Equality Constraints and Lagrange Multipliers.

Appendix 8.A MATLAB Code for Golden Section Search.



9 Numerical Integration and Differentiation.

9.1 Introduction.

9.2 Trapezoidal Rule.

9.3 Simpson’s Rule.

9.4 Gaussian Quadrature.

9.5 Romberg Integration.

9.6 Numerical Differentiation.



10 Numerical Solution of Ordinary Differential Equations.

10.1 Introduction.

10.2 First-Order ODEs.

10.3 Systems of First-Order ODEs.

10.4 Multistep Methods for ODEs.

10.4.1 Adams–Bashforth Methods.

10.4.2 Adams–Moulton Methods.

10.4.3 Comments on the Adams Families.

10.5 Variable-Step-Size (Adaptive) Methods for ODEs.

10.6 Stiff Systems.

10.7 Final Remarks.

Appendix 10.A MATLAB Code for Example 10.8.

Appendix 10.B MATLAB Code for Example 10.13.



11 Numerical Methods for Eigenproblems.

11.1 Introduction.

11.2 Review of Eigenvalues and Eigenvectors.

11.3 The Matrix Exponential.

11.4 The Power Methods.

11.5 QR Iterations.



12 Numerical Solution of Partial Differential Equations.

12.1 Introduction.

12.2 A Brief Overview of Partial Differential Equations.

12.3 Applications of Hyperbolic PDEs.

12.3.1 The Vibrating String.

12.3.2 Plane Electromagnetic Waves.

12.4 The Finite-Difference (FD) Method.

12.5 The Finite-Difference Time-Domain (FDTD) Method.

Appendix 12.A MATLAB Code for Example 12.5.



13 An Introduction to MATLAB.

13.1 Introduction.

13.2 Startup.

13.3 Some Basic Operators, Operations, and Functions.

13.4 Working with Polynomials.

13.5 Loops.

13.6 Plotting and M-Files.



Read More Show Less

Customer Reviews

Be the first to write a review
( 0 )
Rating Distribution

5 Star


4 Star


3 Star


2 Star


1 Star


Your Rating:

Your Name: Create a Pen Name or

Barnes & Review Rules

Our reader reviews allow you to share your comments on titles you liked, or didn't, with others. By submitting an online review, you are representing to Barnes & that all information contained in your review is original and accurate in all respects, and that the submission of such content by you and the posting of such content by Barnes & does not and will not violate the rights of any third party. Please follow the rules below to help ensure that your review can be posted.

Reviews by Our Customers Under the Age of 13

We highly value and respect everyone's opinion concerning the titles we offer. However, we cannot allow persons under the age of 13 to have accounts at or to post customer reviews. Please see our Terms of Use for more details.

What to exclude from your review:

Please do not write about reviews, commentary, or information posted on the product page. If you see any errors in the information on the product page, please send us an email.

Reviews should not contain any of the following:

  • - HTML tags, profanity, obscenities, vulgarities, or comments that defame anyone
  • - Time-sensitive information such as tour dates, signings, lectures, etc.
  • - Single-word reviews. Other people will read your review to discover why you liked or didn't like the title. Be descriptive.
  • - Comments focusing on the author or that may ruin the ending for others
  • - Phone numbers, addresses, URLs
  • - Pricing and availability information or alternative ordering information
  • - Advertisements or commercial solicitation


  • - By submitting a review, you grant to Barnes & and its sublicensees the royalty-free, perpetual, irrevocable right and license to use the review in accordance with the Barnes & Terms of Use.
  • - Barnes & reserves the right not to post any review -- particularly those that do not follow the terms and conditions of these Rules. Barnes & also reserves the right to remove any review at any time without notice.
  • - See Terms of Use for other conditions and disclaimers.
Search for Products You'd Like to Recommend

Recommend other products that relate to your review. Just search for them below and share!

Create a Pen Name

Your Pen Name is your unique identity on It will appear on the reviews you write and other website activities. Your Pen Name cannot be edited, changed or deleted once submitted.

Your Pen Name can be any combination of alphanumeric characters (plus - and _), and must be at least two characters long.

Continue Anonymously

    If you find inappropriate content, please report it to Barnes & Noble
    Why is this product inappropriate?
    Comments (optional)