The words you are searching are inside this book. To get more targeted content, please make full-text search by clicking here.

Applied_Numerical_Methods_with_MATLAB_for_Engineers_and_Scientists

Discover the best professional documents and content resources in AnyFlip Document Base.
Search
Published by fabianlindarte97, 2020-11-18 18:00:02

Applied_Numerical_Methods_with_MATLAB_for_Engineers_and_Scientists

Applied_Numerical_Methods_with_MATLAB_for_Engineers_and_Scientists

534 Numerical Integration of Functions

all four unknowns and in the bargain derive a linear two-point integration formula that is
exact for cubics. The four equations to be solved are

∫1 (20.13)

c0 + c1 = ​ − 1 ​  ​1 dx = 2

c0x0 + c1x1 = ​∫1    ​  ​x dx = 0 (20.14)

−1

∫c0 x​​ 02​​  + c1 ​x21​​  = ​ 1 dx =  ​_32_  ​ (20.15)

− 1 ​  ​x2

c0 ​x03​​  + c1​ x31​​  = ​ ∫1   ​  ​x3 dx = 0 (20.16)

−1

Equations (20.13) through (20.16) can be solved simultaneously for the four unknowns.
First, solve Eq. (20.14) for c1 and substitute the result into Eq. (20.16), which can be solved for

​x0 ​2​  = x​ 1 ​2 ​

ESiqn.c (e20x.014an) dyiexl1dcsacn0n=otcb1.eCeoqnusaelq, utehnistlymferaonms that x0 = −x1. Substituting this result into
Eq. (20.13) it follows that

c0 = c1 = 1

Substituting these results into Eq. (20.15) gives

x0 = − ​ __1_ _ ​ = −0.5773503 . . .
​ √ 3​  

x1 =  ​ _​ √_1_ 3 _   ​ ​ = 0.5773503 . . .

Therefore, the two-point Gauss-Legendre formula is

( ) ( )I =  f ​  ​ _​ √−_1_ 3_    ​ ​   ​ +   f ​  ​ _​ √_1_ 3 _    ​​   ​ (20.17)

Tx h=us−,1w∕ ​e√  a_ 3r ​r aivned a1t∕t​ √he_ 3i  ​​nytieerldesstiannginretesgurltaltheasttitmheatesimthpatleisatdhdiritdi-oonrdoefrtahcecfuurnacteti.on values at
Notice that the integration limits in Eqs. (20.13) through (20.16) are from −1 to 1. This

was done to simplify the mathematics and to make the formulation as general as possible.
A simple change of variable can be used to translate other limits of integration into this
form. This is accomplished by assuming that a new variable xd is related to the original
variable x in a linear fashion, as in

x = a1 + a2 xd (20.18)

If the lower limit, x = a, corresponds to xd = −1, these values can be substituted into
Eq. (20.18) to yield

a = a1 + a2(−1) (20.19)
Similarly, the upper limit, x = b, corresponds to xd = 1, to give

b = a1 + a2(1) (20.20)

20.3 GAUSS QUADRATURE 535

Equations (20.19) and (20.20) can be solved simultaneously for

a1 = ​ _b_+2__ a_​  ​  and  a2 =  ​_b_−2__ ​a_​    (20.21)
which can be substituted into Eq. (20.18) to yield (20.22)

x =   ​_(b__+__a_)_+_2 _( _b_​−__​a_)_ x_d 
This equation can be differentiated to give

dx = ​ _b_−2__ ​a_​  dxd (20.23)

Equations (20.22) and (20.23) can be substituted for x and dx, respectively, in the equation
to be integrated. These substitutions effectively transform the integration interval without
changing the value of the integral. The following example illustrates how this is done in
practice.

EXAMPLE 20.3 Two-Point Gauss-Legendre Formula

Problem Statement.  Use Eq. (20.17) to evaluate the integral of
f (x) = 0.2 + 25x − 200x2 + 675x3 − 900x4 + 400x5

between the limits x = 0 to 0.8. The exact value of the integral is 1.640533.

Solution.  Before integrating the function, we must perform a change of variable so that
the limits are from −1 to +1. To do this, we substitute a = 0 and b = 0.8 into Eqs. (20.22)
and (20.23) to yield

x = 0.4 + 0.4xd    and    dx = 0.4dxd

Both of these can be substituted into the original equation to yield

∫ 0.8

​   ​  ​(0.2 + 25x − 200x2 + 675x3 − 900x4 + 400x5) dx
0
∫1

  = ​ − 1​   ​[0.2 + 25(0.4 + 0.4xd ) − 200(0.4 + 0.4xd )2 + 675(0.4 + 0.4xd )3
−900(0.4 + 0.4xd )4 + 400(0.4 + 0.4xd )5]0.4dxd

Tq1at.uh3xae0ddr5er=8afot31ur7∕ere, ​√=.thT_ 31eh  .​​8aers2itg21rh5a.3tn7-0s8h5f,ao8nwr3dmh7ie.scidThdhefrueeirnpsecrfiteonisoreentnh, tcetshafeanoiprbnmeetrecegtehvrnaaatltluariaesctlceasodtuirivdateaitnbexglrdert=oofroE−roqf1e.∕v−(a​ √21l0u1_ 3.a.11  ​t​7ai%os)n.i0sT.u50hs1.ii5sn61g7r6e4G7s1u4al1autns+idss
comparable in magnitude to a four-segment application of the trapezoidal rule or a single
application of Simpson’s 1∕3 and 3∕8 rules. This latter result is to be expected because
Simpson’s rules are also third-order accurate. However, because of the clever choice
of base points, Gauss quadrature attains this accuracy on the basis of only two function
­evaluations.

536 Numerical Integration of Functions

TABLE 20.1   Weighting factors and function arguments used in Gauss-Legendre formulas.

Weighting Function Truncation
Points Factors Arguments Error

1 c0 = 2 x0 = −01−∕.​ 1√0​ √∕  ​√_ 3_ 3∕ ​ _ 35 ​    ​ ≅ f (2) (ξ)
x0 = −−  −−​ 0√​​  √√.    ​  ​ ​​ 0√√√√_ 3__  55  ∕____    2222  55  5__554422  ​ ____5555__+−____−++−77__  00__11  77__  44__  ​​00  √√  __​​  √√__  ​​  √√____  33____  7700______  3300__    ​​00__∕∕    ​​∕∕33    ​​∕∕2255331155 ≅ f (4) (ξ)
2 c0 = 1 x1 = ≅ f (6) (ξ)
c1 = 1 x0 =
x1 = ≅ f (8) (ξ)
3 c0 = 5∕9 ​​ ​  ​ √√√√____    33330000____    ​​​​    ))))∕∕∕∕33336666 x2 =
c1 = 8∕9 √√__  7700__  ​​  ))∕∕990000 ≅ f (10) (ξ)
c2 = 5∕9 − 13 ​  x0 =
+ 13 ​  x1 =
4 c0 = (18 − x2 =
c1 = (18 + x3 =
c2 = (18 +
c3 = (18 − x0 =
x1 =
5 c0 = (322
c1 = (322

c2 = 128∕225 √√__  7700__  ​​  ))∕∕990000 x2 = ​  ​0√√.0__  2 2 44__55 __−+ __11  44  __​​  √√____  7700__    ​​∕∕2211
c3 = (322 + 13 ​  x3 =
c4 = x4 =
(322 − 13 ​ 

6 c0 = 0.171324492379170 x0 = −0.932469514203152 ≅  f (12) (ξ)
c1 = 0.360761573048139 x1 = −0.661209386466265
c2 = 0.467913934572691 x2 = −0.238619186083197
c3 = 0.467913934572691 x3 = 0.238619186083197
c4 = 0.360761573048131 x4 = 0.661209386466265
c5 = 0.171324492379170 x5 = 0.932469514203152

20.3.3  Higher-Point Formulas

Beyond the two-point formula described in the previous section, higher-point versions can
be developed in the general form

I ≅ c0 f (x0) + c1 f (x1) + · · · + cn−1 f (xn−1) (20.24)

where n = the number of points. Values for c’s and x’s for up to and including the six-point
formula are summarized in Table 20.1.

EXAMPLE 20.4 Three-Point Gauss-Legendre Formula

Problem Statement.  Use the three-point formula from Table 20.1 to estimate the integral
for the same function as in Example 20.3.

Solution.  According to Table 20.1, the three-point formula is
I = 0.5555556 f (−0.7745967) + 0.8888889 f (0) + 0.5555556 f (0.7745967)

which is equal to
I = 0.2813013 + 0.8732444 + 0.4859876 = 1.640533

which is exact.

20.4 adaptive quadrature 537

Because Gauss quadrature requires function evaluations at nonuniformly spaced points
within the integration interval, it is not appropriate for cases where the function is unknown.
Thus, it is not suited for engineering problems that deal with tabulated data. However, where
the function is known, its efficiency can be a decided advantage. This is particularly true
when numerous integral evaluations must be performed.

20.4 ADAPTIVE QUADRATURE

Although Romberg integration is more efficient than the composite Simpson’s 1/3 rule,
both use equally spaced points. This constraint does not take into account that some func-
tions have regions of relatively abrupt changes where more refined spacing might be
required. Hence, to achieve a desired accuracy, fine spacing must be applied everywhere
even though it is only needed for the regions of sharp change. Adaptive quadrature meth-
ods remedy this situation by automatically adjusting the step size so that small steps are
taken in regions of sharp variations and larger steps are taken where the function changes
gradually.

20.4.1  MATLAB M-file: quadadapt

Adaptive quadrature methods accommodate the fact that many functions have regions of
high variability along with other sections where change is gradual. They accomplish this
by adjusting the step size so that small intervals are used in regions of rapid variations and
larger intervals are used where the function changes gradually. Many of these techniques
are based on applying the composite Simpson’s 1∕3 rule to subintervals in a fashion that
is very similar to the way in which the composite trapezoidal rule was used in Richardson
extrapolation. That is, the 1∕3 rule is applied at two levels of refinement, and the difference
between these two levels is used to estimate the truncation error. If the truncation error is
acceptable, no further refinement is required, and the integral estimate for the subinterval is
deemed acceptable. If the error estimate is too large, the step size is refined and the process
repeated until the error falls to acceptable levels. The total integral is then computed as the
summation of the integral estimates for the ­subintervals.

The theoretical basis of the approach can be illustrated for an interval x = a to x = b
with a width of h1 = b − a. A first estimate of the integral can be estimated with Simpson’s
1/3 rule:

I (h1) =  _​h6_1 ​ [ f (a) + 4 f (c) + f (b)] (20.25)

where c = (a + b)∕2.
As in Richardson extrapolation, a more refined estimate can be ­obtained by halving the

step size. That is, by applying the composite Simpson’s 1/3 rule with n = 4:

I (h2) = ​ _h6_2 ​ [ f (a) + 4 f (d) + 2 f (c) + 4 f (e) + f (b)] (20.26)

where d = (a + c)∕2, e = (c + b)∕2, and h2 = h1∕2.
Because both I(h1) and I(h2) are estimates of the same integral, their difference pro-
vides a measure of the error. That is,

E ≅ I (h2) − I (h1) (20.27)

538 Numerical Integration of Functions

In addition, the estimate and error associated with either application can be represented
generally as

I = I (h) + E (h) (20.28)

where I = the exact value of the integral, I(h) = the approximation from an n-segment
a­ pplication of the Simpson’s 1/3 rule with step size h = (b − a)∕n, and E(h) = the corre-
sponding truncation error.

Using an approach similar to Richardson extrapolation, we can derive an estimate in
the error of the more refined estimate I(h2) as a function of the difference between the two
integral estimates:

E(h2) = ​ _11_5_  ​  [  I (h2) − I (h1)] (20.29)

The error can then be added to I (h2) to generate an even better estimate: (20.30)
I = I (h2) + ​_ 11_5_  ​  [  I (h2) − I (h1)]

This result is equivalent to Boole’s rule (Table 19.2).
The equations just developed can now be combined into an efficient algorithm.

Figure 20.6 presents an M-file function that is based on an algorithm originally developed
by Cleve Moler (2004).

The function consists of a main calling function quadadapt along with a recursive func-
tion qstep that actually performs the integration. The main calling function quadadapt is
passed the function f and the integration limits a and b. After setting the tolerance, the func-
tion evaluations required for the initial application of Simpson’s 1/3 rule [Eq. (20.25)] are
computed. These values along with the integration limits are then passed to qstep. Within
qstep, the remaining step sizes and function values are determined, and the two i­ntegral
­estimates [Eqs. (20.25) and (20.26)] are computed.

At this point, the error is estimated as the absolute difference between the integral
­estimates. Depending on the value of the error, two things can then happen:
1. If the error is less or equal to the tolerance (tol), Boole’s rule is generated; the function

terminates and passes back the result.
2. If the error is larger than the tolerance, qstep is invoked twice to evaluate each of the

two subintervals of the current call.
The two recursive calls in the second step represent the real beauty of this algorithm.
They just keep subdividing until the tolerance is met. Once this occurs, their results are
passed back up the recursive path, combining with the other integral estimates along the
way. The process ends when the final call is satisfied and the total integral is evaluated and
returned to the main calling function.
It should be stressed that the algorithm in Fig. 20.6 is a stripped-down version of the
integral function, which is the professional root-location function employed in MATLAB.
Thus, it does not guard against failure such as cases where integrals do not exist. Nevertheless,

20.4 adaptive quadrature 539

function q = quadadapt(f,a,b,tol,varargin)
% Evaluates definite integral of f(x) from a to b
if nargin < 4 | isempty(tol),tol = 1.e−6;end
c = (a + b)/2;
fa = feval(f,a,varargin{:});
fc = feval(f,c,varargin{:});
fb = feval(f,b,varargin{:});
q = quadstep(f, a, b, tol, fa, fc, fb, varargin{:});
end

function q = quadstep(f,a,b,tol,fa,fc,fb,varargin)
% Recursive subfunction used by quadadapt.
h = b − a; c = (a + b)/2;
fd = feval(f,(a + c)/2,varargin{:});
fe = feval(f,(c + b)/2,varargin{:});
q1 = h/6 * (fa + 4*fc + fb);
q2 = h/12 * (fa + 4*fd + 2*fc + 4*fe + fb);
if abs(q2 − q1) <= tol

q = q2 + (q2 − q1)/15;
else

qa = quadstep(f, a, c, tol, fa, fd, fc, varargin{:});
qb = quadstep(f, c, b, tol, fc, fe, fb, varargin{:});
q = qa + qb;
end
end

FIGURE 20.6
An M-file to implement an adaptive quadrature algorithm based on an algorithm originally
developed by Cleve Moler (2004).

it works just fine for many applications, and certainly serves to illustrate how adaptive quadra-
ture works. Here is a MATLAB session showing how quadadapt can be used to determine the
integral of the polynomial from Example 20.1:

>> f = @(x) 0.2 + 25*x − 200*x^2 + 675*x^3 − 900*x^4 + 400*x^5;
>> q = quadadapt(f,0,0.8)

q=
1.640533333333336

20.4.2  MATLAB Function: integral
MATLAB has a function for implementing adaptive quadrature:

q = integral(fun, a, b)

where fun is the function to be integrated, and a and b = the integration bounds. It should be
noted that array operators .*, ./ and .^ should be used in the definition of fun.

540 Numerical Integration of Functions

EXAMPLE 20.5 Adaptive Quadrature

Problem Statement. Use integral to integrate the following function:

f (x) = _ ​( x__−__q_)1_2 _ +__0_.0_1_ ​ +  ​_ (x__−__r_ )1_2 _ +__0_.0_4_ ​ − s
between the limits x = 0 to 1. Note that for q = 0.3, r = 0.9, and s = 6, this is the built-in humps
function that MATLAB uses to demonstrate some of its numerical capabilities. The humps func-
tion exhibits both flat and steep regions over a relatively short x range. Hence, it is useful for
demonstrating and testing a function like integral. Note that the humps function can be inte-
grated analytically between the given limits to yield an exact integral of 29.85832539549867.

Solution.  First, let’s evaluate the integral using the built-in version of humps

>> format long
>> Q = integral(@(x) humps(x),0,1)

ans =
29.85832612842764

Thus, the solution is correct to seven significant digits.

20.5  CASE STUDY ROOT-MEAN-SQUARE CURRENT

Background.  Because it results in efficient energy transmission, the current in an AC
circuit is often in the form of a sine wave:

i = ipeak sin(ωt)

­(wrahdeiraenis/=s),tahnedctu=rretinmt e(A(s)=. TCh/es)a,nigpeualka=r frtehqeupeenacky current (A), ω = the angular frequency
is related to the period T(s) by ω = 2π∕T.
The power generated is related to the magnitude of the current. Integration can be used
to determine the average current over one cycle:

∫i​_​ =​ _T1_  ​ ​ T =  ​_ip_Te_a _​k​  (−cos(2π) + =

 ​   ​ipeak sin(ωt) dt cos(0)) 0

0

Despite the fact that the average is zero, such a current is capable of generating power.
Therefore, an alternative to the average current must be derived.
To do this, electrical engineers and scientists determine the root mean square current
irms (A), whic_h i_s c_alc_ul_ate_d a_s _
√ ∫irms = ​    _​ T1_  ​ ​ 0  ​ T ​ip​2 ea​k ​ sin2(ωt) dt ​ =  ​_i​ √p_e_a_ 2_k   ​ ​
(20.31)

cTuhrures,nta.sBtheecanuasme e1∕im​ √p_2 _l ​ie=s,0t.h7e07r0m7s, current is the square root of the mean of the squared
assumed sinusoidal wave form. irms is equal to about 70% of the peak current for our

20.5 CASE STUDY 541

20.5  CASE STUDY continued

This quantity has meaning because it is directly related to the average power absorbed
by an element in an AC circuit. To understand this, recall that Joule’s law states that the
instantaneous power absorbed by a circuit element is equal to product of the voltage across
it and the current through it:

P = iV (20.32)

where P = the power (W = J/s), and V = voltage (V = J/C). For a resistor, Ohm’s law states
that the voltage is directly proportional to the current:

V = iR (20.33)

where R = the resistance (Ω = V/A = J · s/C2). Substituting Eq. (20.33) into (20.32) gives

P = i 2R (20.34)

The average power can be determined by integrating Eq. (20.34) over a period with the r­ esult:
P¯ = i​ r​2m  s​ ​ R

Thus, the AC circuit generates the equivalent power as a DC circuit with a constant current
of irms.
Now, although the simple sinusoid is widely employed, it is by no means the only
waveform that is used. For some of these forms, such as triangular or square waves, the irms
can be evaluated analytically with closed-form integration. However, some waveforms must
be analyzed with numerical integration methods.
In this case study, we will calculate the root-mean-square current of a non sinusoidal
wave form. We will use both the Newton-Cotes formulas from Chap. 19 as well as the
a­ pproaches described in this chapter.

Solution.  The integral that must be evaluated is

∫i​ r​2m  s​ ​ =​   ​ 1∕2 ​(10e−t sin 2π t)2 dt (20.35)

0

For comparative purposes, the exact value of this integral to fifteen significant digits is
15.41260804810169.
Integral estimates for various applications of the trapezoidal rule and Simpson’s 1∕3
rule are listed in Table 20.2. Notice that Simpson’s rule is more accurate than the trapezoidal
rule. The value for the integral to seven significant digits is obtained using a 128-segment
trapezoidal rule or a 32-segment Simpson’s rule.
The M-file we developed in Fig. 20.2 can be used to evaluate the integral with Romberg
integration:

>> format long
>> i2=@(t) (10*exp(−t).*sin(2*pi*t)).^2;
>> [q,ea,iter]=romberg(i2,0,.5)

542 Numerical Integration of Functions

20.5  CASE STUDY continued

TABLE 20.2   Values for the integral calculated using Newton-Cotes
formulas.

Technique Segments Integral εt (%)

Trapezoidal rule 1 0.0 100.0000
2 15.163266493 1.6178
4 15.401429095 0.0725
8 15.411958360 4.22 × 10−3
16 15.412568151 2.59 × 10−4
32 15.412605565 1.61 × 10−5
64 15.412607893 1.01 × 10−6
128 15.412608038 6.28 × 10−8

Simpson’s 1∕3 rule 2 20.217688657 31.1763
4 15.480816629 0.4426
8 15.415468115 0.0186
16 15.412771415 1.06 × 10−3
32 15.412618037 6.48 × 10−5

q=
15.41260804288977

ea =
1.480058787326946e−008

iter =
5

Thus, with the default stopping criterion of es = 1 × 10−6, we obtain a result that is ­correct
to over nine significant figures in five iterations. We can obtain an even better result if we
impose a more stringent stopping criterion:

>> [q,ea,iter]=romberg(i2,0,.5,1e−15)

q=
15.41260804810169

ea =
0

iter =
7

Gauss quadrature can also be used to make the same estimate. First, a change in
v­ ariable is performed by applying Eqs. (20.22) and (20.23) to yield

t =  ​_41_  ​ + ​ _14_  ​ td   dt = ​ _14_  ​ dtd

These relationships can be substituted into Eq. (20.35) to yield

∫​ir​2m  s​ ​ = ​ [1 10e−(0.25+0.25t​ d​  ​ ) sin 2π(0.25 + 0.25td)]2 0.25 dt (20.36)

  ​   ​
−1

20.5 CASE STUDY 543

20.5  CASE STUDY continued

1F∕o​ r√th_ 3e  ,​​ two-point Gauss-Legendre formula, this function is evaluated at td = −1∕​ √_ 3 ​ and
with the results being 7.684096 and 4.313728, respectively. These values can be
substituted into Eq. (20.17) to yield an integral estimate of 11.99782, which represents an
error of εt = 22.1%.
The three-point formula is (Table 20.1)

I = 0.5555556(1.237449) + 0.8888889(15.16327) + 0.5555556(2.684915) = 15.65755

which has εt = 1.6%. The results of using the higher-point formulas are summarized in
Table 20.3.
Finally, the integral can be evaluated with the built-in MATLAB function integral:

>> irms2=integral(i2,0,.5)

irms2 =
15.412608049345090

We can now compute the irms by merely taking the square root of the integral. For
example, using the result computed with integral, we get

>> irms=sqrt(irms2)

irms =
3.925889459485796

This result could then be employed to guide other aspects of the design and operation of the
circuit such as power dissipation computations.
As we did for the simple sinusoid in Eq. (20.31), an interesting calculation involves
comparing this result with the peak current. Recognizing that this is an optimization prob-
lem, we can readily employ the fminbnd function to determine this value. Because we are
looking for a maximum, we evaluate the negative of the function:

>> [tmax,imax]=fminbnd(@(t) −10*exp(−t).*sin(2*pi*t),0,.5)

tmax =
0.22487940319321

imax =
−7.886853873932577

A maximum current of 7.88685 A occurs at t = 0.2249 s. Hence, for this particular wave
form, the root-mean-square value is about 49.8% of the maximum.

TABLE 20.3   Results of using various-point Gauss quadrature
formulas to approximate the integral.

Points Estimate εt (%)

2 11.9978243 22.1

3 15.6575502 1.59
4.42 × 10−2
4 15.4058023 2.01 × 10−4

5 15.4126391 1.82 × 10−5

6 15.4126109

544 Numerical Integration of Functions

PROBLEMS

20.1  Use Romberg integration to evaluate 20.7  The heat required, ΔH (cal), to induce a temperature
change, ΔT (°C), of a material can be computed as
∫ (  )I=​ 2 + ​ _1x_  ​   2 dx
ΔH = mCp(T )ΔT
 ​  ​​  x ​

1

to an accuracy of εs = 0.5%. Your results should be presented where m = mass (g), and Cp(T) = heat capacity [cal/(g .°C)].
in the format of Fig. 20.1. Use the analytical solution of the The heat capacity increases with temperature, T (°C),
i­ ntegral to determine the percent relative error of the result ob-
tained with Romberg integration. Check that εt is less than εs. according to
20.2  Evaluate the following integral (a) analytically,
(b) Romberg integration (εs = 0.5%), (c) the three-point Gauss Cp(T ) = 0.132 + 1.56 × 10−4 T + 2.64 × 10−7T 2
quadrature formula, and (d) MATLAB integral f­ unction:
Write a script that uses the integral function to generate a
∫8 plot of ΔH versus ΔT for cases where m = 1 kg, the starting
temperature is −100 °C, and ΔT ranges from 0 to 300 °C.
I = ​  ​  ​− 0.055x4 + 0.86 x3 − 4.2x2 + 6.3x + 2 dx 20.8  The amount of mass transported via a pipe over a pe-
0 riod of time can be computed as

20.3  Evaluate the following integral with (a) Romberg in- ∫ t2
tegration (εs = 0.5%), (b) the two-point Gauss quadrature
formula, and (c) MATLAB integral function: M = ​  ​ ​ Q(t) c(t) dt
t1
∫3
where M = mass (mg), t1 = the initial tainmdec( (mt)i=n)c­, ot2n=cetnhteraftiinoanl
I = ​  ​  x​  e2 x dx time (min), Q(t) = flow rate (m3/min),
0

20.4  There is no closed form solution for the error function (mg/m3). The following functional repre­sentations define the

∫erf(a) a temporal variations in flow and ­concentration:
= ​ _ ​√_2__π  __   ​​ ​ dx
 ​  ​e−​x ​2 ​ Q(t) = 9 + 5 cos2(0.4 t)
c(t) = 5e−0.5t + 2 e0.15t
0

Use the (a) two-point and (b) three-point Gauss-Legendre Determine the mass transported between t1 = 2 and t2 = 8 min
formulas to estimate erf(1.5). Determine the percent relative with (a) Romberg integration to a tolerance of 0.1% and
error for each case based on the true value, which can be (b) the MATLAB integral function.
determined with MATLAB’s built-in function erf. 20.9  Evaluate the double integral
20.5  The force on a sailboat mast can be represented by the
following function: ∫ ∫2 4

H

  ​ ​2  00

0
∫ (  )F  ​(x2 − 3y2 + xy3)
= ​ ​  ​ _5_+_z _z_ ​    ​ e−2z∕H dz ​ −  2​ ​   ​ dx dy

0

where z = the elevation above the deck and H = the height of the (a) analytically, with the 2-point Gauss quadrature, and
mast. Compute F for the case where H = 30 using (a) Romberg (b) with the integral2 function.
integration to a tolerance of εs = 0.5%, (b) the two-point Gauss- 20.10  Compute work as described in Sec. 19.9, but use the
Legendre formula, and (c) the MATLAB integral function. following equations for F(x) and θ(x):

20.6  The roo_t-_m_e_an_-_sq_u_are current can be computed as F(x) = 1.6x − 0.045x2
T θ(x) = −0.00055x3 + 0.0123x2 + 0.13x
√ ∫IRMS  = ​    ​_T1_ ​​  ​ dt  ​
 ​i 2(t)
0
The force is in newtons and the angle is in radians. Perform
For T = 1, suppose that i(t) is defined as the integration from x = 0 to 30 m.
20.11  Perform the same computation as in Sec. 20.5, but for
(  )i (t) = 8e−t∕T sin ​  2π ​_ Tt_  ​    ​   for 0 ≤ t ≤ T∕2 the current as specified by

i (t) = 0          for T∕2 ≤ t ≤ T i (t) = 6e−1.25t sin 2π t     for 0 ≤ t ≤ T∕2

Evaluate the IRMS using (a) Romberg integration to a toler- i(t) = 0 for T∕2 < t ≤ T
ance of 0.1%, (b) the two- and three-point Gauss-Legendre
formulas, and (c) the MATLAB integral function. where T = 1 s.

PROBLEMS 545

20.12  Compute the power absorbed by an element in a cir- t, s 0 0.2 0.4 0.6
cuit as described in Sec. 20.5, but for a simple sinusoidal i, 10−3 A 0.2 0.2282
current i = sin(2π t∕T ) where T = 1 s. 0.3683 0.3819
(a) Assume that Ohm’s law holds and R = 5 Ω. t, s 0.8
(b) Assume that Ohm’s law does not hold and that voltage i, 10−3 A 0.0486 1 1.2
and current are related by the following nonlinear rela- 0.0082 0.1441
tionship: V = (5i − 1.25i3).
20.13  Suppose that the current through a resistor is de-
scribed by the function 20.15  The work done on an object is equal to the force times
_ the distance moved in the direction of the force. The velocity
i (t) = (60 − t)2 + (60 − t) sin(​  √t  ​   ) of an object in the direction of a force is given by

and the resistance is a function of the current: υ = 4t 0 ≤ t ≤ 5
υ = 20 + (5 − t)2 5 ≤ t ≤ 15
R = 10i + 2i 2∕3
where υ is in m/s. Determine the work if a constant force of
Compute the average voltage over t = 0 to 60 using the 200 N is applied for all t.
­composite Simpson’s 1∕3 rule. 20.16  A rod subject to an axial load (Fig. P20.16a) will be
20.14  If a capacitor initially holds no charge, the voltage deformed, as shown in the stress-strain curve in Fig. P20.16b.
across it as a function of time can be computed as The area under the curve from zero stress out to the point of
rupture is called the modulus of toughness of the material. It
∫V(t) = ​ _C1_  ​ ​  ​ t dt provides a measure of the energy per unit volume required
to cause the material to rupture. As such, it is representative
0  ​i (t) of the material’s ability to withstand an impact load. Use
numerical integration to compute the modulus of toughness
Use MATLAB to fit these data with a fifth-order polynomial. for the stress-strain curve seen in Fig. P20.16b.
Then, use a numerical integration function along with a value
of C = 10−5 farad to generate a plot of voltage versus time.

es Rupture
0.02 40.0
0.05 37.5
0.10 43.0
0.15 52.0
60 0.20 60.0
0.25 55.0

s, ksi 40
Modulus of

20 toughness

0 0.1 0.2 e
(a) (b)

FIGURE P20.16
(a) A rod under axial loading and (b) the resulting stress-strain curve,
where stress is in kips per square inch (103 lb/in2), and strain is
dimensionless.

546 Numerical Integration of Functions

where υ = upward velocity, u = velocity at which fuel is
expelled =rel0a,tiqve=tofutehlecrooncskuemt, pmti0o=n initial mass of the rocket
A r at time t rate, and g = downward
FIGURE P20.17 acceleration of gravity (assumed constant = 9.81 m/s2). If
u = 1850 m/s, m0 = 160,000 kg, and q = 2500 kg/s, deter-
mine how high the rocket will fly in 30 s.
20.21  The normal distribution is defined as

20.17  If the velocity distribution of a fluid flowing through f (x) = ​ _​ √_1_2_ _ _π__ ​  ​ e−x​ ​ 2/​ 2
a pipe is known (Fig. P20.17), the flow rate Q (i.e., the vol- (a) Use MATLAB to integrate this function from x = −1 to
ume of water passing through the pipe per unit time) can be
1 and from −2 to 2.
computed by Q = ʃ υ dA, where υ is the velocity, and A is (b) Use MATLAB to determine the inflection points of this

the pipe’s cross-sectional area. (To grasp the meaning of this function.
relationship physically, recall the close connection between 20.22  Use Romberg integration to evaluate
summation and integration.) For a circular pipe, A = π r 2 and
dA = 2π r dr. Therefore, ∫​ ​ 2 _​ ​e1_x _+si_nx_2x_ ​ dx

∫r 0

Q = ​  ​ υ​  (2π r) dr to an accuracy of εs = 0.5%. Your results should be pre-
0 sented in the form of Fig. 20.1.
20.23  Recall that the velocity of the free-falling bungee
where r is the radial distance measured outward from the jumper can be computed analytically as [Eq. (1.9)]:
center of the pipe. If the velocity distribution is given by
√ ( )√υ (t) = ​  _ ​_ gc_m_d_ ​ ​  tanh ​​ ​  _  ​_gm_c__d ​  ​ t   ​
(  )υ = 2 ​​ 1 −  _​rr_0    ​ ​ 1∕6
where v(t) = velocity (m/s), t = time (s), g = 9.81 m/s2,
where r0 is the total radius (in this case, 3 cm), compute Q m = mass (kg), cd = drag coefficient (kg/m).
using the composite trapezoidal rule. Discuss the results. (a) Use Romberg integration to compute how far the jumper
20.18  Using the following data, calculate the work done by
stretching a spring that has a spring constant of k = 300 N/m travels during the first 8 seconds of free fall given m =
to x = 0.35 m. To do this, first fit the data with a polynomial 80 kg and cd = 0.2 kg/m. Compute the answer to εs = 1%.
and then integrate the polynomial numerically to compute (b) Perform the same computation with integral.
the work: 20.24  Prove that Eq. (20.30) is equivalent to Boole’s rule.
20.25  As specified in the following table, the earth’s density
F, 103 · N 0 0.01 0.028 0.046 varies as a function of the distance from its center (r = 0):
x, m 0 0.05 0.10 0.15

F, 103 · N 0.063 0.082 0.11 0.13
x, m 0.20 0.25 0.30 0.35

r, km 0 1100 1500 2450 3400 3630 4500

20.19  Evaluate the vertical distance traveled by a rocket if ρ, g/cm3 13 12.4 12 11.2 9.7 5.7 5.2
the vertical velocity is given by
r, km 5380 6060 6280 6380
υ = 11t2 − 5t 0 ≤ t ≤ 10 ρ, g/cm3 4.7 3.6 3.4 3

υ = 1100 − 5t 10 ≤ t ≤ 20 Develop a script to fit these data with interp1 using the
pchip option. Generate a plot showing the resulting fit along
υ = 50t + 2(t − 20)2 20 ≤ t ≤ 30 with the data points. Then use one of MATLAB’s integra-
tion functions to estimate the earth’s mass (in metric tonnes)
20.20  The upward velocity of a rocket can be computed by by integrating the output of the interp1 function.
the following formula: 20.26  Develop an M-file function to implement Romberg
integration based on Fig. 20.2. Test the function by using it
(  )υ = u ln ​​ ​ _m_0_m_−0_ _q_t ​    ​ − gt

PROBLEMS 547

to ­determine the integral of the polynomial from Example 20.29  Use the two-point Gauss quadrature approach to es-
20.1. Then use it to solve Prob. 20.1. timate the average value of the following function between
20.27  Develop an M-file function to implement adaptive a = 1 and b = 5
quadrature based on Fig. 20.6. Test the function by using it to
determine the integral of the polynomial from Example 20.1. f  (x) =  ​_1_+_2_ _x_2 ​ 
Then use it to solve Prob. 20.20.
24.28  The average flow in a river channel, Q (m3/s), with an 20.30  Evaluate the following integral
irregular cross-section can be computed as the integral of the
product of velocity and depth ∫4

∫B I = ​  ​ ​x  3 dx
0
Q = ​  ​ ​U  (y) H (y) dy
0 (a) Analytically.
(b) Using the MATLAB integral function.
where U(y) = water velocity (m/s) at distance y (m) from the (c) Using Monte Carlo integration.
bank, and H(y) = water depth (m/s) at distance y from the 20.31  The MATLAB humps function defines a curve that has
bank. Use integral along with spline fits of U and H to 2 maxima (peaks) of unequal height over the interval 0 ≤ x ≤ 2.
the following data collected at different distances across the Develop a MATLAB script to determine the integral over
channel to estimate the flow. the interval with (a) the MATLAB integral function and
(b) Monte Carlo integration.
y (m) H (m) Y (m) U (m/s) 20.32  Evaluate the following double integral
0 0 0 0
1.1 I= ​  ​∫ ∫2 1​  − 3 ​ ​y4 (x2 + xy) dx dy
2.8 0.21 1.6 0.08 0
4.6 0.78 4.1 0.61
6 1.87 4.8 0.68 (a) Using a single application of Simpson’s 1/3 rule across
8.1 1.44 6.1 0.55 each dimension.
9 1.28 6.8 0.42
0.2 (b) Check your results with the integral2 function.
9 0

21
Numerical Differentiation

CHAPTER OBJECTIVES

The primary objective of this chapter is to introduce you to numerical differentiation.
Specific objectives and topics covered are
• Understanding the application of high-accuracy numerical differentiation formulas

for equispaced data.
• Knowing how to evaluate derivatives for unequally spaced data.
• Understanding how Richardson extrapolation is applied for numerical differentiation.
• Recognizing the sensitivity of numerical differentiation to data error.
• Knowing how to evaluate derivatives in MATLAB with the diff and gradient

functions.
• Knowing how to generate contour plots and vector fields with MATLAB.

YOU’VE GOT A PROBLEM

Recall that the velocity of a free-falling bungee jumper as a function of time can be
computed as
(  )√ √υ(t) = ​ __​ gc__md__ ​ ​  tanh ​ ​ _​ _gm__c__d ​  ​ t   ​
(21.1)

At the beginning of Chap. 19, we used calculus to integrate this equation to determine the
vertical distance z the jumper has fallen after a time t.

( )z(t) = ​_ cm_d  ​ ln ​[cosh ​√​  _ ​_gm__c__d_ _​  ​  t ]​ ​ (21.2)

548

21.1 Introduction and Background 549

Now suppose that you were given the reverse problem. That is, you were asked to
determine velocity based on the jumper’s position as a function of time. Because it is the
inverse of integration, differentiation could be used to make the determination:

υ(t) = _​ d_zd(_tt _​)​    (21.3)

Substituting Eq. (21.2) into Eq. (21.3) and differentiating would bring us back to Eq. (21.1).
Beyond velocity, you might also be asked to compute the jumper’s acceleration. To

do  this, we could either take the first derivative of velocity, or the second derivative of
­displacement:

a(t) = ​_ d_υd_(t_t ​_)​  =  ​_d_ d2_zt (_2t _​)​    (21.4)

In either case, the result would be (21.5)

( )a(t) = g sech2 ​ ​ √__ ​gm__c__d ​  ​t  ​

Although a closed-form solution can be developed for this case, there are other func-
tions that may be difficult or impossible to differentiate analytically. Further, suppose that
there was some way to measure the jumper’s position at various times during the fall. These
distances along with their associated times could be assembled as a table of discrete val-
ues. In this situation, it would be useful to differentiate the discrete data to determine the
velocity and the acceleration. In both these instances, numerical differentiation methods
are available to obtain solutions. This chapter will introduce you to some of these methods.

21.1 INTRODUCTION AND BACKGROUND

21.1.1  What Is Differentiation?

Calculus is the mathematics of change. Because engineers and scientists must continu-
ously deal with systems and processes that change, calculus is an essential tool of our
profession. Standing at the heart of calculus is the mathematical concept of differentiation.

According to the dictionary definition, to differentiate means “to mark off by differ-
ences; distinguish; . . . to perceive the difference in or between.” Mathematically, the deriva-
tive, which serves as the fundamental vehicle for differentiation, represents the rate of change
of a dependent variable with respect to an independent variable. As depicted in Fig. 21.1, the
mathematical definition of the derivative begins with a difference approximation:

​ _ΔΔ_xy_  ​ =   _​f (_x_i _+__ΔΔ_x _x)_ −__​f _(x_​i_ )  (21.6)

where y and f (x) are alternative representatives for the dependent variable and x is the
­independent variable. If Δx is allowed to approach zero, as occurs in moving from
Fig. 21.1a to c, the difference becomes a ­derivative:

_​ dd_xy_  ​ =   ​Δ l x i m→   0    ​  ​ _f (_x_i _+__ΔΔ_x _x)_ −__​f _(x_​i_ )  (21.7)

550 Numerical Differentiation

y yy
f (xi + ∆x)

∆y
f (xi + ∆x)

f (xi) ∆y f ' (xi)
f (xi)

xi xi + ∆x x xi xi + ∆x x xi x
(c)
∆x ∆x
(a) (b)

FIGURE 21.1
The graphical definition of a derivative: as Δx approaches zero in going from (a) to (c), the difference approximation
becomes a derivative.

where dy∕dx [which can also be designated as y′ or f ′(xi )]1 is the first derivative of y with
respect to x evaluated at xi. As seen in the visual depiction of Fig. 21.1c, the derivative is
the slope of the tangent to the curve at xi.

The second derivative represents the derivative of the first derivative,

(  )​  _dd _x2y _2  ​ = _​ dd_ x_  ​  ​  ​ _dd_xy_  ​   ​ (21.8)

Thus, the second derivative tells us how fast the slope is changing. It is commonly referred
to as the curvature, because a high value for the second derivative means high curvature.

Finally, partial derivatives are used for functions that depend on more than one vari-
able. Partial derivatives can be thought of as taking the derivative of the function at a point
with all but one variable held constant. For example, given a function f that depends on both
x and y, the partial derivative of f with respect to x at an arbitrary point (x, y) is defined as

​_ ∂∂_x f_  ​ =   ​Δ l x i m→   0    ​ _ ​  f _(x_+__Δ_x_Δ,  y_x) _−_​_f (_x​_, y_)   (21.9)

Similarly, the partial derivative of f with respect to y is defined as
_ ​∂∂_y f_  ​ = ​  Δ l y i m→   0    ​ ​ _  f _(x_, _y_+_Δ_Δ  _yy) _−_​_f (_x​_, y_)  (21.10)

To get an intuitive grasp of partial derivatives, recognize that a function that depends on
two variables is a surface rather than a curve. Suppose you are mountain climbing and have
access to a function f that yields elevation as a function of longitude (the east-west oriented

1 The form dy∕dx was devised by Leibnitz, whereas y′ is attributed to Lagrange. Note that Newton used the
so-called dot notation: y˙ . Today, the dot notation is usually used for time derivatives.

21.1 Introduction and Background 551

x axis) and latitude (the north-south oriented y axis). If you stop at a particular point (yx00),∕y∂0y),.
the slope to the east would be ∂f (x0, y0)∕∂x, and the slope to the north would be ∂f (x0,

21.1.2  Differentiation in Engineering and Science

The differentiation of a function has so many engineering and scientific applications that
you were required to take differential calculus in your first year at college. Many specific
examples of such applications could be given in all fields of engineering and science.
Differentiation is commonplace in engineering and science because so much of our work
involves characterizing the changes of variables in both time and space. In fact, many of
the laws and other generalizations that figure so prominently in our work are based on the
predictable ways in which change manifests itself in the physical world. A prime example
is Newton’s second law, which is not couched in terms of the position of an object but
rather in its change with respect to time.

Aside from such temporal examples, numerous laws involving the spatial behavior of
variables are expressed in terms of derivatives. Among the most common of these are the
constitutive laws that define how potentials or gradients influence physical processes. For
example, Fourier’s law of heat conduction quantifies the observation that heat flows from
regions of high to low temperature. For the one-dimensional case, this can be expressed
mathematically as

q = −k ​ _dd_Tx_ ​  (21.11)

where q(x) = heat flux (W/m2), k = coefficient of thermal conductivity [W/(m · K)], T =
temperature (K), and x = distance (m). Thus, the derivative, or gradient, provides a mea-
sure of the intensity of the spatial temperature change, which drives the transfer of heat
(Fig. 21.2).

FIGURE 21.2
Graphical depiction of a temperature gradient. Because heat moves “downhill” from high to
low temperature, the flow in (a) is from left to right. However, due to the orientation of Cartesian
coordinates, the slope is negative for this case. Thus, a negative gradient leads to a positive
flow. This is the origin of the minus sign in Fourier’s law of heat conduction. The reverse case is
depicted in (b), where the positive gradient leads to a negative heat flow from right to left.

T T

Direction of Direction of
heat flow heat flow

T 0 T > 0
i i
<

x x
(b)
(a)

552 Numerical Differentiation

TABLE 21.1  The one-dimensional forms of some constitutive laws commonly used in
engineering and science.

Law Equation Physical Area Gradient Flux Proportionality

Fourier’s law  q = −k ​ _dd _Tx_ ​  Hea t conduction Tempe rature Heat flux Thermal
Conductivity

Fick’s law   J = −D _​ dd_cx_  ​ Mass diffusion Concentration Mass flux Diffusivity

Darcy’s law q = −k  ​_dd_hx_ ​  Flow through Head Flow flux Hydraulic
Conductivity
porous media
Electrical
O hm’s law   J = −σ ​ _d d_Vx_ ​  Cur rent flow Voltag e Current flux Conductivity

 N evwistcoons’sit y law  τ = μ ​_ dd_ ux_ ​  Fluids Velocity Shear Dynamic
Stress Viscosity

H ooke’s law  σ = E  ​_ΔL_ L_ ​​  Elas ticity Deform ation Stress Young’s
Modulus

Similar laws provide workable models in many other areas of engineering and science,
including the modeling of fluid dynamics, mass transfer, chemical reaction kinetics, elec-
tricity, and solid mechanics (Table 21.1). The ability to accurately estimate derivatives is
an important facet of our capability to work effectively in these areas.

Beyond direct engineering and scientific applications, numerical differentiation
is also important in a variety of general mathematical contexts including other areas of
numerical methods. For example, recall that in Chap. 6 the secant method was based on a
finite-d­ ifference approximation of the derivative. In addition, probably the most important
application of numerical differentiation involves the solution of differential equations. We
have already seen an example in the form of Euler’s method in Chap. 1. In Chap. 24, we
will investigate how numerical differentiation provides the basis for solving boundary-
value problems of ordinary differential equations.

These are just a few of the applications of differentiation that you might face regularly in
the pursuit of your profession. When the functions to be analyzed are simple, you will nor-
mally choose to evaluate them analytically. However, it is often difficult or impossible when
the function is complicated. In addition, the underlying function is often unknown and de-
fined only by measurement at discrete points. For both these cases, you must have the ability
to obtain approximate values for derivatives, using numerical techniques as described next.

21.2 HIGH-ACCURACY DIFFERENTIATION FORMULAS
We have already introduced the notion of numerical differentiation in Chap. 4. Recall that
we employed Taylor series expansions to derive finite-difference approximations of deriv-
atives. In Chap. 4, we developed forward, backward, and centered difference approxima-
tions of first and higher derivatives. Remember that, at best, these estimates had errors that
were O(h2)—that is, their errors were proportional to the square of the step size. This level
of a­ ccuracy is due to the number of terms of the Taylor series that were retained during the

21.2 High-Accuracy Differentiation Formulas 553

d­ erivation of these formulas. We will now illustrate how high-accuracy finite-difference
formulas can be generated by including additional terms from the Taylor series expansion.
For example, the forward Taylor series expansion can be written as [recall Eq. (4.13)]

f (xi+1) = f (xi ) + f ′ (xi ) h + ​ _f _″2_(!x_ i​_ )​  h2 + · · · (21.12)

which can be solved for (21.13)
f ′(xi ) = ​   _f_ (_x_i+_1_)h_ −_ _f_​  (_x_​i _) − ​_  f_ ″2_(!x_ i​_)​  h + O(h2)

In Chap. 4, we truncated this result by excluding the second- and higher-derivative terms
and were thus left with a forward-difference formula:
f ′(xi ) = _ ​ f _(x_i_+_1)_h_− _ _f_​ (_x_​i _) + O(h)
(21.14)

In contrast to this approach, we now retain the second-derivative term by substituting
the following forward-difference approximation of the second derivative [recall Eq. (4.27)]:

f ″(xi ) = ​ _ f (_xi+_2)_−_2_ f h_ ( 2x_ i+_1)_​ + _ f_​ (x_i) + O(h) (21.15)

into Eq. (21.13) to yield (21.16)
f ′(xi ) = _ ​f_ (_x_i+_1_)h_ −_ _f_​ (_x_​i _) −  _ ​f (_x_i+_2_)_−__2_ 2_f h( _x2_ i+_1_)​_ +_​_f _(x _i_ ) h + O(h2 ) (21.17)

or, by collecting terms:
f ′(xi ) = ​ _ −f_ (x_i+2_) +_ _4 f 2_ (hx_ i+_1)  _−​  _3 f_​ (x_i) + O(h2 )

Notice that inclusion of the second-derivative term has improved the accuracy to
O(h2). Similar improved versions can be developed for the backward and centered formulas
as well as for the approximations of higher-order derivatives. The formulas are summarized
in Fig. 21.3 through Fig. 21.5 along with the lower-order versions from Chap. 4. The fol-
lowing example illustrates the utility of these formulas for estimating derivatives.

EXAMPLE 21.1 High-Accuracy Differentiation Formulas

Problem Statement.  Recall that in Example 4.4 we estimated the derivative of
f (x) = −0.1x4 − 0.15x3 − 0.5x2 − 0.25x + 1.2

at x = 0.5 using finite-differences and a step size of h = 0.25. The results are summarized
in the following table. Note that the errors are based on the true value of f ′(0.5) = −0.9125.

Backward Centered Forward
O(h2)
O(h) O(h)
Estimate
εt −0.714 −0.934 −1.155
21.7% −2.4% −26.5%

Repeat this computation, but employ the high-accuracy formulas from Fig. 21.3 through
Fig. 21.5.

554 Numerical Differentiation

First Derivative Error
f ′(xi) = ​_  ​ f_ (_xi_+_1)_h − __f_ (_xi_) ​ O(h)
f ′(xi) = _ ​ −_ f_ (_x_i+_2_)_+ __4_2 f_ (h_x _i+_1)_ _​− _3__​f_ (_xi_) O(h2)

Second Derivative O(h)
f ″(xi) = _ ​​  f_ (_x_i+_2_) _− __2_h f_ 2(_ x_i+_1 _)_ +__f _(_xi_) ​ O(h2)
f ″(xi) =  ​ _​−_ f_ (_x_i+_3_)_+_ _4__f _(x_i_+_2)_h  _−2 _5__f_ (_x_i+_1_ ) _+__2__f _(x_i_)​
O(h)
Third Derivative O(h2)

f ‴(xi) =   ​​_ f_(_xi_+3_)_−__3_f _(_x_i+_2)h _3+_  _3_f_( _x_i+ _1)_−__f_(_xi_)​ O(h)
f ‴(xi) =   ​​_−_3_f_(_x_i+_4)_+_ _1_4_f_(x_i_+3_)_ −__2_42 _hf_3( _x_i+_2 )_+_ _18__f_(x_i_+ 1_) _−__5_f_(_xi_)​ O(h2)

Fourth Derivative

f ⁗(xi) = _​​   f_(_x_i+_4_)_−__4__f _(x_i_+_3)__+__6_h f_ 4(_ x_i+_2_)_−__4__f_ ( _xi_+_1)__+__f _(x_i_)​
f ⁗(xi) = ​ ​_ −_2 _f _(x_i+_5)_+ _1_1 _f (_x_i+4_)_− _2_4_f_(_xi+_3h _) 4+_  _2_6_f _(x_i+ _2 )_−_1_4_f_(x_i+ _ 1)_ +__3 _f _(x_i)​

FIGURE 21.3
Forward finite-difference formulas: two versions are presented for each derivative. The latter version
incorporates more terms of the Taylor series expansion and is, consequently, more accurate.

Solution.  The data needed for this example are

xi−2 = 0 f (xi−2) = 1.2
xi−1 = 0.25 f (xi−1) = 1.1035156
xi = 0.5 f (xi ) = 0.925

xi+1 = 0.75 f (xi+1) = 0.6363281
xi+2 = 1 f (xi+2) = 0.2

The forward difference of accuracy O(h2) is computed as (Fig. 21.3)

f ′(0.5) =  _​ −_0_._2_+__4_(_0 _.6_2 3_(6_03_.22_58_)1_ )_ _− _3​_(_0_._9​_2_5_) = −0.859375   εt = 5.82%
The backward difference of accuracy O(h2) is computed as (Fig. 21.4)

f ′(0.5) =  _​ 3_(0_._9_2_5_)_−_ __4 2_((1_0._.12_05_3)_ 5_1 _ 5_6_​)_ _+_​ _1_.2_ = −0.878125   εt = 3.77%
The centered difference of accuracy O(h4) is computed as (Fig. 21.5)

f ′(0.5) =  ​_ −_0._2_+_8_(_0 ._6_36_3_21 _821_()0_ −._258_)(_ 1 ._1_03_5​_ 1_5 6_)_ ​+_ _1._2 = −0.9125   εt = 0%

21.3 Richardson extrapolation 555

First Derivative Error
f ′(xi) =  ​_​  f_ (_xi_)_−_h   _f _(x_i−_1_) ​ O(h)
f ′(xi) = ​ _ 3_f_ (_x_i)__−_ _4_f_ 2 (_xh_i −_1_)_  +_​ _ f_ (_x​_i−_2_) O(h2)
Second Derivative
f ″(xi) = ​​ _  f_ (_x_i)_−__2 __f _(h x_2i_−  _1)_+ __ f_ (_x_i−_2_) ​ O(h)
f ″(xi) =  _​ ​2_ f_ (_x_i)__−__5__f _( x_i_−_1)__h +_2 _4__f _(x_ i_−_2)_ _−__f _(_x_i−_3_) ​ O(h2)
Third Derivative
O(h)
f ‴(xi) =  ​_​  f_(_xi_) _−_3__f_(x _i_−1_)_+h _3_3  _f_(_xi _−2_) _−__f _(x_i−_3_)​ O(h2)
f ‴(xi) = _​ ​ 5_ f_(x_i_) _−_1_8_ _f _(x_i−_1_)_+__2 _4_f_2 (_xh_i3− _2)_−_ _1_4 _f_(_x_i−_3)_ +_ _3__f _(x_i−_4_)​
O(h)
Fourth Derivative O(h2)

f ⁗(xi) = _  ​​ f_(_x_i)_−__4__f_(_ x_i−_1_)_+__6__f _(h x_ 4i_− _2)__−__4_f_(_x_ i −_3_)_+__f_(_x_i−_4_)​

f ⁗(xi) = ​ ​_ 3 _f _(x_i)_−_1_4 _f_(x_i−_1)_+__2 _6_f _(x_i−_2)_−h _ 42_  4__f (_x_i−3_) _ +_1_1 _f (_xi_−4_)  _ −_2_ f_(_xi_−5_)​

FIGURE 21.4
Backward finite-difference formulas: two versions are presented for each derivative. The latter
version incorporates more terms of the Taylor series expansion and is, consequently, more accurate.

As expected, the errors for the forward and backward differences are considerably
more accurate than the results from Example 4.4. However, surprisingly, the centered dif-
ference yields the exact derivative at x = 0.5. This is because the formula based on the
Taylor series is equivalent to passing a fourth-order polynomial through the data points.

21.3 RICHARDSON EXTRAPOLATION

To this point, we have seen that there are two ways to improve derivative estimates when
employing finite differences: (1) decrease the step size or (2) use a higher-order formula
that employs more points. A third approach, based on Richardson extrapolation, uses two
derivative estimates to compute a third, more accurate, approximation.

Recall from Sec. 20.2.1 that Richardson extrapolation provided a means to obtain an
improved integral estimate by the formula [Eq. (20.4)]

I = I (h2) +  _​(h_1_∕_h_12_) 2__−_1_ ​ [I (h2) − I (h1)] (21.18)

where I (h1) and I (h2) are integral estimates using two step sizes: h1 and h2. Because of its
convenience when expressed as a computer algorithm, this formula is usually written for
the case where h2 = h1∕2, as in

I =  ​_34_  ​ I (h2) − ​_ 13_  ​ I (h1) (21.19)

556 Numerical Differentiation

First Derivative Error
f ′(xi) =  _​​  f _(x_i+_1_)2_− h_ f_ (_xi_−1_) ​ O(h2)
f ′(xi) =  _ ​−_ f (_x_i+2_) _+ _8_f_ (x_i+_11 )2_ −h_ 8__f (_xi​_−1 _)  +__f​ _(x_i−_2) O(h4)

Second Derivative O(h2)
f ″(xi) = _ ​ ​ f_ (_x_i+_1_) _− __2_ hf_ 2(_ x_i )_ +__ f_ (_x_i−_1_)​ O(h4)
f ″(xi) =  _​​ −_ f _(x_i+_2)_+_ _16__f (_x_i+_1)_− _3_1 0_2_hf 2(_ x_i)_+ _ 1_6_f_ (x_i−_1_)   _−_f _(x_i−_2_) ​
O(h2)
Third Derivative O(h4)

f ‴(xi) = _ ​​  f_(x_i_+2_)_−_ 2__f _(x_i+_1_)2 _+h _32 __f (_x_i−_1 )_ −__f_(x_i−_2_) ​ O(h2)
f ‴(xi) =  _​​ −_ f _(x_i+_3)_+_ _8_f_(x_i+_2_) −_ _13__f _(x_i+_18 )_h +_3 _13_f_(_xi_− 1_ ) _−_8_f_(_x_i− _2 )_ +_f_(_xi_−3_)​ O(h4)

Fourth Derivative

f ⁗(xi) = ​​  _ f_(_x_i+_2_)_−__4__f _(x_i_+_1)__+__6_h f_ 4(_ x_i)__−__4_f_(_x_ i −_1_)_+__f_(_x_i−_2_) ​
f ⁗(xi) = _  ​​−_ f (_xi_+3_) +_ 1_2_f _(x_i+2_) _− _3_9 _f (_xi_+1)_ +_5_6 6_hf4_ (x_i)_ −_3 _9_f _(x_i−1_ ) _+ _12_ f_(x_i−_ 2 )_−_f_(x_i−_3) ​

FIGURE 21.5
Centered finite-difference formulas: two versions are presented for each derivative. The
latter version incorporates more terms of the Taylor series expansion and is, consequently,
more accurate.

In a similar fashion, Eq. (21.19) can be written for derivatives as

D = ​ _43_  ​ D(h2) − ​_ 31_  ​ D(h1) (21.20)

For centered difference approximations with O(h2), the application of this formula will
yield a new derivative estimate of O(h4).

EXAMPLE 21.2 Richardson Extrapolation
Problem Statement.  Using the same function as in Example 21.1, estimate the first de-
rivative at x = 0.5 employing step sizes of h1 = 0.5 and h2 = 0.25. Then use Eq. (21.20) to
compute an improved estimate with Richardson extrapolation. Recall that the true value
is −0.9125.

Solution.  The first-derivative estimates can be computed with centered differences as
D(0.5) = ​_ 0_.2__−1_ _1​_.​2_  = −1.0   εt = −9.6%

and
D(0.25) =  _ ​0_.6_3_6_3_2_8_1_0 _−. _5_ 1_._1_0​ _3_5_​1_6_ = −0.934375  εt = −2.4%

21.4 DERIVATIVES of UNEQUALLY SPACED DATA 557

The improved estimate can be determined by applying Eq. (21.20) to give

D = ​ _43_  ​ (−0.934375) − _ ​31_  ​ (−1) = −0.9125
which for the present case is exact.

The previous example yielded an exact result because the function being analyzed
was a fourth-order polynomial. The exact outcome was due to the fact that Richardson
extrapolation is actually equivalent to fitting a higher-order polynomial through the data
and then evaluating the derivatives by centered divided differences. Thus, the present case
matched the derivative of the fourth-order polynomial precisely. For most other functions,
of course, this would not occur, and our derivative estimate would be improved but not
exact. Consequently, as was the case for the application of Richardson extrapolation, the
approach can be applied iteratively using a Romberg algorithm until the result falls below
an acceptable error criterion.

21.4 DERIVATIVES OF UNEQUALLY SPACED DATA

The approaches discussed to this point are primarily designed to determine the derivative
of a given function. For the finite-difference approximations of Sec. 21.2, the data had to be
evenly spaced. For the Richardson extrapolation technique of Sec. 21.3, the data also had to
be evenly spaced and generated for successively halved intervals. Such control of data spac-
ing is usually available only in cases where we can use a function to generate a table of values.

In contrast, empirically derived information—that is, data from experiments or field
studies—are often collected at unequal intervals. Such information cannot be analyzed
with the techniques discussed to this point.

One way to handle nonequispaced data is to fit a Lagrange interpolating polynomial
[recall Eq. (17.21)] to a set of adjacent points that bracket the location value at which you
want to evaluate the derivative. Remember that this polynomial does not require that the
points be equispaced. The polynomial can then be differentiated analytically to yield a
formula that can be used to estimate the derivative.

For example, you can fit a second-order Lagrange polynomial to three adjacent points
(x0, y0), (x1, y1), and (x2, y2). Differentiating the polynomial yields:

f ′(x) = f​ (x0)​  _​  (x_0_2_−x_−_x_1 )x_( 1_x_−0_−_x_2x_2_) ​ + f (x1)  ​_  (x_1_2−_x_−x_0 _)x(_ 0x_−1_−_x_2x_2_) ​

+ ​f (x2)​ ​ _ ( x_2_2_−x_−_x_0 )x_( 0_x_−2_−_x_1x_1_) ​ (21.21)

where x is the value at which you want to estimate the derivative. Although this equation is
certainly more complicated than the first-derivative approximation from Fig. 21.3 through
Fig. 21.5, it has some important advantages. First, it can provide estimates anywhere within
the range prescribed by the three points. Second, the points themselves do not have to be
equally spaced. Third, the derivative estimate is of the same accuracy as the centered dif-
ference [Eq. (4.25)]. In fact, for equispaced points, Eq. (21.21) evaluated at x = x1 reduces
to Eq. (4.25).

558 Numerical Differentiation

EXAMPLE 21.3 Differentiating Unequally Spaced Data

Problem Statement.  As in Fig. 21.6, a temperature gradient can be measured down into the
soil. The heat flux at the soil-air interface can be computed with Fourier’s law (Table 21.1):

|​q(z=0)= −k  ​_dd_Tz_ ​   ​

z=0

where q (z) = heat flux (W/m2), k = coefficient of thermal conductivity for soil [= 0.5 W/
(m · K)], T = temperature (K), and z = distance measured down from the surface into the
soil (m). Note that a positive value for flux means that heat is transferred from the air to
the soil. Use numerical differentiation to evaluate the gradient at the soil-air interface and
employ this estimate to determine the heat flux into the ground.

Solution.  Equation (21.21) can be used to calculate the derivative at the air-soil interface as
f ′(0) = 13.5 ​  _ (20_(_−0_)_0−_.0_01_.2_05_1)_ 2( _50_−−__00_.._00_33_77_55_) ​ + 12  _ ​( 0_._0_1_2_52_(_−0_) 0_−)_ (_00_.0−_1_02_._50_ 3−_7_05_._0_3_7_5_) ​
+ 10  ​ _ (0_._0_3_7_25_(−0_)_ 0_−) _(00_._0−_3_07_.50_ 1−_2_05_._0_1_2_5_) ​
= −1440 + 1440 − 133.333 = −133.333 K/m

which can be used to compute

( )q(z = 0) = −0.5 _​ mW_ _K_  ​ ​ −  133.333 ​ _mK_  ​   ​ = 66.667 _​ mW__2  ​ 

FIGURE 21.6
Temperature versus depth into the soil.

Air 10 12 13.5 T(°C)
Soil

1.25

3.75
z, cm

21.5 DERIVATIVES AND INTEGRALS FOR DATA WITH ERRORS
Aside from unequal spacing, another problem related to differentiating empirical data is
that these data usually include measurement error. A shortcoming of numerical differentia-
tion is that it tends to amplify errors in the data.

21.6 partial derivatives 559
y
y

t t
(c)
(a)
dy
dy dt
dt Di erentiate
Di erentiate

tt
(b) (d)

FIGURE 21.7
Illustration of how small data errors are amplified by numerical differentiation: (a) data with
no error, (b) the resulting numerical differentiation of curve (a), (c) data modified slightly, and
(d ) the resulting differentiation of curve (c) manifesting increased variability. In contrast, the
reverse operation of integration [moving from (d ) to (c ) by taking the area under (d )] tends to
attenuate or smooth data errors.

Fig. 21.7a shows smooth, error-free data that when numerically differentiated yield
a smooth result (Fig. 21.7b). In contrast, Fig. 21.7c uses the same data, but with alternat-
ing  points raised and lowered slightly. This minor modification is barely apparent from
Fig. 21.7c. However, the resulting effect in Fig. 21.7d is significant.

The error amplification occurs because differentiation is subtractive. Hence, random
positive and negative errors tend to add. In contrast, the fact that integration is a summing
process makes it very forgiving with regard to uncertain data. In essence, as points are
summed to form an integral, random positive and negative errors cancel out.

As might be expected, the primary approach for determining derivatives for imprecise
data is to use least-squares regression to fit a smooth, differentiable function to the data. In
the absence of any other information, a lower-order polynomial regression might be a good
first choice. Obviously, if the true functional relationship between the dependent and inde-
pendent variable is known, this relationship should form the basis for the least-squares fit.
21.6 PARTIAL DERIVATIVES
Partial derivatives along a single dimension are computed in the same fashion as ordinary
derivatives. For example, suppose that we want to determine to partial derivatives for a
two-dimensional function f (x, y). For equally spaced data, the partial first derivatives can

560 Numerical Differentiation

be approximated with centered differences: (21.22)
_​ ∂∂_x f_  ​   =  _ ​ f (_x _+_Δ_ x ,_ y2 _) Δ−_xf_  (x_ − _​Δ_ x_​, y_) (21.23)
​ _∂∂_y f_  ​   = _​   f (_x,_ y_+_Δ _ y2 _)Δ−_yf_  (x_ ,  _​y −__​Δy_)

All the other formulas and approaches discussed to this point can be applied to evaluate
partial derivatives in a similar fashion.

For higher-order derivatives, we might want to differentiate a function with respect to
two or more different variables. The result is called a mixed partial derivative. For exam-
ple, we might want to take the partial derivative of f (x, y) with respect to both independent
variables

(  )​ _∂∂x_ 2∂_fy  ​ = ​ _∂∂_x_   ​  ​  ​_ ∂∂_y f_  ​   ​ (21.24)

To develop a finite-difference approximation, we can first form a difference in x of the
partial derivatives in y:

 _​∂∂x_ 2∂_fy  ​ =  _​  ​_∂∂__y f__  ​ (_x_+__Δ__x _, _y_) 2_−Δ_x_​ _∂∂ __y f__  ​ (_ x_​ −__Δ__​x_, _y_) (21.25)

Then, we can use finite differences to evaluate each of the partials in y:

​_ ∂∂x_ 2∂_fy  ​ =  ​   _ _f __(x____+____Δ__x__, __y__ +____Δ____y__)2 __−Δ __y__f __( x____+____Δ__ x __,__y__−____ Δ____y__)2 ​_−Δ_x_ ​ _f __(_x___− ____Δ __x__,_ _y__+____Δ____ y__)2  __−Δ_ _y__f __(x____−____Δ __  x __,__y__−____Δ____y__)​​ (21.26)
​ 

Collecting terms yields the final result

​_ ∂∂x_ 2∂_fy  ​ = _​  f _(x__+__Δ_x_,_y_ +__Δ__y_) _−__f _( x__+__Δ_x_,_y_−__ Δ__ 4y_)Δ_−x_Δ_f y_( x__− __ Δ_x_,_y_+__Δ__ y_ )_+__f_(x__−__Δ _ x_,_y__−_Δ__y_)​ (21.27)

21.7 NUMERICAL DIFFERENTIATION WITH MATLAB
MATLAB software has the ability to determine the derivatives of data based on two built-
in functions: diff and gradient.

21.7.1  MATLAB Function: diff
When it is passed a one-dimensional vector of length n, the diff function returns a vector
of length n − 1 containing the differences between adjacent elements. As described in the
following example, these can then be employed to determine finite-difference approxima-
tions of first derivatives.

21.7 numerical differentiation with matlab 561

EXAMPLE 21.4 Using diff for Differentiation
Problem Statement.  Explore how the MATLAB diff function can be employed to dif-
ferentiate the function
f (x) = 0.2 + 25x − 200x2 + 675x3 − 900x4 + 400x5
from x = 0 to 0.8. Compare your results with the exact solution:
f ′ (x) = 25 − 400x2 + 2025x2 − 3600x3 + 2000x4

Solution.  We can first express f  (x) as an anonymous function:

>> f = @(x) 0.2 + 25*x − 200*x.^2 + 675*x.^3 − 900*x.^4 + 400*x.^5;

We can then generate a series of equally spaced values of the independent and dependent
variables:

>> x = 0:0.1:0.8;
>> y = f(x);

The diff function can be used to determine the differences between adjacent elements of
each vector. For example,

>> diff(x)

ans = 0.1000 0.1000 0.1000
Columns 1 through 5 0.1000
0.1000 0.1000
Columns 6 through 8
0.1000 0.1000

As expected, the result represents the differences between each pair of elements of x. To
compute divided-difference approximations of the derivative, we merely perform a vector
division of the y differences by the x differences by entering

>> d = diff(y)./diff(x)

d= 8.4900 8.6900
Columns 1 through 5
10.8900 −0.0100 3.1900
Columns 6 through 8
1.3900 −11.0100 −21.3100

Note that because we are using equally spaced values, after generating the x values, we
could have simply performed the above computation concisely as

>> d = diff(f(x))/0.1;

The vector d now contains derivative estimates corresponding to the midpoint between
adjacent elements. Therefore, in order to develop a plot of our results, we must first gener-
ate a vector holding the x values for the midpoint of each interval:

>> n = length(x);
>> xm = (x(1:n −1)+x(2:n))./2;

562 Numerical Differentiation

25 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8
20
15
10

5
0
−5
−10
−15
−20
−25 0

FIGURE 21.8
Comparison of the exact derivative (line) with numerical estimates (circles) computed with
MATLAB’s diff function.

As a final step, we can compute values for the analytical derivative at a finer level of reso-
lution to include on the plot for comparison.

>> xa = 0:.01:.8;
>> ya = 25 − 400*xa + 3*675*xa.^2 − 4*900*xa.^3 + 5*400*xa.^4;

A plot of the numerical and analytical estimates can be generated with

>> plot(xm,d,'o',xa,ya)

As displayed in Fig. 21.8, the results compare favorably for this case.

Note that aside from evaluating derivatives, the diff function comes in handy as a
programming tool for testing certain characteristics of vectors. For example, the following
statement displays an error message and terminates an M-file if it determines that a vector
x has unequal spacing:

if any(diff(diff(x)) ~ = 0), error('unequal spacing'), end

Another common use is to detect whether a vector is in ascending or descending
order. For example, the following code rejects a vector that is not in ascending order
(i.e., ­mono­tonically increasing):

if any(diff(x)< = 0), error('not in ascending order'), end

21.7 numerical differentiation with matlab 563

21.7.2  MATLAB Function: gradient

The gradient function also returns differences. However, it does so in a manner that is more
compatible with evaluating derivatives at the values themselves rather than in the i­ntervals
between values. A simple representation of its syntax is

fx = gradient(f)

where f = a one-dimensional vector of length n, and fx is a vector of length n containing
differences based on f. Just as with the diff function, the first value returned is the differ-
ence between the first and second value. However, for the intermediate values, a centered
difference based on the adjacent values is returned

diffi = ​ _fi_+1__−2_ _f​i_−​_ 1   (21.28)

The last value is then computed as the difference between the final two values. Hence, the
results are akin to using centered differences for all the intermediate values, with forward
and backward differences at the ends.

Note that the spacing between points is assumed to be one. If the vector represents
equally spaced data, the following version divides all the results by the interval and hence
returns the actual values of the derivatives,

fx = gradient(f, h)

where h = the spacing between points.

EXAMPLE 21.5 Using gradient for Differentiation
Problem Statement.  Use the gradient function to differentiate the same function that we
analyzed in Example 21.4 with the diff function.

Solution.  In the same fashion as Example 21.4, we can generate a series of equally spaced
values of the independent and dependent variables:

>> f = @(x) 0.2 + 25*x − 200*x.^2 + 675*x.^3 − 900*x.^4 + 400*x.^5;
>> x = 0:0.1:0.8;
>> y = f(x);

We can then use the gradient function to determine the derivatives as

>> dy = gradient(y,0.1)

dy = 8.5900
Columns 1 through 5
10.8900 5.4400 1.5900 5.8400
Columns 6 through 9
5.0400 −4.8100 −16.1600 −21.3100

As in Example 21.4, we can generate values for the analytical derivative and display both
the numerical and analytical estimates on a plot:

>> xa = 0:.01:.8;
>> ya = 25 − 400*xa + 3*675*xa.^2 − 4*900*xa.^3 + 5*400*xa.^4;
>> plot(x,dy,'o', xa,ya)

564 Numerical Differentiation

25 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8
20
15
10

5
0
−5
−10
−15
−20
−25 0

FIGURE 21.9
Comparison of the exact derivative (line) with numerical estimates (circles) computed with
MATLAB’s gradient function.

As displayed in Fig. 21.9, the results are not as accurate as those obtained with the diff
function in Example 21.4. This is due to the fact that gradient employs intervals that are
two times (0.2) as wide as for those used for diff (0.1).

Beyond one-dimensional vectors, the gradient function is particularly well suited for
determining the partial derivatives of matrices. For example, for a two-dimensional matrix,
f, the function can be invoked as

[fx,fy] = gradient(f, h)

where fx corresponds to the differences in the x (column) direction, and fy corresponds
to  the differences in the y (row) direction, and h = the spacing between points. If h is
o­ mitted, the spacing between points in both dimensions is assumed to be one. In the next
section, we will illustrate how gradient can be used to visualize vector fields.

21.8 CASE STUDY 565

21.8  CASE STUDY VISUALIZING FIELDS

Background.  Beyond the determination of derivatives in one dimension, the gradient
function is also quite useful for determining partial derivatives in two or more dimensions.
In particular, it can be used in conjunction with other MATLAB functions to produce vi-
sualizations of vector fields.

To understand how this is done, we can return to our discussion of partial derivatives
at the end of Sec. 21.1.1. Recall that we used mountain elevation as an example of a two-
dimensional function. We can represent such a function mathematically as

z = f (x, y)
where z = elevation, x = distance measured along the east-west axis, and y = distance
measured along the north-south axis.

For this example, the partial derivatives provide the slopes in the directions of the axes.
However, if you were mountain climbing, you would probably be much more interested in
determining the direction of the maximum slope. If we think of the two partial derivatives
as component vectors, the answer is provided very neatly by

∇f =  _​∂∂_  xf_  ​ i + _​ ∂∂_  yf_  ​ j
where ∇f is referred to as the gradient of f. This vector, which represents the steepest slope,
has a magnitude

____________

√( ) ( )​  ​ ​ _∂∂_  xf_  ​    ​2 + ​ ​ _∂∂_  yf_  ​    ​2 ​

and a direction

(  )θ = tan−1 = ​  ​ _∂∂  ff_∕∕∂∂_  xy  ​   ​

where θ = the angle measured counterclockwise from the x axis.
Now suppose that we generate a grid of points in the x-y plane and used the foregoing

equations to draw the gradient vector at each point. The result would be a field of arrows
i­ndicating the steepest route to the peak from any point. Conversely, if we plotted the nega-
tive of the gradient, it would indicate how a ball would travel as it rolled downhill from
any point.

Such graphical representations are so useful that MATLAB has a special function,
called quiver, to create such plots. A simple representation of its syntax is

quiver(x,y,u,v)

where x and y are matrices containing the position coordinates and u and v are matrices
containing the partial derivatives. The following example demonstrates the use of quiver
to visualize a field.

Employ the gradient function to determine to partial derivatives for the following two-
dimensional function:

f (x, y) = y − x − 2x2 − 2xy − y2

566 Numerical Differentiation

21.8  CASE STUDY continued

from x = −2 to 2 and y = 1 to 3. Then use quiver to superimpose a vector field on a contour
plot of the function.

Solution.  We can first express f (x, y) as an anonymous function

>> f = @(x,y) y − x − 2*x.^2 − 2.*x.*y − y.^2;

A series of equally spaced values of the independent and dependent variables can be gener-
ated as

>> [x,y] = meshgrid(−2:.25:0, 1:.25:3);
>> z = f(x,y);

  

The gradient function can be employed to determine the partial derivatives:

>> [fx,fy] = gradient(z,0.25);

We can then develop a contour plot of the results:

>> cs = contour(x,y,z);clabel(cs);hold on

As a final step, the resultant of the partial derivatives can be superimposed as vectors on
the contour plot:

>> quiver(x,y,−fx,−fy);hold off

FIGURE 21.10
MATLAB generated contour plot of a two-dimensional function with the resultant of the
partial derivatives displayed as arrows.

3 −+4 −+5
2.8

2.6 +−2 +−3
2.4 +−1
0
+

2.2

2 1
+

1.8
1.6 +0

1.4 +−1
1.2

1 0
−2 −1.8 −1.6 −1.4 −1.2 −1 −0.8 −0.6 −0.4 −0.2

Problems 567

21.8  CASE STUDY continued
Note that we have displayed the negative of the resultants, in order that they point
“downhill.”
The result is shown in Fig. 21.10. The function’s peak occurs at x = −1 and y = 1.5
and then drops away in all directions. As indicated by the lengthening arrows, the gradient
drops off more steeply to the northeast and the southwest.

P ROBLEMS

21.1  Compute forward and backward difference approxi- 21.9  Develop an M-file to obtain first-derivative estimates
mations of O(h) and O(h2), and central difference approxi- for unequally spaced data. Test it with the following data:
mations of O(h2) and O(h4) for the first derivative of y = sin x at
x = π∕4 using a value of h = π∕12. Estimate the true percent x 0.6 1.5 1.6 2.5 3.5
relative error εt for each approximation.
21.2  Use centered difference approximations to estimate the f (x) 0.9036 0.3734 0.3261 0.08422 0.01596
first and second derivatives of y = ex at x = 2 for h = 0.1.
Employ both O(h2) and O(h4) formulas for your estimates. where f (x) = 5e−2x x. Compare your results with the true
21.3  Use a Taylor series expansion to derive a centered derivatives.
finite-difference approximation to the third derivative that 21.10  Develop an M-file function that computes first and
is second-order accurate. To do this, you will have to use second derivative estimates of order O(h2) based on the for-
four different expansions for the points xi−2, xi−1, xi+1, and mulas in Fig. 21.3 through Fig. 21.5. The function’s first line
xi+2. In each case, the expansion will be around the point xi. should be set up as
The interval Δx will be used in each case of i − 1 and i + 1,
and 2Δx will be used in each case of i − 2 and i + 2. The function [dydx, d2ydx2] = diffeq(x,y)
four equations must then be combined in a way to eliminate where x and y are input vectors of length n containing the
the first and second derivatives. Carry enough terms along values of the independent and dependent variables, respec-
in each expansion to evaluate the first term that will be trun- tively, and dydx and dy2dx2 are output vectors of length n
cated to determine the order of the approximation. containing the first- and second-derivative estimates at
21.4  Use Richardson extrapolation to estimate the first de- each value of the independent variable. The function should
rivative of y = cos x at x = π∕4 using step sizes of h1= π∕3 generate a plot of dydx and dy2dx2 versus x. Have your
and h2 = π∕6. Employ centered differences of O(h2) for the M-file return an error message if (a) the input vectors are not
initial estimates. the same length or (b) the values for the independent vari-
21.5  Repeat Prob. 21.4, but for the first derivative of ln x at able are not equally spaced. Test your program with the data
x = 5 using h1 = 2 and h2 = 1. from Prob. 21.11.
21.6  Employ Eq. (21.21) to determine the first derivative 21.11  The following data were collected for the distance
of y = 2x4 − 6x3 − 12x − 8 at x = 0 based on values at traveled versus time for a rocket:
x0 = −0.5, x1 = 1, and x2 = 2. Compare this result with the
true value and with an estimate obtained using a centered t, s 0 25 50 75 100 125
difference approximation based on h = 1. y, km 0 32 58 78  92 100
21.7  Prove that for equispaced data points, Eq. (21.21)
­reduces to Eq. (4.25) at x = x1. Use numerical differentiation to estimate the rocket’s veloc-
21.8  Develop an M-file to apply a Romberg algorithm to ity and acceleration at each time.
­estimate the derivative of a given function.

568 Numerical Differentiation

21.12  A jet fighter’s position on an aircraft carrier’s runway 21.17  The following data were generated from the normal
was timed during landing: distribution:

t, s 0 0.52 1.04 1.75 2.37 3.25 3.83 x −2 −1.5 −1 −0.5 0
x, m 153 185 208 249 261 271 273 f (x) 0.05399 0.12952 0.24197 0.35207 0.39894
x 0.5 1 1.5 2
where x is the distance from the end of the carrier. Estimate f (x) 0.35207 0.24197 0.12952 0.05399
(a) velocity (dx∕dt) and (b) acceleration (dυ∕dt) using nu-
merical differentiation. Use MATLAB to estimate the inflection points of these data.
21.13  Use the following data to find the velocity and accel- 21.18  Use the diff(y) command to develop a MATLAB
eration at t = 10 seconds: M-file function to compute finite-difference approximations
to the first and second derivative at each x value in the table
Time, t, s 0 2 4 6 8 10 12 14 16 below. Use finite-difference approximations that are second-
order correct, O(x2):
Position, x, m 0 0.7 1.8 3.4 5.1 6.3 7.3 8.0 8.4

Use second-order correct (a) centered finite-difference, x 0 1 2 3 4 5 6 7 8 9 10
(b) forward finite-difference, and (c) backward finite- y 1.4 2.1 3.3 4.8 6.8 6.6 8.6 7.5 8.9 10.9 10
difference methods.
21.14  A plane is being tracked by radar, and data are taken 21.19  The objective of this problem is to compare second-
every second in polar coordinates θ and r. order accurate forward, backward, and centered finite-
difference approximations of the first derivative of a function
t, s 200 202 204 206 208 210 to the actual value of the derivative. This will be done for
θ, (rad)
r, m 0.75 0.72 0.70 0.68 0.67 0.66 f (x) = e−2x − x
5120 5370 5560 5800 6030 6240
(a) Use calculus to determine the correct value of the de-
oAacrtdc2eelr0ec6roasrteiroeccnotn)​a →dt ​. osT,fhiunesdevttehhleoevcceietcyntotaernreedxdapcfriecnseislteieor-andtsiifoffonerrgevnievcleoenc(iistnyecυ​→p  o ​ o anlndadr- rivative at x = 2.
coordinates are
(b) Develop an M-file function to evaluate the centered
 υ​→ ​ = ​r˙​   e→ ​r  + r ​θ˙​  ​  e→ ​θ    and  ​ a→ ​ ​= (​r¨ ​ − r θ​ ˙​   2)​e → ​r  + (r ​θ¨ ​ + 2​r˙ ​ ​θ˙​)  ​ e→ ​θ  f­inite-difference approximations, starting with x = 0.5.
21.15  Use regression to estimate the acceleration at each Thus, for the first evaluation, the x values for the cen-
time for the following data with second-, third-, and fourth- tered difference approximation will be x = 2 ± 0.5 or
order polynomials. Plot the results: x = 1.5 and 2.5. Then, decrease in increments of 0.1
down to a minimum value of Δx = 0.01.
t 1 2 3.25 4.5 6 7 8 8.5 9.3 10
υ 10 12 11 14 17 16 12 14 14 10 (c) Repeat part (b) for the second-order forward and back-
ward differences. (Note that these can be done at the
21.16  The normal distribution is defined as same time that the centered difference is computed in
f (x) = _​ √​ _1__2_ _π__ ​  ​ e−x2∕2 the loop.)

(d) Plot the results of (b) and (c) versus x. Include the exact
result on the plot for comparison.

21.20  You have to measure the flow rate of water through a
small pipe. In order to do it, you place a bucket at the pipe’s
outlet and measure the volume in the bucket as a function
of time as tabulated below. Estimate the flow rate at t = 7 s.

Time, s 0 1 5 8
Volume, cm3
0 1 8 16.4

Use MATLAB to determine the inflection points of this 21.21  The velocity υ (m/s) of air flowing past a flat surface
function. is measured at several distances y (m) away from the surface.

Problems 569

Use Newton’s viscosity law to determine the shear stress 21.25  The horizontal surface area As (m2) of a lake at a partic-
τ (N/m2) at the surface (y = 0), ular depth can be computed from volume by differentiation:

τ = μ  ​_dd_uy_ ​  As (z) =  ​_dd_Vz_ ​ (z)
Assume a value of dynamic viscosity μ = 1.8 × 10−5 N · s/m2.
where V = volume (m3) and z = depth (m) as measured from
y, m 0 0.002 0.006 0.012 0.018 0.024 the surface down to the bottom. The ac_​​v​  (egr/amge3),c ocanncebnetrcaotimon-
u, m/s 0 0.287 0.899 1.915 3.048 4.299 of a substance that varies with depth,
puted by integration:

21.22  Fick’s first diffusion law states that c​_​  =  _ ​​∫_0 ​  Z ​∫ ​ _​0​  c _Z ​ (​_Az_)sA_ (_s z_)(_zd)_z_d ​_z​
where Z = the total depth (m). Determine the average con-
Mass flux = −D _ ​dd_xc_  ​ (P21.22) centration based on the following data:

where mass flux = the quantity of mass that passes across z, m 0 4 8 12 16
a unit area per unit time (g/cm2/s), D = a diffusion coef- V, 106 m3 9.8175 5.1051 1.9635 0.3927 0.0000
ficient (cm2/s), c = concentration (g/cm3), and x = distance c, g/m3
(cm). An environmental engineer measures the following 10.2 8.5 7.4 5.2 4.1
con­centration of a pollutant in the pore waters of sediments
underlying a lake (x = 0 at the sediment-water interface and 21.26  Faraday’s law characterizes the voltage drop across
increases downward): an inductor as

x, cm 0 1 3 VL = L ​_ dd_ti  ​
c, 10−6 g/cm3 0.06 0.32 0.6

Use the best numerical differentiation technique available where VL = voltage drop (V), L = inductance (in henrys;
to estimate the derivative at x = 0. Employ this estimate in 1H= 1V · s/A), i = current (A), and t = time (s). Determine
conjunction with Eq. (P21.22) to compute the mass flux of the voltage drop as a function of time from the following
pollutant out of the sediments and into the overlying waters data for an inductance of 4 H.
(D = 1.52 × 10−6 cm2/s). For a lake with 3.6 × 106 m2 of
sediments, how much pollutant would be transported into t 0 0.1 0.2 0.3 0.5 0.7
the lake over a year’s time?
21.23  The following data were collected when a large oil i 0 0.16 0.32 0.56 0.84 2.0
tanker was loading:
21.27  Based on Faraday’s law (Prob. 21.26), use the follow-
t, min 0 10 20 30 45 60 75 ing voltage data to estimate the inductance if a current of 2 A
V, 106 barrels 0.4 0.7 0.77 0.88 1.05 1.17 1.35 is passed through the inductor over 400 milliseconds.
t, ms 0 10 20 40 60 80 120 180 280 400
Calculate the flow rate Q (i.e., dV∕dt) for each time to the V, volts 0 18 29 44 49 46 35 26 15 7
order of h2.
21.24  Fourier’s law is used routinely by architectural engi- 21.28  The rate of cooling of a body (Fig. P21.28) can be
neers to determine heat flow through walls. The following expressed as
temperatures are measured from the surface (x = 0) into a
stone wall: ​_ dd_Tt_ ​ = −k(T − Ta)

x, m 0 0.08 0.16 where T = temperature of the body (°C), Ta = temperature of
T, °C 20.2 17 15 the surrounding medium (°C), and k = a proportionality con-

If the flux at x = 0 is 60 W/m2, compute k. stant (per minute). Thus, this equation (called Newton’s law
of cooling) specifies that the rate of cooling is proportional to

570 Numerical Differentiation

made for air flowing over a flat plate where y = distance
normal to the surface:

T y, cm 0 1 3 5
Ta T, K 900 480 270 210

FIGURE P21.28 If the plate’s dimensions are 200 cm long and 50 cm wide,
and k = 0.028 J/(s · m · K), (a) determine the flux at the sur-
the difference in the temperatures of the body and of the sur- face and (b) the heat transfer in watts. Note that 1 J = 1 W · s.
rounding medium. If a metal ball heated to 80 °C is dropped 21.31  The pressure gradient for laminar flow through a con-
into water that is held constant at Ta = 20 °C, the temperature stant radius tube is given by
of the ball changes, as in
_​ dd_px_ ​ = −​ _8π_μr_Q4_ ​​ 
Time, min 0 5 10 15 20 25 where p = pressure (N/m2), x = distance along the tube’s
T, °C 80 44.5 30.0 24.1 21.7 20.7 centerline (m), μ = dynamic viscosity (N · s/m2), Q = flow
(m3/s), and r = radius (m).
Utilize numerical differentiation to determine dT∕dt at each (a) Determine the pressure drop for a 10-cm length tube
value of time. Plot dT∕dt versus T − Ta and employ linear
regression to evaluate k. for a viscous liquid ( μ = 0.005 N · s/m2, density = ρ =
21.29  The enthalpy of a real gas is a function of pressure as 1 × 103 kg/m3) with a flow of 10 × 10−6 m3/s and the
described below. The data were taken for a real fluid. Esti- following varying radii along its length:
mate the enthalpy of the fluid at 400 K and 50 atm (evaluate
the integral from 0.1 to 50 atm). x, cm 0 2 4 5 6 7 10
r, mm
2 1.35 1.34 1.6 1.58 1.42 2

P ​ ​ _∂∂_VT_  ​   ​P   (b) Compare your result with the pressure drop that would
( ( ) )∫H = ​  ​ ​ V  − T ​ dP have occurred if the tube had a constant radius equal to
​ the average radius.
0
(c) Determine the average Reynolds number for the tube to
T = 350 K V, L T = 450 K verify that flow is truly laminar (Re = ρυD∕μ < 2100
where υ = velocity).
P, atm 220 T = 400 K 282.5
4.1 5.23 21.32  The following data for the specific heat of benzene
0.1 2.2 250 2.7 were generated with an nth-order polynomial. Use numeri-
5 1.35 4.7 1.55 cal differentiation to determine n.
10 1.1 2.5 1.24
20 0.90 1.49 1.03 T, K 300 400 500 600
25 0.68 1.2 0.78 Cp , kJ/(kmol · K)
30 0.61 0.99 0.7 T, K 82.888 112.136 136.933 157.744
40 0.54 0.75 0.62 Cp, kJ/(kmol· K)
45 0.675 700 800 900 1000
50 0.6
175.036 189.273 200.923 210.450

21.30  For fluid flow over a surface, the heat flux to the 21.33  The specific heat at constant pressure cp [J/(kg · K)] of
surface can be computed with Fourier’s law: y = distance an ideal gas is related to enthalpy by
normal to the surface (m). The following measurements are
cp = ​ _dd_Th_  ​
where h = enthalpy (kJ/kg) and T = absolute tempera-
ture (K). The following enthalpies are provided for carbon

Problems 571

dioxide (CO2) at several temperatures. Use these values to Probe
determine the specific heat in J/(kg · K) for each of the tabu-
lated temperatures. Note that the atomic weights of carbon Lid SOD H
and oxygen are 12.011 and 15.9994 g/mol, respectively Water

T, K 750 800 900 1000
h, kJ/kmol
29,629 32,179 37,405 42,769

Sediments

21.34  An nth-order rate law is often used to model chemical FIGURE P21.35
reactions that solely depend on the concentration of a single
reactant:

_​ dd_ct_ ​ = −kcn Based on the following data and H = 0.1 m, use nu-
where c = concentration (mole), t = time (min), n = merical differentiation to generate plots of (a) SOD versus
­reaction order (dimensionless), and k = reaction rate time and (b) SOD versus oxygen concentration:
(min−1 mole1−n). The differential method can be used to t, d 0 0.125 0.25 0.375 0.5 0.625 0.75
evaluate the parameters k and n. This involves applying a o, mg/L 10 7.11 4.59 2.57 1.15 0.33 0.03
logarithmic transform to the rate law to yield,

(  )log​ − ​_ dd_ct_ ​    ​ = log k + n log c

Therefore, if the nth-order rate law holds, a plot of the 21.36  The following relationships can be used to analyze
log(−dc∕dt) versus log c should yield a straight line with uniform beams subject to distributed loads:
a slope of n and an intercept of log k. Use the differential
method and linear regression to determine k and n for the ​_ dd_yx_  ​  = θ(x)    \\\         ​ _dd_θx_  ​  = ​_ M_E_(x_I _)​​   ​ _dd_Mx_ ​  = V(x)  ​​ _dd_Vx_ ​ = − (x)
following data for the conversion of ammonium cyanate to
urea: where x = distance along beam (m), y = deflection (m),
θ(x) = slope (m/m), E = modulus of elasticity (Pa = N/m2),
t, min 0 5 15 30 45 I = moment of inertia (m4), M(x) = moment (N m), V(x) =
c, mole 0.750 0.594 0.420 0.291 0.223 shear (N), and w(x) = distributed load (N/m). For the case of
a l­inearly increasing load (recall Fig. P5.13), the slope can
21.35  The sediment oxygen demand [SOD in units of be computed analytically as
g/(m2  ·  d)] is an important parameter in determining the
­dissolved oxygen content of a natural water. It is mea- θ(x) = ​_ 1_2_0 _E _0_ I_L_ ​ (−5x4 + 6L2x2 − L4) (P21.36)
sured by placing a sediment core in a cylindrical container
(Fig. P21.35). After carefully introducing a layer of distilled, Employ (a) numerical integration to compute the deflec-
oxygenated water above the sediments, the container is cov- tion (in m) and (b) numerical differentiation to compute
ered to prevent gas transfer. A stirrer is used to mix the water the m­ oment (in N m) and shear (in N). Base your nu-
gently, and an oxygen probe tracks how the water’s oxygen merical c­alculations on values of the slope computed with
concentration decreases over time. The SOD can then be Eq. (P21.36) at equally spaced intervals of Δx = 0.125 m
computed as along a 3-m beam. Use the following parameter values in
your computation: E = 200 GPa, I = 0.0003 m4, and w0 =
SOD = −H ​_ dd_ot_ ​  2.5 kN/cm. In addition, the deflections at the ends of the
where H = the depth of water (m), o = oxygen concentration beam are set at y(0) = y(L) = 0. Be careful of units.
(g/m3), and t = time (d). 21.37  You measure the following deflections along the
length of a simply supported uniform beam (see Prob. 21.36)

572 Numerical Differentiation

x, m 0 0.375 0.75 1.125 1.5 21.39  Develop a script to generate the same computations
and plots as in Sec. 21.8, but for the following functions
y, cm 0 −0.2571 −0.9484 −1.9689 −3.2262 (for x = –3 to 3 and y = –3 to 3): (a) f (x, y) = e−(x​​ ​2+​ ​​y ​2​) and
(b) f (x, y) = xe−(x​​​ 2​+y​​  ​2)​ .
x, m 1.875 2.25 2.625 3 21.40  Develop a script to generate the same computa-
tions and plots as in Sec. 21.8, but for the MATLAB peaks
y, cm −4.6414 −6.1503 −7.7051 −9.275 ­function over ranges of both x and y from –3 to 3.
21.41  The velocity (m/s) of an object at time t seconds is
Employ numerical differentiation to compute the slope, the given by
moment (in N m), the shear (in N), and the distributed load
(in N/m). Use the following parameter values in your com- υ = _​ √​ ___12__+t__ __t__2 ​ ​  
putation: E = 200 GPa and I = 0.0003 m4. Using Richardson’s extrapolation, find the acceleration of
21.38  Evaluate ∂f∕∂x, ∂f∕∂y and ∂2f∕(∂x∂y) for the follow- the particle at time t = 5 s using h = 0.5 and 0.25. Employ
ing function at x = y = 1 (a) analytically and (b) numerically the exact solution to compute the true percent relative error
Δx = Δy = 0.0001: of each estimate.

f (x, y) = 3xy + 3x − x3 − 3y3

Part Six

Ordinary Differential
Equations

6.1 OVERVIEW

The fundamental laws of physics, mechanics, electricity, and thermodynamics are usually
based on empirical observations that explain variations in physical properties and states
of systems. Rather than describing the state of physical systems directly, the laws are usu-
ally couched in terms of spatial and temporal changes. These laws define mechanisms
of change. When combined with continuity laws for energy, mass, or momentum, dif-
ferential equations result. Subsequent integration of these differential equations results in
mathematical functions that describe the spatial and temporal state of a system in terms of
energy, mass, or velocity variations. As in Fig. PT6.1, the integration can be implemented
analytically with calculus or numerically with the computer.

The free-falling bungee jumper problem introduced in Chap. 1 is an example of the
derivation of a differential equation from a fundamental law. Recall that Newton’s second

law was used to develop an ODE describ-
ing the rate of change of velocity of a fall-
ing bungee jumper:

​​ _dd_υt_ ​  = ​g −  _​cm_d ​ υ2 (PT6.1)

where g is the gravitational constant, m
is the mass, and cd is a drag coefficient.
Such equations, which are composed of
an unknown function and its derivatives,
are called differential equations. They are
sometimes referred to as rate equations
because they express the rate of change of
a variable as a function of variables and
parameters.

In Eq. (PT6.1), the quantity being
differentiated υ is called the dependent
variable. The quantity with r­espect to
which υ is differentiated t is called the
­independent variable. When the func5ti7o3n

574 PART 6  Ordinary Differential Equations

Physical law F = ma

ODE dυ = g− cd υ2
Solution dt m

Analytical Numerical
(calculus) (computer)

υ= gm tanh gcd t υi+1 = υi + g− cd υ2 ∆t
cd m m

FIGURE PT6.1
The sequence of events in the development and solution of ODEs for engineering and
science. The example shown is for the velocity of the free-falling bungee jumper.

involves one independent variable, the equation is called an ordinary differential equation
(or ODE). This is in contrast to a partial differential equation (or PDE) that involves two
or more independent variables.

Differential equations are also classified as to their order. For example, Eq. (PT6.1) is
called a first-order equation because the highest derivative is a first derivative. A second-
order equation would include a second derivative. For example, the equation describing the
position x of an unforced mass-spring system with damping is the second-order equation:

m _ ​dd_ t2 x_2 ​ + c ​ _dd_xt_ ​ + kx = 0 (PT6.2)

where m is mass, c is a damping coefficient, and k is a spring constant. Similarly, an nth-
order equation would include an nth derivative.

Higher-order differential equations can be reduced to a system of first-order equations.
This is accomplished by defining the first derivative of the dependent variable as a new
variable. For Eq. (PT6.2), this is done by creating a new variable υ as the first derivative
of displacement

υ = ​_ dd_xt_ ​  (PT6.3)

where υ is velocity. This equation can itself be differentiated to yield

 _​dd_υt_ ​  =  ​_dd_ t2 x_2 ​  (PT6.4)

Equations (PT6.3) and (PT6.4) can be substituted into Eq. (PT6.2) to convert it into a first-
order equation:

m ​ _dd_υt_ ​  + cυ + kx = 0 (PT6.5)

6.1 OVERVIEW 575

As a final step, we can express Eqs. (PT6.3) and (PT6.5) as rate equations:

_ ​dd_xt_ ​ = υ (PT6.6)

​_ dd_υt_ ​  = − ​ _mc_  ​  υ − ​ _mk_  ​  x (PT6.7)

Thus, Eqs. (PT6.6) and (PT6.7) are a pair of first-order equations that are equivalent
to the original second-order equation [Eq. (PT6.2)]. Because other nth-order differential
equations can be similarly reduced, this part of our book focuses on the solution of first-
order equations.

A solution of an ordinary differential equation is a specific function of the independent
variable and parameters that satisfies the original differential equation. To illustrate this
concept, let us start with a simple fourth-order polynomial,

y = − 0.5x4 + 4x3 − 10x2 + 8.5x + 1 (PT6.8)

Now, if we differentiate Eq. (PT6.8), we obtain an ODE:

 _​dd_yx_  ​ = −2x3 + 12x2 − 20x + 8.5 (PT6.9)

This equation also describes the behavior of the polynomial, but in a manner different
from Eq. (PT6.8). Rather than explicitly representing the values of y for each value of x,
Eq. (PT6.9) gives the rate of change of y with respect to x (i.e., the slope) at every value
of x. Figure PT6.2 shows both the function and the derivative plotted versus x. Notice how
the zero values of the derivatives correspond to the point at which the original function is
flat—that is, where it has a zero slope. Also, the maximum absolute values of the deriva-
tives are at the ends of the interval where the slopes of the function are greatest.

Although, as just demonstrated, we can determine a differential equation given the
original function, the object here is to determine the original function given the differential
equation. The original function then represents the solution.

Without computers, ODEs are usually solved analytically with calculus. For example,
Eq. (PT6.9) could be multiplied by dx and integrated to yield

ʃy = (−2x 3 + 12x2 − 20x + 8.5) dx (PT6.10)

The right-hand side of this equation is called an indefinite integral because the limits of
integration are unspecified. This is in contrast to the definite integrals discussed previously
in Part Five [compare Eq. (PT6.10) with Eq. (19.5)].

An analytical solution for Eq. (PT6.10) is obtained if the indefinite integral can be eval-
uated exactly in equation form. For this simple case, it is possible to do this with the result:

y = − 0.5x4 + 4x3 − 10x2 + 8.5x + C (PT6.11)

which is identical to the original function with one notable exception. In the course of dif-
ferentiating and then integrating, we lost the constant value of 1 in the original equation and
gained the value C. This C is called a constant of integration. The fact that such an a­ rbitrary
constant appears indicates that the solution is not unique. In fact, it is but one of an infinite

576 PART 6  Ordinary Differential Equations

y
4

3 x
(a)

dy/dx
8

3x

−8 (b)
FIGURE PT6.2
Plots of (a) y versus x and (b) dy∕dx versus x for the function y = −0.5x4 + 4x3 − 10x2 + 8.5x + 1.

number of possible functions (corresponding to an infinite number of possible values of C)
that satisfy the differential equation. For example, Fig. PT6.3 shows six possible functions
that satisfy Eq. (PT6.11).

Therefore, to specify the solution completely, a differential equation is usually ac-
companied by auxiliary conditions. For first-order ODEs, a type of auxiliary condition
called an initial value is required to determine the constant and obtain a unique solution.
For ­example, the original differential equation could be accompanied by the initial condi-
tion that at x = 0, y = 1. These values could be substituted into Eq. (PT6.11) to determine
C = 1. Therefore, the unique solution that satisfies both the differential equation and the
specified initial condition is

y = − 0.5x4 + 4x3 − 10x2 + 8.5x + 1
Thus, we have “pinned down” Eq. (PT6.11) by forcing it to pass through the initial condi-
tion, and in so doing, we have developed a unique solution to the ODE and have come full
circle to the original function [Eq. (PT6.8)].

Initial conditions usually have very tangible interpretations for differential equations
derived from physical problem settings. For example, in the bungee jumper problem, the

6.2 PART ORGANIZATION 577
y

C =3 x
C =2

C =1

C =0
C = −1
C = −2

FIGURE PT6.3
Six possible solutions for the integral of −2x3 + 12x2 − 20x + 8.5. Each conforms to a different
value of the constant of integration C.

initial condition was reflective of the physical fact that at time zero the vertical velocity was
zero. If the bungee jumper had already been in vertical motion at time zero, the solution
would have been modified to account for this initial velocity.

When dealing with an nth-order differential equation, n conditions are required to ob-
tain a unique solution. If all conditions are specified at the same value of the independent
variable (e.g., at x or t = 0), then the problem is called an initial-value problem. This is in
contrast to boundary-value problems where specification of conditions occurs at different
values of the independent variable. Chapters 22 and 23 will focus on initial-value prob-
lems. Boundary-value problems are covered in Chap. 24.
6.2 PART ORGANIZATION
Chapter 22 is devoted to one-step methods for solving initial-value ODEs. As the name
suggests, one-step methods compute a future prediction yi+1, based only on information
at a single point yi and no other previous information. This is in contrast to multistep ap-
proaches that use information from several previous points as the basis for extrapolating
to a new value.

With all but a minor exception, the one-step methods presented in Chap. 22 belong to
what are called Runge-Kutta techniques. Although the chapter might have been organized
around this theoretical notion, we have opted for a more graphical, intuitive approach to
introduce the methods. Thus, we begin the chapter with Euler’s method, which has a very
straightforward graphical interpretation. In addition, because we have already introduced
Euler’s method in Chap. 1, our emphasis here is on quantifying its truncation error and
describing its stability.

578 PART 6  Ordinary Differential Equations

Next, we use visually oriented arguments to develop two improved versions of Euler’s
method—the Heun and the midpoint techniques. After this introduction, we formally de-
velop the concept of Runge-Kutta (or RK) approaches and demonstrate how the forego-
ing techniques are actually first- and second-order RK methods. This is followed by a
discussion of the higher-order RK formulations that are frequently used for engineering
and ­scientific problem solving. In addition, we cover the application of one-step methods
to systems of ODEs. Note that all the applications in Chap. 22 are limited to cases with a
fixed step size.

In Chap. 23, we cover more advanced approaches for solving initial-value problems.
First, we describe adaptive RK methods that automatically adjust the step size in response
to the truncation error of the computation. These methods are especially pertinent as they
are employed by MATLAB to solve ODEs.

Next, we discuss multistep methods. As mentioned above, these algorithms retain in-
formation of previous steps to more effectively capture the trajectory of the solution. They
also yield the truncation error estimates that can be used to implement step-size control. We
describe a simple method—the non-self-starting Heun method—to introduce the essential
features of the multistep approaches.

Finally, the chapter ends with a description of stiff ODEs. These are both individual
and systems of ODEs that have both fast and slow components to their solution. As a con-
sequence, they require special solution approaches. We introduce the idea of an implicit
­solution technique as one commonly used remedy. We also describe MATLAB’s built-in
functions for solving stiff ODEs.

In Chap. 24, we focus on two approaches for obtaining solutions to boundary-value
problems: the shooting and finite-difference methods. Aside from demonstrating how these
techniques are implemented, we illustrate how they handle derivative boundary conditions
and nonlinear ODEs.

22
Initial-Value Problems

CHAPTER OBJECTIVES

The primary objective of this chapter is to introduce you to solving initial-value
problems for ODEs (ordinary differential equations). Specific objectives and topics
covered are
• Understanding the meaning of local and global truncation errors and their

relationship to step size for one-step methods for solving ODEs.
• Knowing how to implement the following Runge-Kutta (RK) methods for

a single ODE:
Euler
Heun
Midpoint
Fourth-order RK

• Knowing how to iterate the corrector of Heun’s method.
• Knowing how to implement the following Runge-Kutta methods for systems

of ODEs:
Euler
Fourth-order RK

YOU’VE GOT A PROBLEM

We started this book with the problem of simulating the velocity of a free-falling
bungee jumper. This problem amounted to formulating and solving an ordinary
differential equation, the topic of this chapter. Now let’s return to this problem
and make it more interesting by computing what happens when the jumper reaches the end
of the bungee cord.
579

580 Initial-Value Problems

To do this, we should recognize that the jumper will experience different forces de-
pending on whether the cord is slack or stretched. If it is slack, the situation is that of free
fall where the only forces are gravity and drag. However, because the jumper can now move
up as well as down, the sign of the drag force must be modified so that it always tends to
retard velocity,

​ _dd_υt_ ​  = g − sign (υ) ​ _cm_d  ​  υ2 (22.1a)

where υ icsoveeflfoicciietynt(m(k/gs/)m, t),isantidmme (iss),mgaisssth(kega)c. cTehleerastiigonnudmuefutnocgtiroanv,i1tysi(g9n.,81remtu/rsn2s),acd−i1s
the drag
or a 1 depending on whether its argument is negative or positive, respectively. Thus, when
the jumper is falling downward (positive velocity, sign = 1), the drag force will be nega-
tive and hence will act to reduce velocity. In contrast, when the jumper is moving upward
­(negative velocity, sign = −1), the drag force will be positive so that it again reduces the
velocity.
Once the cord begins to stretch, it obviously exerts an upward force on the jumper. As
done previously in Chap. 8, Hooke’s law can be used as a first approximation of this force.
In addition, a dampening force should also be included to account for frictional effects as
the cord stretches and contracts. These factors can be incorporated along with gravity and
drag into a second force balance that applies when the cord is stretched. The result is the
following differential equation:

​_ dd_υt_ ​  = g − sign(υ)  _​cm_d ​ υ 2 − _ ​mk_  ​ (x − L) − ​ _mγ_  ​ υ (22.1b)

where k is the cord’s spring constant (N/m), x is vertical distance measured downward
from the bungee jump platform (m), L is the length of the unstretched cord (m), and γ is a
dampening coefficient (N · s/m).
Because Eq. (22.1b) only holds when the cord is stretched (x > L), the spring force will
always be negative. That is, it will always act to pull the jumper back up. The dampening
force increases in magnitude as the jumper’s velocity increases and always acts to slow the
jumper down.
If we want to simulate the jumper’s velocity, we would initially solve Eq. (22.1a)
until the cord was fully extended. Then, we could switch to Eq. (22.1b) for periods that the
cord is stretched. Although this is fairly straightforward, it means that knowledge of the
jumper’s position is required. This can be done by formulating another differential equa-
tion for distance:

​_ dd_xt_ ​ = υ (22.2)

Thus, solving for the bungee jumper’s velocity amounts to solving two ordinary dif-
ferential equations where one of the equations takes different forms depending on the value

1 Some computer languages represent the signum function as sgn(x) . As represented here, MATLAB uses the
nomenclature sign(x).

22.2 EULER’S METHOD 581

of one of the dependent variables. Chapters 22 and 23 explore methods for solving this and
similar problems involving ODEs.

22.1 OVERVIEW

This chapter is devoted to solving ordinary differential equations of the form

​ _dd_yt_ ​ =  f (t, y) (22.3)

In Chap. 1, we developed a numerical method to solve such an equation for the velocity of
the free-falling bungee jumper. Recall that the method was of the general form

New value = old value + slope × step size

or, in mathematical terms,

yi+1 = yi + ϕh (22.4)

where the slope ϕ is called an increment function. According to this equation, the slope
estimate of ϕ is used to extrapolate from an old value yi to a new value yi+1 over a distance
h. This formula can be applied step by step to trace out the trajectory of the solution into
the future. Such approaches are called one-step methods because the value of the increment
function is based on information at a single point i. They are also referred to as Runge-
Kutta methods after the two applied mathematicians who first discussed them in the early
1900s. Another class of methods called multistep methods use information from several
previous points as the basis for extrapolating to a new value. We will describe multistep
methods briefly in Chap. 23.

All one-step methods can be expressed in the general form of Eq. (22.4), with the only
difference being the manner in which the slope is estimated. The simplest approach is to
use the differential equation to estimate the slope in the form of the first derivative at ti. In
other words, the slope at the beginning of the interval is taken as an approximation of the
average slope over the whole interval. This approach, called Euler’s method, is discussed
next. This is followed by other one-step methods that employ alternative slope estimates
that result in more accurate predictions.

22.2 EULER’S METHOD

The first derivative provides a direct estimate of the slope at ti (Fig. 22.1):
ϕ =  f (ti, yi )

where  f (ti , yi ) is the differential equation evaluated at ti and yi. This estimate can be sub-
stituted into Eq. (22.1):

yi+1 = yi + f (ti , yi ) h (22.5)

This formula is referred to as Euler’s method (or the Euler-Cauchy or point-slope method).
A new value of y is predicted using the slope (equal to the first derivative at the original
value of t) to extrapolate linearly over the step size h (Fig. 22.1).

582 Initial-Value Problems
y

Predicted error
True

h t
ti ti+1
FIGURE 22.1
Euler’s method.

EXAMPLE 22.1 Euler’s Method
Problem Statement.  Use Euler’s method to integrate y′ = 4e0.8t − 0.5y from t = 0 to 4
with a step size of 1. The initial condition at t = 0 is y = 2. Note that the exact solution can
be determined analytically as

y =  ​_14_.3_  ​  (e0.8t − e−0.5t ) + 2e−0.5t

Solution.  Equation (22.5) can be used to implement Euler’s method:
y(1) = y(0) +  f (0, 2)(1)

where y(0) = 2 and the slope estimate at t = 0 is
f (0, 2) = 4e0 − 0.5(2) = 3

Therefore,
y(1) = 2 + 3(1) = 5

The true solution at t = 1 is

y =  ​_14_.3_  ​  (e0.8(1) − )e−0.5(1) + 2e−0.5(1) = 6.19463

Thus, the percent relative error is

| |εt = ​  ​ _6_.16_9_.14_9_64_36_−3__ ​5_   ​ × 100% = 19.28%

For the second step:

y(2) = y(1) +  f (1, 5)(1)
= 5 + [4e0.8(1) − 0.5(5)] (1) = 11.40216

22.2 EULER’S METHOD 583

TABLE 22.1   Comparison of true and numerical values of the integral
of y′ = 4e0.8t − 0.5y, with the initial condition that y = 2 at
t = 0. The numerical values were computed using Euler’s
method with a step size of 1.

t ytrue yEuler |​​εt|​ (%)

0 2.00000 2.00000

1 6.19463 5.00000 19.28

2 14.84392 11.40216 23.19

3 33.67717 25.51321 24.24

4 75.33896 56.84931 24.54

y

60
40 True solution
20 Euler solution
00 1 2 3 4 t

FIGURE 22.2
Comparison of the true solution with a numerical solution using Euler’s method for the integral
of y′ = 4e0.8t − 0.5y from t = 0 to 4 with a step size of 1.0. The initial condition at t = 0 is y = 2.

The true solution at t = 2.0 is 14.84392 and, therefore, the true percent relative error is
23.19%. The computation is repeated, and the results compiled in Table 22.1 and Fig. 22.2.
Note that although the computation captures the general trend of the true solution, the
error is considerable. As discussed in the next section, this error can be reduced by using
a smaller step size.

22.2.1  Error Analysis for Euler’s Method
The numerical solution of ODEs involves two types of error (recall Chap. 4):
1. Truncation, or discretization, errors caused by the nature of the techniques employed

to approximate values of y.
2. Roundoff errors caused by the limited numbers of significant digits that can be retained

by a computer.
The truncation errors are composed of two parts. The first is a local truncation error
that results from an application of the method in question over a single step. The second
is a propagated truncation error that results from the approximations produced during the


Click to View FlipBook Version