# Solutions Manual

to accompany

Applied Numerical Methods
With MATLAB for Engineers and Scientists

Steven C. Chapra
Tufts University

CHAPTER 1
1.1 You are given the following differential equation with the initial condition, v(t = 0) = 0,

c
dv
= g − d v2
dt
m
Multiply both sides by m/cd

m dv m
=
g − v2
c d dt c d
Define a = mg / c d

m dv
= a2 − v2
c d dt
Integrate by separation of variables,

dv

cd

∫ a 2 − v 2 = ∫ m dt
A table of integrals can be consulted to find that

∫a

2

dx
x
1
= tanh −1
2
a
a
−x

Therefore, the integration yields
1
v c
tanh −1 = d t + C
a
a m

If v = 0 at t = 0, then because tanh–1(0) = 0, the constant of integration C = 0 and the solution
is
1
v c
tanh −1 = d t
a
a m
This result can then be rearranged to yield

v=

⎛ gc d ⎞
gm
tanh ⎜
t⎟
⎜ m ⎟
cd

1.2 This is a transient computation. For the period from ending June 1:

1

Balance = Previous Balance + Deposits – Withdrawals
Balance = 1512.33 + 220.13 – 327.26 = 1405.20
The balances for the remainder of the periods can be computed in a similar fashion as
tabulated below:
Date

Deposit

Withdrawal

1-May

Balance
\$ 1512.33

\$ 220.13

\$ 327.26

1-Jun

\$ 1405.20
\$ 216.80

\$ 378.61

1-Jul

\$ 1243.39
\$ 350.25

\$ 106.80

1-Aug

\$ 1586.84
\$ 127.31

\$ 450.61

1-Sep

\$ 1363.54

1.3 At t = 12 s, the analytical solution is 50.6175 (Example 1.1). The numerical results are:
step
2
1
0.5

v(12)
51.6008
51.2008
50.9259

absolute
relative error
1.94%
1.15%
0.61%

where the relative error is calculated with

absolute relative error =

analytical − numerical
× 100%
analytical

The error versus step size can be plotted as
2.0%

1.0%
relative error
0.0%
0

0.5

1

1.5

2

Thus, halving the step size approximately halves the error.
1.4 (a) The force balance is

2

2.5

dv
c'
=g− v
dt
m
Applying Laplace transforms,
sV − v(0) =

g c'
− V
s m

Solve for
V=

g
v ( 0)
+
s ( s + c ' / m) s + c ' / m

(1)

The first term to the right of the equal sign can be evaluated by a partial fraction expansion,

g
A
B
= +
s ( s + c ' / m) s s + c ' / m

(2)

g
A( s + c' / m) + Bs
=
s ( s + c ' / m)
s ( s + c ' / m)

Equating like terms in the numerators yields
A+ B=0
g=

c'
A
m

Therefore,
A=

mg
c'

B=−

mg
c'

These results can be substituted into Eq. (2), and the result can be substituted back into Eq.
(1) to give
V=

mg / c'
mg / c'
v ( 0)

+
s
s + c' / m s + c' / m

Applying inverse Laplace transforms yields
v=

mg mg −( c '/ m )t

e
+ v ( 0) e − ( c ' / m ) t
c'
c'

or

3

62 68.81 − (19.0102 dv/dt 9.8700 48.0179 50.4869 1.9294 2.2087 3.6200 32.5 ⎡ ⎤ v(4) = 19.81 − (0) 2 = 19.8962 44. 1 ⎣ ⎦ The computation can be continued and the results summarized and plotted as: t 0 2 4 6 8 10 12 v 0 19.5 ⎤ ⎡ v(2) = 0 + ⎢9.v = v(0)e −( c '/ m )t + ( mg 1 − e −( c '/ m )t c' ) where the first term to the right of the equal sign is the general solution and the second is the particular solution. v(0) = 0.1 ⎥⎦ ⎣ 12. 4 .62 + ⎢9.5739 0.6304 60 40 20 0 0 4 8 12 Note that the analytical solution is included on the plot for comparison.9961 0.2087 68 . For our case. so the final solution is v= ( mg 1 − e −( c '/ m )t c' ) (b) The numerical solution can be implemented as 12.0374 39.81 6.62)⎥ 2 = 6.

1 = 9.33333] 0.8)0.21841 5 .8584 8.8000 9.333333 0.5 0.0392 8.5) = 0 + ⎢3 sin 2 (0) − 0.5 = −0.8 0.0000 -1.5 = 0 + [0 − 0.3 0. the slope is approximately equal to the negative of the decay rate.2 2.1 2 0 0.5 (a) The first two steps are c(0.5076 8.6040 9.1) = 10 − 0.0000 9.6 0.8447 -1.1.1707 dc/dt -2.2(9.8824 -1.3 2.604 Bq/L The process can be continued to yield t 0 0.4 0.7015 -1.4119 9.6675 -1.8 Bq/L c(0.4 2.7363 -1.1 = 9.16667 + sin 2 (0.16667 1200 ⎥⎦ ⎣ 1200 [ ] y (1) = −0.5) − 0.1 0.6341 (b) The results when plotted on a semi-log plot yields a straight line 2. 1.7717 -1.6813 8.8 1 The slope of this line can be estimated as ln(8.8 − 0.9600 -1.1707) − ln(10) = −0.7 0.2(10)0.9208 -1.20203 1 Thus.2) = 9.4 0.3375 8.5 = −0.9 1 c 10.2 0.6 The first two steps yield 400 ⎤ ⎡ 400 y (0.8078 -1.2237 9.2 0.6 0.

18666 t 0.297103 0.5 2 2.4 0 0 1 2 3 4 -0.5 1 1.5 ⎛ 14 ⎞ −⎜ ⎟ t 9.8 y 0.4 ⎛c⎞ −⎜ ⎟ t gm 1.5e −0.33 sec 1.5 − 52.5 4 4.87 m / s jumper #1: v(t ) = 12.14533 = ln e −0.18666 t t = 10.558955 0.402245 0.5 ⎞ −⎜ ⎟ 10 9.8(75) jumper #2: 44.8 Qin = Qout Q1 = Q2 + Q3 6 5 .727927 0.87 = (1 − e ⎝ 75 ⎠ ) 14 44.299793 0.8(68.5 5 y 0 -0.416811 0.03104 0.16667 -0.14533 = e −0.7 v(t ) = (1 − e ⎝ m ⎠ ) c ⎛ 12.21841 -0.87 = 52.1) (1 − e ⎝ 68.5 3 3.18666 t ln 0.1 ⎠ ) = 44.The process can be continued to give t 0 0.546537 0.

5 + IW = 60 ∑ % body water = 100 7.5 + 1.5 + 55 + TW = 100 % Transcellular water of body water = 2.30 = 20 + vA3 10 = 5 A3 A3 = 2 m2 1.5 + 1.9 ∑ M in − ∑ M out = 0 [1000 + 1200 + MP + 50] − [400 + 200 + 1400 + 200 + 350] = 0 Metabolic production = 300 grams 1.5 + 4.5 + 12 + 4.5 % 7 .5 + 20 + 7.5 + 4.5 + IW = 60 % Intracellular water body weight = 33 % 4.5 + 12 + 4.5 + 7.10 ∑ % body weight = 60 4.

1 >> >> >> >> q0 = 10.2 2.6) 8 .*cos(sqrt(1/(L*C)-(R/(2*L))^2)*t). plot(t.^2/2). q = q0*exp(-R*t/(2*L)).. f = 1/sqrt(2*pi)*exp(-z.CHAPTER 2 2.3 (a) >> t = linspace(5. t = linspace(0. plot(z.C = 1e-4.L = 5.5).3).30.R = 50.f) xlabel('z') ylabel('frequency') 2.q) >> >> >> >> >> z = linspace(-3.

^2 U = 0.5000 0. >> x = [0.0e+003 * 0.010].2500 1.5*k. plot(TC.4 (a) >> v = -2:.5289e-8*TC.3.6000 0.0800 >> U = ./x k = 1.5622e-5*TC+0.6:93.013 0.0720 0.020 0.*x.0000 (b) >> r = 6:-1:0 r = 6 5 4 3 2 1 0 2.7) x = -3 -2 -1 0 3 2.1200 >> max(U) ans = 0.0000 -1.5 >> F = [10 12 15 9 12 16].6000 1.0675 0.2500 -0.t = 5 10 15 20 25 30 1 2 (b) >> x = linspace(-3. >> k = F.2.9000 1.0000 1.1200 2.99987.75:1 v = -2.010 0. rho = 5.009 0.rho) 9 .6667 0.5016e-6*TC.0450 0.012 0. TC = 5/9*(TF-32).7692 0.^3-8.0650 0.^2+6.6 >> >> >> >> TF = 32:3.

tf = 0:70.0150 0.0000 15.5] A = 0.3).0000 8.2)).0002 8 1.0200 0.'s'.'--') 10 .0350 0.0007 0.034*tf).4))).c.02 .022 . plot(t.^(2/3) U = 0.4).0001 10 2.3 1.5167 1.5000 3.0002 0.0001 0.035 . cf = 4.0003 10.cf.2.8 >> >> >> >> >> t = 10:10:60.0 0. ./(A(:.0007 24 3.001 20 1.5809 1.015 .0000 1.0220 0.1).0300 0.3624 0.0003 15 2.6094 2.6 1.7 >> A = [.tf.84*exp(-0.5].0000 2.*A(:.3)+2*A(:.5.0000 2.03 ./A(:. .6 1.5000 >> U = sqrt(A(:.0010 0. .4 2.0000 20.0000 24.*(A(:.0000 1. .1971 2. c = [3.

cf.4 2. vf = 0:100.':') 2.'d'.tf.5].9842.034*tf). c = [3.Ff.'--') >> >> >> >> >> v = 10:10:80.10 11 .6 1. tf = 0:70.2.6 1. F = [25 70 380 550 610 1220 830 1450].^1. semilogy(t.3 1.0 0.F.c. plot(v. cf = 4. Ff = 0.'s'.2741*vf.vf.84*exp(-0.9 >> >> >> >> >> t = 10:10:60.

2741*vf.9842. plot(x.2. F = [25 70 380 550 610 1220 830 1450].^6/factorial(6).11 >> >> >> >> >> v = 10:10:80.x.F.':') >> >> >> >> x = linspace(0. vf = 0:100.^1.c.vf. cf = 1-x.^2/2+x.^4/factorial(4)-x.12 12 .cf.'--') 2.Ff.3*pi/2). c = cos(x). Ff = 0. loglog(v.'d'.

13 .

CHAPTER 3 3. fprintf('order true value approximation error\n').er).8) order 1 2 3 4 5 6 7 8 true value 0.0007812500 0.1 The M-file can be written as function sincomp(x. fprintf('\n year future worth\n').43 185093. fprintf('%3d %14.9375000000 1.9974949869 0.00 108000.^nn.00000310 -0. >> futureworth(100000.tru.9974949866 0.5.5000000000 0.08.9974949866 0. break.F]. er = (tru .9974949866 0.00000000 3.10f %12. >> sincomp(1. fprintf('%5d %14.90 146932.9974949866 0.1) * x^(2*i-1) / factorial(2*i-1).8) year 0 1 2 3 4 5 6 7 8 future worth 100000.0.y). tru = sin(x). end ser = ser + (-1)^(i .8f\n'. n) nn = 0:n. i.20 136048. end This function can be used to evaluate the test case.81 158687.n) i = 1.9974949866 0.01040643 -0.10f %14.00021414 0. y = [nn. while (1) if i > n.9974971226 0. ser = 0.2f\n'.9973911830 0.00000003 0.9974949866 approximation 1.43 171382.37669564 6.9974949866 error -50.2 The M-file can be written as function futureworth(P.02 14 . fprintf('\n').9974949557 0.00 116640.9974949866 0.01456523 -0.32945162 0.00 125971. i = i + 1.ser.ser) / tru * 100.i. This function can be used to evaluate the test case. F = P*(1+i).9974949866 0.

34 13483.^nn.22.2.1. >> avgtemp(5.2f\n'.4 The M-file can be written as function Tavg = avgtemp(Tmean.59) ans = -10.33.076.6. i. 15 . vol = v1 + v2.y).00 19519. d) if d < R vol = pi * d ^ 3 / 3.8418 >> avgtemp(23. elseif d <= 3 * R v1 = pi * R ^ 3 / 3. A = P*i*(1+i).0398 3.A]. tend) omega = 2*pi/365.^nn-1). >> annualpayment(35000.26 10473.3.3 The M-file can be written as function annualpayment(P. Tpeak.R). This function can be used to evaluate the test case..0./((1+i). fprintf('\n year annualpayment\n').76 3. else error('overtop') end This function can be used to evaluate the test cases.5 The M-file can be written as function vol = tankvol(R. Tavg = mean(Te). tstart. Te = Tmean + (Tpeak-Tmean)*cos(omega*(t-205)).180. v2 = pi * R ^ 2 * (d . y = [nn. This function can be used to evaluate the test cases. n) nn = 1:n.30 8673. t = tstart:tend. fprintf('%5d %14.1.242) ans = 33.5) year 1 2 3 4 5 annualpayment 37660.

>> [r. y) r = sqrt(x .6 The M-file can be written as function [r. else th = pi.4142 th = 90 The remaining cases are 16 .3.3. For example.5) ans = 0.1) r = 1. end else if y > 0 th = pi / 2. elseif y < 0 th = -pi / 2. This function can be used to evaluate the test cases. end end th = th * 180 / pi.th]=polar(1.1) ??? Error using ==> tankvol overtop 3. for the first case.^ 2 + y .1.^ 2).1309 >> tankvol(1.3304 >> tankvol(1. elseif y < 0 th = atan(y / x) .6755 >> tankvol(1.0) ans = 7. if x < 0 if y > 0 th = atan(y / x) + pi.pi. th] = polar(x. else th = 0.>> tankvol(1.2) ans = 1.0.

y) r = sqrt(x .0000 17 .00 0.0000 -135.00 -1.4f %10.00 0.0000 -90.00 0. end end th(i) = th(i) * 180 / pi.0000 1.0000 0.^ 2).y) x 1.00 -1.0000 1. else th(i) = pi.00 0. elseif y(i) < 0 th(i) = -pi / 2.x 1 1 1 −1 −1 −1 0 0 0 y 1 −1 0 1 −1 0 1 −1 0 θ r 1. else th(i) = 0.00 1.00 0.4142 1.4142 1.00 -1.00 1.0000 180.0000 1.00 -1.00 radius 1.0000 90 −90 0 135 −135 180 90 −90 0 3.0000 90.4142 1. fprintf('\n x y radius fprintf('%8.ou).r.0000 135.^ 2 + y . end ou = [x.0000 -90.4142 1.th].pi.2f %10. for i = 1:n if x(i) < 0 if y(i) > 0 th(i) = atan(y(i) / x(i)) + pi.0000 0.00 -1.0000 0.00 1. This function can be used to evaluate the test cases and display the results in tabular form. n = length(x).00 1. >> polar2(x.00 0. angle\n').2f %8.4142 1.0000 1.7 The M-file can be written as function polar2(x.0000 0.00 y 1.4142 1.0000 1.4142 1.4142 1.y.4f\n'.0000 angle 90.00 -1. end else if y(i) > 0 th(i) = pi / 2. elseif y(i) < 0 th(i) = atan(y(i) / x(i)) .0000 1.

6094 2.00 8.4f\n'.1971 .2f %10.3624 0.00 1.030 0. This function can be run to create the table.A').0007 0.3)+2*A(:.2f %10.022 S 0.00 24.50 18 U 0./A(:. fprintf('%8.5167 1.9 The M-file can be written as function Manning(A) A(:.015 0.4))).3f %8./(A(:. >> Manning(A) n 0.00 20.0002 0.1).00 2.50 3.4f %10.*(A(:.020 0.5) = sqrt(A(:.3.^(2/3).3).*A(:. elseif score >= 60 grade = 'D'. elseif score >= 80 grade = 'B'.2)).00 15.0001 0.00 1.0003 B 10.5809 1. elseif score >= 70 grade = 'C'. end This function can be tested with a few cases. else grade = 'F'. >> lettergrade(95) ans = A >> lettergrade(45) ans = F >> lettergrade(80) ans = B 3.035 0.0010 0.00 H 2.8 The M-file can be written as function grade = lettergrade(score) if score >= 90 grade = 'A'. fprintf('\n n S B H U\n').4).

/r)-(r-h).^n.7.*sqrt(2*r*h-h.*xx(i)^3 .4)-sing(xx(i).uy) function s = sing(xxx.238.n) if xxx > a s = (xxx . uy(i) = uy(i) + 57/6. V) This function can be run to the plot.5. end This function can be run to create the plot.3) + 75*sing(xx(i).5) 19 . plot(h. uy(i) = uy(i) + 15/6.10 The M-file can be written as function beam(x) xx = linspace(0. for i=1:n uy(i) = -5/6.2*r). >> cylinder(2.11 The M-file can be written as function cylinder(r.x).*sing(xx(i).4)). n=length(xx).^2))*L.0.25.8. else s=0. >> beam(10) 3.*xx(i). end plot(xx.2). L) h = linspace(0.a).*(sing(xx(i).3.a. V = (r^2*acos((r-h).

20 .

048.521 2 (1 − 0.004 f ' (0.9% 2. the error is still considerable.352.1 The true value can be computed as f ' (1.577 2 ) 2 Using 3-digits with chopping chopping 6 x = 6(0.577 chopping x 2 = 0.35 = 0.46 = = 216.8% 2.332929 ⎯⎯ ⎯⎯→ 0.577) = 3.462 3.9987 1 − 3x 2 = 0.577 chopping x 2 = 0.577) = 3.250 2 (1 − 0.37) 2 + 8(1.043053 21 . the correct result can be calculated as y = 1.048.0013 f ' (0.462 ⎯⎯ x = 0.37 3 − 7(1.996 1 − 3x 2 = 0.462 = = 2.996) 0.22) = 6(0.911 (1 − 3 × 0.577) = 3.46 3.37) − 0. The problem stems primarily from the fact that we are subtracting two nearly equal numbers in the denominator. Such subtractive cancellation is worsened by the fact that the denominator is squared.911 Using 4-digits with chopping chopping ⎯⎯→ 3.332929 ⎯⎯ ⎯⎯→ 0.462 ⎯⎯ ⎯⎯→ 3.0013 2 This represents a percent relative error of εt = 2.577) = 3.352.332 3x 2 = 0.521 = 12.004 2 This represents a percent relative error of εt = 2.911 Although using more significant digits improves the estimate. 4.46 x = 0.3329 2 3x = 0.352.250 = 90.9987) 0.911 − 2.911 − 216.2 First.577) = 2.CHAPTER 4 4.462 6 x = 6(0.352.352.

373 –7(1.043053 − 0.37 + 8)1. 4.35 y = (−5.35 –0.12 This represents an error of εt = 0.47 = 9. 22 . f (0) = f ' (0) = f " (0) = f ( 3) (0) = 1 Substituting these values yields.2% 0.37) → → → 2.37 − 7)1.7% 0. the second form is superior because it tends to minimize round-off error.35 y = 0.397 − 0.12 = 178.0 10.87) 10.043053 Hence.571353 –7(1.96 → → → 2. the Taylor series is f ( x) = f (0) + f ' (0) x + f " ( 0) 2 f ( 3 ) ( 0) 3 x + x + ⋅⋅⋅ 2! 3! For the exponential function. Thus.(a) Using 3-digits with chopping 1.9 – 0.37 − 0.37 + 8)1.37 − 0.043053 (b) Using 3-digits with chopping y = ((1. xi = 0 and h = x.35 y = 0.35 y = (−7.29 × 1.63 × 1.043053 − 0.37 − 0.71 + 8)1.37 − 0.3 (a) For this case.37)2 8(1.047 This represents an error of εt = 0.57 –13.35 y = 0.

778801 − 0.367879 First-order approximation: f (1) = 0.358978 100% = 2.367879 Third-order approximation: f (1) = 0.1947 100% = 47.5×102–2 = 0.778801 εt = 0.778801 100% = 111.707107… zero-order: 23 .75.7% 0.367879 4.778801(0.367879 − 0.75) + 0.778801(0.4 Use εs = 0.5%.1947 εt = 0.75 2 = 0.778801 εt = 0.367879 − 0.367879 Second-order approximation: f (1) = 0.75 2 0.367879 − 0.413738 100% = 12. (b) The true value is e–1 = 0.413738 2 0.42% 0.778801 εt = 0.367879 and the step size is h = xi+1 – xi = 1 – 0.778801(0. The true value = cos(π/4) = 0.75) = 0.25 = 0.367879 − 0.25 = 0.75 3 − 0.778801 = 0.778801 − 0.75) + 0.1% 0.f ( x) = 1 + x + 1 2 1 3 x + x + ⋅⋅⋅ 2! 3! which is the Maclaurin series expansion.5% 0. The complete Taylor series to the third-order term is f ( xi +1 ) = e − xi − e − xi h + e − xi h2 h3 − e − xi 2 3! Zero-order approximation: f (1) = e −0.358978 2 6 0.778801 − 0.

5%.707107 − 0. 4.5 Use εs = 0.707107 − 0. The true value = sin(π/4) = 0.707429 third-order: (π / 4) 6 ⎛π ⎞ = 0.707107 − 1 100% = 41.⎛π ⎞ cos⎜ ⎟ ≅ 1 ⎝4⎠ εt = 0.707103 cos⎜ ⎟ ≅ 0.707429 − 0.707429 24 ⎝4⎠ εt = 0.691575 + = 0.707103 100% = 0.5%.19% 0.707107… zero-order: 24 .5×102–2 = 0.707107 εa = 0.707107 εa = 0.691575 − 1 100% = 44.6% 0. we can terminate the computation.707103 − 0.707107 − 0.691575 2 ⎝4⎠ εt = 0.691575 100% = 2.691575 100% = 2.707429 − 720 ⎝4⎠ εt = 0.707103 Because εa < 0.046% 0.707429 100% = 0.0005% 0.691575 second-order: (π / 4) 4 ⎛π ⎞ cos⎜ ⎟ ≅ 0.456% 0.42% 0.707429 100% = 0.707107 εa = 0.707107 first-order: (π / 4) 2 ⎛π ⎞ cos⎜ ⎟ ≅ 1 − = 0.24% 0.

1% 0.704653 100% = 0.352% 0.707143 Because εa < 0.6 The true value is f(2) = 102.707107 εa = 0.347% 0.785398 100% = 11.704653 second-order: (π / 4) 5 ⎛π ⎞ = 0.707143 sin ⎜ ⎟ ≅ 0. we can terminate the computation.707107 − 0.707107 εa = 0.704653 − 0.704653 sin ⎜ ⎟ ≅ 0. 4.8% 102 first order: f ' (1) = 75(1) 2 − 12(1) + 7 = 70 f ( 2) = −62 + 70(1) = 8 εt = 102 − 8 100% = 92.46% 0. zero order: f ( 2) = f (1) = −62 εt = 102 − (−62) 100% = 160.707143 − 0.785398 ⎝4⎠ εt = 0.707143 100% = 0.704653 + 120 ⎝4⎠ εt = 0.1% 102 second order: 25 .707107 first-order: (π / 4) 3 ⎛π ⎞ = 0.704653 100% = 0.707107 − 0.707107 − 0.0051% 0.5%.785398 100% = 11.785398 − 6 ⎝4⎠ εt = 0.⎛π ⎞ sin ⎜ ⎟ ≅ 0.

66667 100% = 142.0% 102 Because we are working with a third-order polynomial.098612 − 0 100% = 100% 1.098612 fourth order: 26 . This is due to the fact that cubics have zero fourth and higher derivatives.098612 − 0 100% = 100% 1.098612 second order: f " ( x) = − 1 x2 f (3) = 2 − 1 f " (1) = −1 22 =0 2 third order: f ( 3) ( x) = 2 x3 f (3) = 0 + 2 f " (1) = 2 23 = 2.098612 zero order: εt = f (3) = f (1) = 0 1.f " (1) = 150(1) − 12 = 138 138 2 (1) = 77 2 f ( 2) = 8 + 102 − 77 100% = 24. 4.098612 first order: f ' ( x) = 1 x f ' (1) = 1 f (3) = 0 + 1(2) = 2 εt = 1.05% 1.098612 − 2.7 The true value is ln(3) = 1.66667 6 εt = 1.098612 εt = 1. the error is zero.098612 − 2 100% = 82.7% 1.5% 102 εt = third order: f ( 3) (1) = 150 f ( 2) = 77 + 150 3 (1) = 102 6 εt = 102 − 102 100% = 0.

8 The first derivative of the function at x = 2 can be evaluated as f ' (2) = 75(2) 2 − 12(2) + 7 = 283 The points needed to form the finite divided differences can be computed as xi–1 = 1. 4. A smaller step size is required to obtain convergence.5 Both the forward and backward differences should have errors approximately equal to Et ≈ f " ( xi ) h 2 The second derivative can be evaluated as f " (2) = 150(2) − 12 = 288 Therefore.25 E t = 283 − 248.5625 0.4375 centered: f ' ( 2) = 182. 27 .85938 = 248.5625 = −1.66666 − 6 f ( 4) (1) = −6 24 = −1.25 E t = 283 − 320.4% 1.5625 = 34.0 xi+1 = 2.25 f(xi–1) = 39.5625 = 37.5625 backward: f ' ( 2) = 102 − 39.85938 = 284. Et ≈ 288 0.5625 E t = 283 − 284.1406 forward: f ' ( 2) = 182.25 = 36 2 which is similar in magnitude to the computed errors.f ( 4) ( x) = − 6 x4 f (3) = 2.098612 − (−1.33333 24 εt = 1.85938 f(xi) = 102 f(xi+1) = 182.1406 − 39.5625 0 .1406 − 102 = 320.75 xi = 2.33333) 100% = 221.5625 0.098612 The series is diverging.

f " ( 2) = 131.2.5%.11111… zero-order: 1 ≅1 1 − 0.1 = 1 .115 = 288 (0.10 Use εs = 0. This occurs because the underlying function is a cubic equation that has zero fourth and higher derivatives. 4.765 − 2(102) + 75.5×102–2 = 0.96 = 288 (0.1 1 − 0.11111 − 1 100% = 10% 1.1) 2 Both are exact because the errors are a function of fourth and higher derivatives which are zero for a 3rd-order polynomial.11111 first-order: 1 ≅ 1 + 0 .2) 2 For h = 0.For the central difference.1 εt = 1.1) = 1.56 − 2(102) + 50. f " ( 2) = 164.1.1 28 .9 The second derivative of the function at x = 2 can be evaluated as f ' (2) = 150( 2) − 12 = 288 For h = 0. The true value = 1/(1 – 0.5625 6 which is exact. 4.25) 2 = −1. Et ≈ − f ( 3) ( xi ) 2 h 6 The third derivative of the function is 150 and Et ≈ − 150 (0.

11111 − 1.1 + 0.0909% 1 .11111 − 1.111 − 1.1 100% = 1% 1.01 + 0.1% 1.5% so the computation can be terminated.001 = 1.9009% 1.111 The approximate error has fallen below 0.1 − 1 100% = 9. 4.11111 εa = 1.111 100% = 0.11 100% = 0.εt = 1.1 + 0.090009% 1.1 εt = 1.11111 − 1.11 100% = 0.1 εt = 1.11111 εa = 1.11 1 − 0.11 third-order: 1 ≅ 1 + 0.11 Here are the function and its derivatives f ( x) = x − 1 − f ' ( x) = 1 − f " ( x) = f ( 3) f ( 4) 1 sin x 2 1 cos x 2 1 sin x 2 ( x) = 1 cos x 2 1 ( x) = − sin x 2 29 .1 100% = 0.1 second-order: 1 ≅ 1 + 0.01% 1.11 − 1.11111 εa = 1 .111 1 − 0.01 = 1.

5*sin(x) 1st Order Taylor Series Error 3 0. f2.005 0. e1=abs(f-f1). we see that the answer is the 4th Order Taylor Series expansion. f4=x-1.5. subplot(2.e2).title('4th Order Taylor Series Error').5+0. and f4.6 1 0. plot(x.2.5*pi).5+0.title('1st Order Taylor Series Error').Using the Taylor Series expansion.01 0. %Calculates the absolute value of the difference/error subplot(2.2.5*sin(x). plot(x.grid. f=x-1-0.grid.5*pi).title('f(x)=x-1-0.2.^2)-(1/48)*((x-0.e4).2).2 -1 0 0 1 2 3 4 2nd/3rd Order Taylor Series Error 0. plot(x. subplot(2.hold off f(x)=x-1-0.2 0 1 2 3 4 4th Order Taylor Series Error 0.001:3. e4=abs(f4-f).*((x-0.05 0 0 0 1 2 3 4 30 0 1 2 3 4 .25.grid.*((x-0. 3rd.2. and 4th order Taylor Series functions shown below in the MATLAB program−f1.2.5*pi).3).e1).hold on f1=x-1.25. x=0:0.title('2nd/3rd Order Taylor Series Error').4 0 0.1).5*sin(x)').15 0. e2=abs(f-f2).f).^2).4). plot(x. subplot(2. we obtain the following 1st.^4). 2nd. From the plots below.grid.8 2 0. f2=x-1.015 0. Note the 2nd and 3rd order Taylor Series functions are the same.1 0.

625 7.500 0.141 3.813 4.500 -6.625 4.922 3.813 3.141 3.0 -1.547 5.000 -1.141 3.078 4.375 5.063 11.250 0.484 4.625 4.547 5.484 4.563 2.563 -1.250 -1.625 4.0 -0.875 4.313 -0.4.688 2.938 4.500 -6.125 2.500 -0.453 4.875 4.750 1.078 4.000 -0.875 4.000 5.563 10.000 -7.000 2.484 31 3.141 3.000 .250 0.000 -1.516 3.000 0.0 1.516 3.000 2.000 -6.500 -10.000 5.078 4.250 0.938 3.891 0.500 -4.750 1.750 -0.188 -1.859 8.453 1.500 -0.0 x-values x -2.125 2.563 7.0 Theoretical Backward Centered Forward f'(x) 6.250 0.000 -10.250 -0.500 -3.000 3.000 -12.516 3.875 4.000 5.0 -2.563 4.000 f(x-1) -2.188 5.875 4.078 4.000 5.625 4.000 -1.000 1.000 11.500 -9.938 -1.688 4.813 4.000 -4.250 f(x) 0.859 f(x+1) f'(x)-Theory f'(x)-Back f'(x)-Cent f'(x)-Forw 2.12 x -2.000 -1.125 -1.500 -9.500 -1.500 -6.000 -0.313 1.000 2.750 2.000 0.078 1.000 1.563 3.063 0.453 4.0 10.0 4.813 -0.313 0.188 8.938 -1.500 0.250 8.891 0.500 -3.500 0.750 -1.313 4.5 -1.250 1.000 8.500 -12.5 -2.313 -0.375 2.547 5.078 4.484 4.000 7.516 f(x-1) -2.500 -9.000 5.0 2.813 -1.000 -4.813 5.484 4.000 -7.0 0.000 f(x) 0.000 f(x+1) 2.875 4.000 -1.000 3.516 3.000 -4.0 0.563 10.547 5.0 12.000 2.938 4.141 3.5 2.750 5.891 10.5 1.859 4.250 -0.938 8.750 -0.500 f''(x).938 -1.875 -0.625 4.922 3.125 f(x-2) f(x+2) 3.547 5.125 2.875 4.625 4.484 -1.078 4.813 -1.000 3.063 1.188 -0.813 3.500 -7.000 3.000 -3.5 -2.813 -1.000 5.547 5.813 1.750 -1.813 2.000 5.000 0.625 4.0 -4.000 2.141 3.000 1.500 1.375 5.688 1.750 3.0 8.750 3.250 -1.063 8.078 4.500 -1.750 -1.484 4.688 5.500 0.5 0.750 -1.000 -10.000 3.f''(x)-Cent Back 150.688 3.625 -2.938 7.547 5.500 -1.250 -1.563 10.500 -3.000 -0.891 0.922 f''(x)Theory -12.000 3.000 -1.000 1.313 3.500 f''(x)Forw -10.484 4.922 -1.000 2.000 -9.813 5.141 10.0 2.000 0.500 3.563 First Derivative Approximations Compared to Theoretical 14.000 1.563 -1.250 5.000 -7.547 4.000 3.688 5.516 -2.000 -1.938 3.

0 -15.000 7.500 6.922 3.453 4.0 -0.750 1.500 12.125 2.0 f''(x) 5.0 2.0 1.000 13.625 3.0 -2.0 -10.453 4.453 4.500 1.500 9.375 5.000 3.000 4.000 10.500 0.500 9.000 3.000 10.922 3.000 4.0 0.375 5.250 1.891 4.750 2.000 1.000 10.500 3.500 12.500 6.500 6. >> macheps ans = 2.453 4.000 Approximations of the 2nd Derivative 15.500 .0 10.125 2.0.5 -1.5 1.000 10.859 8.5 -2.500 3.922 3.859 8.0 -1.5 2.500 6.0 -5.000 7.2204e-016 >> eps ans = 2.000 7.13 function eps = macheps % determines the machine epsilon e = 1.000 7.000 3.859 8.000 3.375 5.375 5.0 x-values 4.000 10.000 3.000 10.2204e-016 32 0.500 12.5 f''(x)-Theory f''(x)-Backward f''(x)-Centered f''(x)-Forward 4.000 3.922 3.000 3.375 3.000 4.000 3.859 2.453 4.500 9. while e+1>1 e = e/2.125 2.516 3.5 0.500 9.516 3.891 14.000 1. end eps = 2*e.

86029 0.15) = 0.1375 f(xl) 0. we obtain a root estimate of 0.00% 9.es.1 The function to evaluate is f (c d ) = ⎛ gc d ⎞ gm tanh⎜ t ⎟ − v(t ) ⎜ m ⎟ cd ⎝ ⎠ or substituting the given values f (c d ) = ⎛ 9.12% Thus.Ead) % bisectnew(xl.1 + 0.31841 0.31841 0.140625 f(xu) −1.15 100% = 20% 0.318407) = 0.1375 0.1 0.15.1375 0.860291(−0.81c d 9.125 − 0.maxit): 33 .20452 −0.20452 0.14375 0.125 0.15 2 f (0.1375 0. the root is in the first interval and the upper guess is redefined as xu = 0.81(80) tanh⎜ ⎜ 80 cd ⎝ ⎞ 4 ⎟ − 36 ⎟ ⎠ The first iteration is xr = 0 .22% 1.125 0.02199 |εa| 20. after six iterations.01058 0.1 0.15 0.204516) = −0.86029 0.05464 0.1390625 f(xr) −0.05464 0. The second iteration is xr = 0.15 0.125) = 0.125.175944 Therefore.1 + 0 .15 0.2 0.07551 −0.14375 0.xu.07551 −0.20452 −0.860291(0.125 f (0.140625 0. The remainder of the iterations are displayed in the following table: i 1 2 3 4 5 6 xl 0.273923 Therefore.xu.125 2 εa = 0. the root is in the second interval and the lower guess is redefined as xu = 0.15 = 0.xl.05464 xu 0.35% 2.1390625 with an approximate error of 1.2 = 0.15 0.CHAPTER 5 5.19738 −0.05464 −0.1) f (0.01058 xr 0.09% 4.1) f (0.12%.20452 −0.2 function root = bisectnew(func. 5.

else ea = 0.0001.2.0. 5.14008789062500 5.0. end test = func(xl)*func(xr). assign default values if nargin<4. Ead = 0. % compute n and round up to next highest integer n = round(1 + log2((xu .81*80/cd)*tanh(sqrt(9. elseif test > 0 xl = xr. end %if Ead blank set to 0. xu = lower and upper guesses % Ead = (optional) desired tolerance (default = 0.d = 0.000001.81*cd/80)*4)-36'.81*80/cd)*tanh(sqrt(9.xrold)/xr) * 100. xr = (xl + xu)/2.000001) % output: % root = real root if func(xl)*func(xu)>0 %if guesses do not bracket a sign change error('no bracket') %display an error message and terminate end % if necessary. for i = 1:n xrold = xr.xl)/Ead) + 0.% uses bisection method to find the root of a function % with a fixed number of iterations to attain % a prespecified tolerance % input: % func = name of function % xl. if test < 0 xu = xr. if xr ~= 0.000001 % bisection xr = xl.0.1 with Ea.81c d 9.81(80) tanh ⎜ ⎜ 80 cd ⎝ ⎞ 4 ⎟ − 36 ⎟ ⎠ 34 .0001) ans = 0. end end root = xr.1.3 The function to evaluate is f (c d ) = ⎛ 9.5). ea = abs((xr .'cd') fcd = Inline function: fcd(cd) = sqrt(9. >> fcd = inline('sqrt(9. The following is a MATLAB session that uses the function to solve Prob.81*cd/80)*4)-36 >> format long >> bisectnew(fcd.

ea = abs((xr .xu.xu)/(func(xl) .141809. 35 . if xr ~= 0.19738) f (0. 5.4 function root = falsepos(func. else ea = 0.maxit): % uses the false position method to find the root % of the function func % input: % func = name of function % xl.es.140165 − 0. xr = xl.001.2) = 0.1 − 0.140165 with an approximate error of 1. if test < 0 xu = xr. the root is in the first interval and the upper guess is redefined as xu = 0.141809 − εa = − 0.141809 100% = 1.86029 − (−0. end test = func(xl)*func(xr). xr = xu .xl. The second iteration is x r = 0.030292 Therefore. iter = iter + 1.860291( −0.xu. end if nargin<4. es=0. while (1) xrold = xr.19738(0.2 − − 1. maxit=50.1 − 0.03521) 0.17% which is below the stopping criterion of 2%. end % false position iter = 0.001) % maxit = (optional) maximum allowable iterations (default = 50) % output: % root = real root if func(xl)*func(xu)>0 %if guesses do not bracket a sign change error('no bracket') %display an error message and terminate end % default values if nargin<5.maxit) % falsepos(xl. elseif test > 0 xl = xr.17% 0.141809) = 0.The first iteration is x r = 0.func(xu)*(xl .func(xu)).03521) = −0.1) f (0. xu = lower and upper guesses % es = (optional) stopping criterion (%) (default = 0.03521(0.141809) = 0.141809 0.140165 Therefore.es. after only two iterations we obtain a root estimate of 0.140165 0.xrold)/xr) * 100.86029 − (−1.

81*cd/80)*4)-36 >> format long >> falsepos(fcd.2) ans = 0. 5.667 x 2 ) (1) 3<x<6 2 x−3 ) + 150( x − (3)) − 265 x = 0 2 3 2 (2) M = −50 x + 415 x − 150 6<x<10 2 M = 150( x − (3)) + 300( x − 4.end if ea <= es | iter >= maxit.5) − 265 x 3 (3) M = −185 x + 1650 10<x<12 M + 100( x − 3)( M + 100(12 − x) = 0 (4) M = 100 x − 1200 Combining Equations: Because the curve crosses the axis between 6 and 10. xU = 10 36 . use (3).'cd') fcd = Inline function: fcd(cd) = sqrt(9.2. end end root = xr. R2 = 285 lbs.81*80/cd)*tanh(sqrt(9.81*cd/80)*4)-36'. Write beam equations: 0<x<3 x − 265 x = 0 3 M = 265 − 5.1.14016503741282 5.0.0.5 Solve for the reactions: R1 = 265 lbs. The following is a MATLAB session that uses the function to solve Prob.55 x 3 M + (16. (3) M = −185 x + 1650 Set x L = 6. break.81*80/cd)*tanh(sqrt(9.1: >> fcd = inline('sqrt(9.

875 + 8.5 → replaces x L M ( x L ) = 77. 37 .25 xr = 8.1:6].75 M ( xU ) = −15 2 M ( x R ) = 31.5 + 9 = 8.9140625 2 M ( x R ) = 0.546875 → replaces xU M ( x L ) = 2.9375 M ( xU ) = −15 2 M ( x R ) = −3.4375 2 M ( x R ) = −0.90625 M ( xU ) = −3.8984 Therefore.546875 xr = xr = 8.90625 + 8.921875 M ( xU ) = −3.75 + 9 = 8.921875 = 8.9375 = 8.4375 → replaces xU M ( x L ) = 8.125 → replaces x L M ( x L ) = 8.9375 = 8.5 8.4375 2 M ( x R ) = 2.875 + 9 = 8.90625 + 8.5 2 M ( xU ) = −200 M ( x R ) = 170 → replaces x L M ( x L ) = 170 M ( xU ) = −200 M ( x R ) = −15 → replaces xU M ( x L ) = 170 M ( xU ) = −15 M ( x R ) = 77.875 M ( xU ) = −15 2 M ( x R ) = 8.34375 xr = 8.25 → replaces x L M ( x L ) = 31.6 (a) The graph can be generated with MATLAB >> x=[-1:0.91 feet 5.M ( x L ) = 540 xr = x L + xU =8 2 xr = 8 + 10 =9 2 xr = 8+9 = 8. x = 8.34375 → replaces x L M ( x L ) = 2.125 xr = 8.34375 M ( xU ) = −0.125 xr = 8.

>> f=-12-21*x+18*x.^2-2.75*x.^3;
>> plot(x,f)
>> grid

This plot indicates that roots are located at about –0.4, 2.25 and 4.7.
(b) Using bisection, the first iteration is

xr =

−1+ 0
= −0.5
2

f ( −1) f (−0.5) = 29.75(3.34375) = 99.47656
Therefore, the root is in the second interval and the lower guess is redefined as xl = –0.5. The
second iteration is
xr =

− 0.5 + 0
= −0.25
2

εa =

− 0.25 − ( −0.5)
100% = 100%
− 0.25

f ( −0.5) f (−0.25) = 3.34375(−5.5820313) = −18.66492
Therefore, the root is in the first interval and the upper guess is redefined as xu = –0.25. The
remainder of the iterations are displayed in the following table:
i
1
2
3

xl
−1
−0.5
−0.5

f(xl)
29.75
3.34375
3.34375

xu
0
0
−0.25

f(xu)
−12
−12
−5.5820313

38

xr
−0.5
−0.25
−0.375

f(xr)
3.34375
−5.5820313
−1.4487305

|εa|
100.00%
33.33%

−0.5
−0.4375
−0.4375
−0.42188
−0.42188

4
5
6
7
8

3.34375
0.863098
0.863098
0.269471
0.269471

−0.375
−0.375
−0.40625
−0.40625
−0.41406

−1.4487305
−1.4487305
−0.3136673
−0.3136673
−0.0234052

−0.4375
−0.40625
−0.421875
−0.414063
−0.417969

0.8630981
−0.3136673
0.2694712
−0.0234052
0.1227057

14.29%
7.69%
3.70%
1.89%
0.93%

Thus, after eight iterations, we obtain a root estimate of −0.417969 with an approximate error
of 0.93%, which is below the stopping criterion of 1%.
(c) Using false position, the first iteration is

xr = 0 −

− 12(−1 − 0)
= −0.287425
29.75 − (−12)

f ( −1) f (−0.287425) = 29.75(−4.4117349) = −131.2491
Therefore, the root is in the first interval and the upper guess is redefined as xu = –0.287425.
The second iteration is
x r = −0.287425 −

εa =

− 4.4117349(−1 − (−0.287425))
= −0.3794489
29.75 − (−4.4117349)

− 0.3794489 − (−0.2874251)
100% = 24.25%
− 0.3794489

f ( −1) f (−0.3794489) = 29.75(−1.2896639) = −38.3675
Therefore, the root is in the first interval and the upper guess is redefined as xu = –0.379449.
The remainder of the iterations are displayed in the following table:
i
1
2
3
4
5

xl
−1
−1
−1
−1
−1

f(xl)
29.75
29.75
29.75
29.75
29.75

xu
0
−0.28743
−0.37945
−0.40523
−0.41217

f(xu)
−12
−4.4117349
−1.2896639
−0.3512929
−0.0938358

xr
−0.287425
−0.379449
−0.405232
−0.412173
−0.414022

f(xr)
−4.4117349
−1.2896639
−0.3512929
−0.0938358
−0.0249338

|εa|
24.25%
6.36%
1.68%
0.45%

Therefore, after five iterations we obtain a root estimate of –0.414022 with an approximate
error of 0.45%, which is below the stopping criterion of 1%.
5.7 A graph of the function can be generated with MATLAB
>>
>>
>>
>>

x=[-0.5:0.1:1.5];
f=sin(x)-x.^2;
plot(x,f)
grid

39

This plot indicates that a nontrivial root (i.e., nonzero) is located at about 0.85.
Using bisection, the first iteration is
xr =

0 .5 + 1
= 0.75
2

f (0.5) f (0.75) = 0.229426(0.1191388) = 0.027333
Therefore, the root is in the second interval and the lower guess is redefined as xl = 0.75. The
second iteration is
xr =

0.75 + 1
= 0.875
2

εa =

0.875 − 0.75
100% = 14.29%
0.875

f (0.75) f (0.875) = 0.119139(0.0019185) = 0.000229
Because the product is positive, the root is in the second interval and the lower guess is
redefined as xl = 0.875. The remainder of the iterations are displayed in the following table:
i
1
2
3
4
5

xl
0.5
0.75
0.875
0.875
0.875

f(xl)
0.229426
0.119139
0.001919
0.001919
0.001919

xu
1
1
1
0.9375
0.90625

f(xu)
−0.158529
−0.158529
−0.158529
−0.0728251
−0.0340924

40

xr
0.75
0.875
0.9375
0.90625
0.890625

f(xr)
0.1191388
0.0019185
−0.0728251
−0.0340924
−0.0157479

|εa|
14.29%
6.67%
3.45%
1.75%

Therefore, after five iterations we obtain a root estimate of 0.890625 with an approximate
error of 1.75%, which is below the stopping criterion of 2%.
5.8 (a) A graph of the function indicates a positive real root at approximately x = 1.4.
2
0
-3

-2

-1

0

1

2

3

-2
-4
-6
-8
-10
-12

(b) Using bisection, the first iteration is

xr =

0 .5 + 2
= 1.25
2

f (0.5) f (1.25) = −2.08629(−0.2537129) = 0.52932
Therefore, the root is in the second interval and the lower guess is redefined as xl = 1.25. The
second iteration is
xr =

1.25 + 2
= 1.625
2

εa =

1.625 − 1.25
100% = 23.08%
1.625

f (1.25) f (1.625) = −0.253713(0.2710156) = −0.06876
Therefore, the root is in the first interval and the upper guess is redefined as xu = 1.625. The
remainder of the iterations are displayed in the following table:
i
1
2
3

xl
0.5
1.25
1.25

f(xl)
−2.08629
−0.25371
−0.25371

xu
2
2
1.625

f(xu)
0.6862944
0.6862944
0.2710156

41

xr
1.25
1.625
1.4375

f(xr)
−0.2537129
0.2710156
0.025811

|εa|
23.08%
13.04%

223119 Therefore.6862944 f (0. after three iterations. xl = 0 + 273.80% 3.2755734 1.1069453 xr 1.04%.5) f (1.086294(0. The second iteration is x r = 0. (c) Using false position.8% 1.08629 −2.1069453) = −0. The remainder of the iterations are displayed in the following table: i 1 2 3 xl 0. xu = 35 + 273.628707 − 2.4970143(0.4970143) = −2. the root is in the first interval and the upper guess is redefined as xu = 1.086294(0. the first iteration is xr = 2 − 0.15.5 0.4970143 − 2. after three iterations we obtain a root estimate of 1.6287074 1.497014 f(xu) 0.15.6862944(0.040917 |εa| 8.086294 − 0.5 − 2) = 1.Thus.497014.2755734 − εa = 1.4483985 f(xr) 0. 5.086294 − 0.628707) = 1.4970143 − 1. we obtain a root estimate of 1.4970143 f (0.5 0.5 f(xl) −2.6287074 100% = 8.45121 ⎟ ⎝ 0.628707 1.4483985 with an approximate error of 3.36% Therefore.4970143 1.osf)*fTa(xu.2755734 0.628707.2755734 0. if fTa(xl. (b) Here is an M-file that evaluates the temperature in oC using 11 iterations of bisection based on a given value of the oxygen saturation concentration in freshwater: function TC = TempEval(osf) % function to evaluate the temperature in degrees C based % on the oxygen saturation concentration in freshwater (osf).08629 xu 2 1.6862944 0.9 (a) Equation (5.574927 Therefore.d ⎞ ⎟ = 1 + log 2 ⎛⎜ 35 ⎞⎟ = 10.628707) = −2.1069453 0.36%.5) f (1. the root is in the first interval and the upper guess is redefined as xu = 1.osf)>0 %if guesses do not bracket error('no bracket') %display an error message and terminate 42 .4375 with an approximate error of 13.08629 −2.5 − 1.05 ⎠ ⎠ which can be rounded up to 11 iterations.2755734) = −0.6) can be used to determine the number of iterations ⎛ ∆x 0 n = 1 + log 2 ⎜ ⎜E ⎝ a.

log(osf). elseif test > 0 xl = xr. if xr ~= 0. f = f .621949e11/Ta^4.575701e5/Ta .273. end end TC = xr .7798 >> TempEval(10) ans = 15.2438e10/Ta^3 . if test < 0 xu = xr. 43 .5552 5.5.3979 >> TempEval(14) ans = 1.15.end xr = xl. end test = fTa(xl. else ea = 0. end function f = fTa(Ta.6.642308e7/Ta^2. osf) f = -139.osf)*fTa(xr.xrold)/xr) * 100. ea = abs((xr .10 (a) The function to be evaluated is f ( y) = 1 − 400 (3 + y ) 9.81(3 y + y 2 / 2) 3 A graph of the function indicates a positive real root at approximately 1. The function can be used to evaluate the test cases: >> TempEval(8) ans = 26. f = f + 1.34411 + 1.8.osf). for i = 1:11 xrold = xr. xr = (xl + xu)/2.

03095 −0.5 2 1.5078125 f(xr) −0. The second iteration is xr = 1 .030946) = 0.018624 Therefore.813032 0.75 1.03095 −0.5 + 2 .625 1.2582( −0.52% .5 1.813032 0.00% 2.601809) = −0.036261 0.097956 0.5 + 2 .10 0 0 0.030946(0.03095 −0.5 2.03095 −0. The remainder of the iterations are displayed in the following table: i 1 2 3 4 5 6 7 8 xl 0.5625 1.03095 xu 2.5 = 1 .601809 0.206927 0.00% 14.5 1.5) f (1.5 1.04% 1.75 1.097956 0.53125 1.378909 0.601809 0.5.5 1.5) = −32.5 2 f (0.5) f (2) = −0.53125 1.5 1 1.5 1.29% 7.03095 −0.5 2 2.5 1.378909 0.515625 f(xu) 0.2582 −0.69% 4. the first iteration is xr = 0 .625 1.5 -10 -20 -30 -40 (b) Using bisection. the root is in the second interval and the lower guess is redefined as xl = 1.5 100% = 25% 2 f (1.5 2 1.5 =2 2 εa = 2 − 1.998263 Therefore.5625 1.003383 −0.03095 −0.030946 0.013595 |εa| 25.515625 1.003383 44 xr 1.036261 0. the root is in the first interval and the upper guess is redefined as xu = 2.206927 0.5 1.03% 0.5 f(xl) −32.

5 − 0.79987(0.78612 0.2582 −32.09077 with an approximate error of 1.45083) = −32.5) f (2.2582 −32.75689 0. (c) Using false position. the root is in the first interval and the upper guess is redefined as xu = 2.5 0. This function violates the premise upon which false position was based−that is.74145 0.2582 −32. Thus.5078125 with an approximate error of 0.78612 0.2582 −32.59%.72547 0.23347 2.67469 xr 2.78% 1. the false position method is converging at a very slow pace and is still far from the root in the vicinity of 1. then the root is closer to xu than to xl (recall Fig.5 f(xl) −32.45083) = 2. 5.31492 2. the opposite is true.40363 f (0.45083 100% = 1.67469 0.40363) = −32.12404 2.31492 2.2582 −32.5 0.09077 f(xr) 0.2582 − 0. The second iteration is x r = 2.92% 1.5 0.27331 2.69206 0.35834 2.81303 f (0.80248 Therefore.45083 2.72547 0.40363 2.75689 0.79987) = −25.2582 −32.79987 2. 45 .40363 − 2. after ten iterations.2582(0.45083 2.74145 0.5 0.88% 1.5 − 2.96% 2. Discussion: This is a classic example of a case where false position performs poorly and is inferior to bisection. if f(xu) is much closer to zero than f(xl).15888 2.5 0.35893 The root is in the first interval and the upper guess is redefined as xu = 2.35834 2. the first iteration is x r = 2.81303 0.19534 2. Because of the shape of the present function.12404 f(xu) 0.5 that we detected graphically.2582 xu 2.25821(0.15888 2.77179 0.2582 −32.59% After ten iterations we obtain a root estimate of 2.5 0.70900 0. we obtain a root estimate of 1.2582 −32.5) = 2.52%.96% 1.74% 1.64% 1.83% 1.79987 0. The remainder of the iterations are displayed in the following table: i 1 2 3 4 5 6 7 8 9 10 xl 0.81303(0.45083. Insight into these results can be gained by examining the plot that was developed in part (a).65693 |εa| 1.5 0.45083 − 32.77179 0.2582 −32.5) f (2.23347 2.50000 2.27331 2.40363 − 32.5 0.25821 − 0.After eight iterations.5 − 2.45083 − εa = 0.69206 0.70900 0.40363.79987 0.5 0.78612) = −25.8).19534 2.40363 2.69% 1.

96% 0.721524 0.1984% 0.5 = 0.0725% 0.0097% Thus.768606 |εa| 23.7 Using an initial guess of 5.766248 0. x i +1 = 0.500000 0.762097 0.649637 × 100% = 9. the root is estimated to be 0.768532 0. the first iteration yields ( ) x1 = sin 0.721524 The process can be continued as tabulated below: iteration 0 1 2 3 4 5 6 7 8 9 xi 0.0339% 9.9 x i2 − 2. after nine iterations.2 (a) The function can be set up for fixed-point iteration by solving it for x in two different ways.5.1 The function can be set up for fixed-point iteration by solving it for x xi +1 = sin (x) i Using an initial guess of x0 = 0. 6.768329 0. the first iteration yields 46 .649637 0.767772 0.750901 0.649637 εa = 0.5 1 .721524 − 0.9632% 3.5 × 100% = 23% 0.5418% 0. First.768606 with an approximate error of 0.4691% 0.CHAPTER 6 6.0097%.649637 − 0.0265% 0.649637 = 0. it can be solved for the linear x.721524 εa = 0.9123% 1.649637 Second iteration: ( ) x 2 = sin 0.

5415% 0.8 − 11. the first iteration yields x i +1 = εa = 1.7 εa = 71.496 × 100% = 14. An alternative is to solve for the second-order x.0194% 14.8 1 .14% 3.76) 2 − 2.496 0 .5 0.881882 2. All the iterations can be tabulated as iteration 0 1 2 3 4 5 xi 5.7(3.6680% 1.062905 2.76 Second iteration: x1 = 0.0% 3.7 εa = 11.0629 − 3.496029 3.76 1. x i +1 = 1.0629 0.5090% 47 .9 3. this solution is diverging.76 × 100% = 83.1410% 4.7(5) + 2.496) + 2.000000 3.0629 This version is converging.496 − 5 × 100% = 43.9 Using an initial guess of 5.7 xi + 2.5 = 3.867287 |εa| 43.5 = 11.8 Clearly.496 Second iteration: x i +1 = εa = 1.9 3.926306 2.x1 = 0.5 = 71.9(5) 2 − 2.76 − 5 × 100% = 57.9(11.5 = 3.6% 71.5% 11.

424658 × 100% = 17.46438 −3.1681% 0.8(3.45006 −3.424658) 2 + 1. after 9 iterations.5 = −7.860104) + 2.5 − 1.0% 3.7 2.5 −2.424658 − 5 × 100% = 46.924357 2.1% 2.424658 Second iteration: x i +1 = 3.8E−07 −7.7(5) + 2.924357 The process can be continued as tabulated below: iteration 0 1 2 3 4 5 xi 5 3.860104) = −0.7(2.7(3.860363 2.56384 −3.424658 − εa = − 0.44819 −3.000294 (b) The formula for Newton-Raphson is x i +1 = xi − − 0.0183% 0.8(5) + 1.424658) + 1.860190) + 2. f ( 2.7 x i + 2.860190 with an approximate error of 0.860190) 2 + 1.44819 |εa| 46.424658) + 2.860104 f(xi) −11.860190) = −0. the first iteration yields x i +1 = 5 − εa = − 0.23353 −0. f ( 2.424658 2.0555% 0.860887 2.860104 with an approximate error of 0. The result can be checked by substituting it back into the original function.7 3.862475 2.924357 − 3.6 7 8 9 2.0364% 0.0061% Thus.9(3.8 xi + 1.00360 −9. The result can be checked by substituting it back into the original function.2E−14 f'(xi) −7.0000% 17.7 Using an initial guess of 5.860105 2.424658 − 1.1081% 2.7(2.860104) 2 + 1.5 = −0.9 xi2 + 1. the root estimate is 2.0000% After 5 iterations.0061%.5 = 2.0000%.860190 0.9(2.22527 −0.924357 − 1.9(5) 2 + 1.9(2.3 −4.5 = 3. the root estimate is 2.861147 2.2093% 0.2 × 10 −14 48 .

191304 − 3.673% 3.5.068699 − 3.1 3 x i2 − 12 xi + 11 Using an initial guess of 3. (b) The formula for Newton-Raphson is x i +1 = x i − x i3 − 6 x i2 + 11xi − 6.5) 2 − 12(3.191304) + 11 3.5) − 6.5 × 100% = 9.^3-6*x.191304 × 100% = 3.191304) 2 − 12(3.068699 49 .5) 2 + 11(3.4).191304 − εa = (3.191304) 3 − 6(3.5 − εa = (3.1.3 (a) >> >> >> >> x = linspace(0.05.05.191304 Second iteration: x 2 = 3.y) grid Estimates are approximately 1.1 = 3. plot(x.995% 3.191304 3(3.068699 3(3.^2+11*x-6.191304) − 6.5) 3 − 6(3.9 and 3. 1.6.1 = 3. y = x.191304) 2 + 11(3. the first iteration yields x1 = 3.5) + 11 3.

068699) 2 + 11(3.5 − 2.475 − 1.31011) 3.5 x0 = 3.711111 × 100% = 5.475 f(x0) = 1.775 − (−0.5 x1 = 3.711111 x 2 = 2.5 x0 + δx0 = 3.871091 − 2.711111 − 3.871091 Third iteration: x1 = 2.221923 (d) For the modified secant method.871091) = 3.57 f(x0) = 1.871091 1.45152 − (−0.711111) = 2.199893 50 .775 2.221923 − 2.5 − εa = 1.1 = 3.572% 2.871091 x 3 = 2.068699) + 11 3.871091 − εa = f(x1) = −0.221923 − 0.711111 − εa = f(x0) = 1.068699) 2 − 12(3.775 x−1 = 2.871091 × 100% = 10.5 × 100% = 29.775(2.047317 (c) For the secant method.5) = 2.45152 f(x2) = −0.5 − 3.31011(2.45152) 2.711111 Second iteration: x0 = 3.098% 2.047317 3(3.711111 − 2.45152 − 0.702% 3.068699) 3 − 6(3.711111 − 0.45152(3.Third iteration: x 3 = 3. the first iteration: x0 = 3.047317 − 3.711111 x2 = 2.889% 3.068699) − 6.068699 − εa = (3.31011 − 0.775 f(x0 + δx0) = 2. the first iteration: f(x−1) = −0.775 f(x1) = −0.5 x1 = 2.068699 × 100% = 0.

199893 − 1.082034 0.084809 3.207573 Second iteration: x1 = 3.5 − εa = 0.5)1.252242 0.050812 0.050812 (e) >> a = [1 -6 11 -6.082034 − 3.207573 x1 + δx1 = 3.*exp(-x)-1.143675 x 3 = 3.207573 − 3.4 (a) >> >> >> >> x = linspace(0.207573 − εa = f(x1) = 0.1000 >> roots(a) ans = 3.207573 2.117% 3.207573 × 100% = 4.271725 x 2 = 3.0000 11.023% 3.775 3.084809 = 3.02(3.685016 0.082034 × 100% = 1.453351 3.0000 -6.1] a = 1. y = 7*sin(x).775 = 3.207573)0.0544 6.082034 Third iteration: x2 = 3.y) grid 51 .0467 1.252242 − 0.082034 x2 + δx2 = 3. plot(x.8990 1.4).685016 − 0.073% 3.5 × 100% = 9.082034)0.02(3.082034 − εa = f(x2) = 0.0000 -6.453351 f(x1 + δx1) = 0.453351 = 3.050812 − 3.02(3.084809 f(x2 + δx2) = 0.x1 = 3.

the first iteration yields x1 = 0.3 − 1 0.169409 Third iteration: x1 = 0.169409 − 7 sin(0.124168 7e (cos(0.3 − εa = 7 sin(0.169409 − = 0.828278 7e (cos(0.144376 − 0.144376 − εa = 7 sin(0.00372 = 0.169409 − 0.3 × 100% = 107.169409 4.12827 = 0.The lowest positive root seems to be at approximately 0.3)) 0.144376 Second iteration: x 2 = 0.170179 − 0.8% 0.3 − = 0.5.169409 − 0.144376)) 0.169409 − 1 − 0.144376 − = 0.532487 = 0 .421627 7e (cos(0.169409)e −0.144376 5.169409)) 52 .144376 − 1 − 0.3 3.144376 − 0.144376 × 100% = 14. (b) The formula for Newton-Raphson is x i +1 = x i − 7 sin( xi )e − xi − 1 7e − xi (cos( x i ) − sin( xi )) Using an initial guess of 3.169409) − sin(0.776% 0.2.3)e −0.3) − sin(0.144376)e −0.144376) − sin(0.

3) = 0.26032 − 0.532487 x0 = 0.178664 × 100% = 4.178664 0.143698 53 .3 × 100% = 151.542708 − 0.119347) = 0.178664 − εa = f(x1) = −0.178664 x 3 = 0.170683 − 0.3 − εa = 0.169409 × 100% = 0.119347 x 2 = 0.542708 x1 = 0.04047 0.3 − 0.68% 0.2% 0.04047(0. the first iteration: f(x0) = 0.143698 0. the first iteration: x−1 = 0.532487 = 0.119347 − 0.170179 − 0.827244 f(x0) = 0.178664 − 0.532487 0.119347 Second iteration: x0 = 0.532487 0.119347 0.827244 − 0.453% 0.119347 × 100% = 33.04047 0.119347 − 0.4 x0 = 0.532487(0.4 − 0.3 x1 = 0.εa = 0.170683 (d) For the modified secant method.178664) = 0.26032 f(x2) = 0.3 − εa = f(x−1) = 0.532487 − (−0.170179 (c) For the secant method.3 x0 + δx0 = 0.532487 0.303 f(x0 + δx0) = 0.170683 − 0.119347 x2 = 0.3 x1 = 0.143698 − 0.119347 − εa = f(x0) = 0.26032(0.26032) 0.4% 0.532487 f(x1) = −0.3)0.8% 0.3 × 100% = 108.178664 Third iteration: x1 = 0.01(0.26032 − 0.

6875 5 x i4 − 64.145135 x 2 = 0.35 Using an initial guess of 0.169412 − 0.00371) = 0.18% 0.5825 − εa = 50.169412 − 0.300098 − 29.1466 2.Second iteration: x1 = 0.0375 x i2 + 116.446% 90.143698 × 100% = 15.300098 × 100% = 97.075 xi + 116. the first iteration yields x1 = 0.171106 x 3 = 0.5825 × 100% = 74.245468 90.2 x i3 + 266.00371) 0.143698 x1 + δx1 = 0.170181 (a) The formula for Newton-Raphson is x i +1 = x i − xi5 − 16.35 xi + 31.143698 − εa = f(x1) = −0.169412 × 100% = 0.13175 f(x1 + δx1) = −0.004456 0.13175) = 0.05 xi4 + 88.452% 0.75 x i3 − 192.13175) 0.5825.169412)(−0.12439 − (−0.169412 x2 + δx2 = 0.300098 − 0.546 = 90.07506 − 2.5 f(x2) = −0.06217 = 2.02(0.170181 0.143698)(−0.300098 Second iteration x1 = 2.07506 0.170181 − 0.00371 f(x2 + δx2) = 0.12439 0.07506 54 .675% 2.25 xi2 − 384.300098 − εa = − 21.004456 − (−0.02(0.169412 Third iteration: x2 = 0.169412 − εa = 6.

1668 286.056% 0.1969 f(x1 + δx1) = −21.193735)(−21.852% 22. The iterations can be summarized as iteration 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 xi 0.6 69164. the first iteration: x0 = 0.728% 10.317% 14.94E+09 1.880% 0.95260 15.07506 72.36 6652.05(0.55998 17.637% 12.06217 f(x0 + δx0) = 49.32 163.06217 −21.193735 x1 + δx1 = 2.777% 16.703943 7.74E+08 56852563 18616305 6093455 1993247 651370.731% 20. the result seems to be diverging.8912 163.41 15946.193735 Second iteration: x1 = 2.3 226941 93356.874% 23. the computation eventually settles down and converges (at a very slow rate) on a root at x = 6.80590 11.193735 − 0.300098 90.851 1217.546 4.05(2.245468 2.193735 49.030% 17.Thus.597806 0.5 f(xi) 50.743746 6.03 2810.603832 8.72701 38.1969) 55 |εa| 74.5448 0.406 187.08238 12.1969) = −4.611625 x1 = 0.396 2292.71520 58.59 38502.675% 97.2 212524.094% 19.2913 54.48891 − 21.987% 20.62E+09 5.5448 − (−21.5825 x0 + δx0 = 0.54 7213.519442 7.84E+08 1.06217 = 2.447% 2.84927 31.446% 23. However.246 710.16E+08 47720880 19552115 8012160 3284098 1346654 552546.582500 2.675 556.000% .585% 8.5825 − εa = f(x0) = 50.9363 164.580% 2.00952 9.08487 21.346% 21.15724 0.94 22415.601% 23.554962 6.5825 × 100% = 73.06217 2.58E−08 f'(xi) −29.201% 5.5825)50.120057 6.5.500017 6.75349 26.193735 − f(x1) = −21.789% 0.503643 6.3125 (b) For the modified secant method.303422 x 2 = 2.9841 209.00285 6.1466 0.265% 22.06896 9.15724 − 50.3E+08 1.644695 0.83059 47.

398 −250.2147 −0.46249 −0.5825 is located at a point where the function is relatively flat.82163 −0.87% − 4.xr.6 −8330.xr.355 −2.524% 83.xrold.196% 0.039% 0.94 −2452.2 xi+δxi 0.06839 |εa| 73.075).es.21 −0.193735 × 100% = 148.579% 73.968 −75.5 −7201.870% 40.44756 −0.3 for Newton-Raphson and 2.4163 −15.17563 −1.5825 2.maxit) % secant(func. Therefore.000% Explanation of results: The results are explained by looking at a plot of the function.0686 −2.maxit): % uses secant method to find the root of a function % input: % func = name of function % xrold.4718 −12.4 −2793.25751 −0. whereas the modified false position goes in the opposite direction to a negative value (-4.91903 −0.193735 −4.72 −808.611625 2. the computation eventually settles down and converges on a root at x = −0.49).2 −0.57 −906.39285 −0.48891 Again.εa = − 4. The guess of 0. At these points the function is very flat and hence.806% 25.5448 −24323.4E−06 f(xi+ δxi) 49.193 for the secant method.es.28441 −1.20008 −0.487% 46. the methods slowly converge on the nearest roots.06217 −21.865% 56.15724 −21.xrold.71336 −3.27038 −0.6 function root = secant(func.0002 −2.20447 −0.936% 2.303422 −4.462 −67.200% 69. Thereafter. xr = initial guesses % es = (optional) stopping criterion (%) 56 .48891 −3. 60 40 20 -2 0 -20 -40 2 Modified secant 4 6 8 Newton Raphson -60 6. The iterations can be summarized as iteration 0 1 2 3 4 5 6 7 8 9 10 11 12 xi 0.05726 −2.1969 −20727.957 −277.447% 148. the Newton-Raphson results in a very high value (90.19524 −2.46994 −0.21 f(xi) 50. the first iteration results in a prediction of 2.21008 −0. However.01613 −0.6518 −3.08575 −2.2.5942 −0.86271 −0.48891 − 2. the result seems to be diverging.

end if nargin<3. while (1) xrn = xr .2.xr.func(xr)). end end root = xr. 57 . xr = xr .xr)/xrn) * 100. end root = xrn. end %if es blank set to 0. assign default values if nargin<5.5) ans = 3. assign default if nargin<5. delta=1E-5.00001 % Secant method iter = 0.3. iter = iter + 1.% maxit = (optional) maximum allowable iterations % output: % root = real root % if necessary. end xrold = xr.xrold.0467 6.xr. end %if maxit blank set to 50 if nargin<4.5. iter = iter + 1.es. while (1) xrold = xr. end values %if maxit blank set to 50 %if es blank set to 0. 6.xr)/(func(xrold) .001 %if delta blank set to 0. maxit=50. if xr ~= 0. es=0. end if ea <= es | iter >= maxit.001 % Secant method iter = 0. break.func(xr)*(xrold . ea = abs((xrn . es=0.maxit): % uses the modified secant method % to find the root of a function % input: % func = name of function % xr = initial guess % delta = perturbation fraction % es = (optional) stopping criterion (%) % maxit = (optional) maximum allowable iterations % output: % root = real root % if necessary. if xrn ~= 0.3: >> secant(inline('x^3-6*x^2+11*x-6.delta.1'). xr = xrn.delta*xr*func(xr)/(func(xr+delta*xr)-func(xr)).maxit) % secant(func.001.7 function root = modsec(func. Test by solving Prob. ea = abs((xr . end if nargin<4. end if ea <= es | iter >= maxit.es.xrold)/xr) * 100. break. maxit=50.001.

3: >> modsec(inline('x^3-6*x^2+11*x-6.0. the iterations proceed as iteration 0 1 2 3 4 xi 4.5.5.469 262.014910 11. 6.384% .08 1121. the derivative can be evaluated as df (m) = dm ⎛ gc d ⎞ 1 ⎞ cd g ⎟t + tanh ⎜ t⎟ ⎟ m2 ⎜ m ⎟2 ⎠ ⎝ ⎠ ⎛ gc d ⎞⎛ 1 m gm sech 2 ⎜ t ⎟⎜ − ⎜ m ⎟⎜ 2 c d g cd ⎝ ⎠⎝ cd g gm c d The two terms can be reordered df (m) 1 = dm 2 ⎛ gc d ⎞ 1 cd g t⎟ − tanh⎜ ⎜ m ⎟ 2 gm c d ⎝ ⎠ ⎛ gc d ⎞ gm m c d g t sech 2 ⎜ t⎟ 2 ⎜ m ⎟ cd cd g m ⎝ ⎠ The terms premultiplying the tanh and sech can be simplified to yield the final result df (m) 1 = dm 2 6.0467 6.9 ⎛ gc d ⎞ g ⎛ gc d ⎞ g t⎟ t⎟ − t sech 2 ⎜ tanh ⎜ ⎜ ⎟ ⎜ m ⎟ mc d m m 2 ⎝ ⎠ ⎝ ⎠ (a) The formula for Newton-Raphson is x i +1 = x i − − 2 + 6 xi − 4 xi2 + 0.586% 40.518380 16.02) ans = 3.5 586.5 32.Test by solving Prob.5 xi2 Using an initial guess of 4.375 1315.912 326.4795 f'(xi) 0.8906 58 |εa| 86.082% 43.333330 22.5 x i3 6 − 8 xi + 1.5968 118.609% 36.1').4375 12911.57 3814.8 The equation to be differentiated is f ( m) = ⎛ gc d ⎞ gm t⎟ − v tanh⎜ ⎜ m ⎟ cd ⎝ ⎠ Note that d tanh u du = sech 2 u dx dx Therefore.742540 f(xi) −10.3.

Explanation of results: The results are explained by looking at a plot of the function.156325 92.43331 27.541249 105.996489 7.188886 6.00265 23306693 10358532 4603793 2046132 909393.156726 6.1E-06 -5.203% 4.524% 22.01802 4.1E+09 -2.964 f(xi) -10. both are sent to different regions that are far from the initial guesses.112% 50.051% 50.1E+10 -9.156325. after an initial jump.05629 -0.007% Thus.30526 24. Thereafter.522% 0.06199 13.474 0. 59 . Both guesses are in a region where the function is relatively flat. (b) Using an initial guess of 4.4E+08 f'(xi) -0.000% xi This time the solution jumps to an extremely large negative value The computation eventually converges at a very slow rate on a root at x = 0.266% 4. Because the two guesses are on opposite sides of a minimum.453025 0.842169 0.7E+09 -8E+08 -2.171% 0.556607 2.121% 0.28 -775.9E-13 3.39E−07 55.472684 6.076% 50.545015 2.25 -1165.713% 13.94237 13. the computation eventually settles down and converges on a root at x = 6.586% 0.005448 8.474572 0.97196 17. the iterations proceed as iteration 0 1 2 3 4 5 ⋅ ⋅ ⋅ 21 22 23 24 25 |εa| 4.00146 -1.6041 13.5 6 7 8 9 10 8.549% 28.331330 6.4504 -3.474572.448386 0.43.114% 50.5 100.13 -2625.474572 -0.683645 2. the methods slowly converge on the nearest roots.2 -1749.59991 30.425% 0.45441 -0.43 -3939.541252 2.325261 0.

6).825311 0. x i +1 = xi − x i2 − a 2 xi which can be expressed as x i +1 = xi + a / xi 2 6.2.11 (a) The formula for Newton-Raphson is x i +1 = x i − ( tanh x i2 − 9 2 x i sech 2 ( xi2 ) −9 ) Using an initial guess of 3.2 2.736816 f(xi) 0.924% .845456 −0. 6.906910 f'(xi) 1.971640 60 |εa| 16.10 The function to be evaluated is x= a This equation can be squared and expressed as a roots problem. the iterations proceed as iteration 0 1 xi 3.4 0 0 2 4 6 -4 -8 -12 6. f ( x) = x 2 − a The derivative of this function is f ' ( x) = 2 x These functions can be substituted into the Newton-Raphson equation (Eq.

02101 −1.0296 xi3 − 0. Due to the concavity of the slope.1832 Using an initial guess of 16. Hence.813% 1.46847 0.0343 −9.852% 497.050416 8. the next iteration will always diverge.183 x i + 5 0.25584 −9. 1 0.8 3 3.670197 −256.71xi − 12.686147 1. the iterations proceed as iteration 0 1 2 3 4 5 6 7 8 xi 16.003844 25.864 −25.463023 0.002% As depicted below.35368 0.413 0.999738 0.7E−10 f'(xi) −1. 61 .12 The formula for Newton-Raphson is x i +1 = x i − 0.22351 −9.57445 8.4 -0.334244 0.5 0 2.6318 36.46848 f(xi) −9.662596 −54.15 9.742% 139.920% 325.5 -1 6.077102 −4. the iterations involve regions of the curve that have flat slopes.431% (b) The solution diverges from its real root of x = 3.1321 −10. the solution is cast far from the roots in the vicinity of the original guess.887% 183.678763 128.15.284 xi3 + 3.0074 xi4 − 0.67645 −0.81E−05 2.22345 |εa| 77.163% 0.6 2.355 x i2 − 12.292213 0.2 3.2 3 3. The following graph illustrates how the divergence evolves.2804 0.24995 8.966 −14.890% 27.852 x i2 + 6.431% 101.

>> f = inline('x.13 The solution involves determining the root of f ( x) = x 1− x 6 − 0. >> y = f(x).y) The fzero function can then be used to find the root 62 ./(2+x))-0.05 >> x = linspace(0./(2+x))-0. >> plot(x.*sqrt(6./(1-x).05 2+ x MATLAB can be used to develop a plot that indicates that a root occurs in the vicinity of x = 0..*sqrt(6.03.2).10 5 0 -5 5 10 15 20 -5 -10 6.05') f = Inline function: f(x) = x./(1-x).

function y = fvol(v) R = 0.518. b = 0. a and b.518.03) ans = 0.fv) grid 63 .0.*(v+b)*sqrt(T)).55778319740302 >> b = 0.557783 + v − 0. plot(v.15) 12.02824944114847 6.p = 65000. This function is saved as fvol.0018626) 233.Tc = 191.15 MATLAB can be used to generate a plot of the function and to solve for the root.5/pc a = 12. T = 273.m.0866*R*Tc/pc. can be evaluated as >> format long >> R = 0. therefore. involves determining the root of f (v) = 65.R*T./(v. a = 0.14 The coefficient./(v-b)+a.427*R^2*Tc^2.004).0. It can then be used to generate a plot >> >> >> >> v = linspace(0.5/pc. fv = fvol(v). y = p .0866*R*Tc/pc b = 0.>> format long >> fzero(f.002.0018626 v(v + 0.15-40.00186261539130 The solution. >> a = 0. One way to do this is to develop an M-file for the function.Tc = 191.518(233.pc = 4600.427*R^2*Tc^2.pc = 4600.000 − 0.

15 The function to be evaluated is ⎡ ⎛r − h⎞ 2 ⎤ f ( h) = V − ⎢r 2 cos −1 ⎜ ⎟ − (r − h) 2rh − h ⎥ L ⎝ r ⎠ ⎣ ⎦ To use MATLAB to obtain a solution.(r^2*acos((r-h)/r)-(r-h)*sqrt(2*r*h-h^2))*L.L = 5.[].00280840865703 The mass of methane contained in the tank can be computed as mass = 3 V = = 1068.Thus.V) h = 0.317 m 3 v 0.0.0028084 6.V) y = V . the function can be written as an M-file function y = fh(h.r.5. The fzero function can be used to refine this estimate.V = 8.L.74001521805594 64 .0028) vroot = 0. >> vroot = fzero('fvol'.L. >> h = fzero('fh'.0028. The fzero function can be used to determine the root as >> format long >> r = 2. a root is located at about 0.r.0.

plot(x.6.16 (a) The function to be evaluated is f (T A ) = 10 − ⎛ 500 ⎞ T A TA ⎟⎟ + cosh⎜⎜ 10 ⎝ T A ⎠ 10 The solution can be obtained with the fzero function as >> format long >> TA = fzero(inline('10-x/10*cosh(500/x)+x/10').grid 6.grid 65 .100).5. w = 10.* sin(2*pi*t) .1000) TA = 1.y).TA/w.3. >> y = 9*exp(-t) .y).5 A plot can be generated with MATLAB.266324360399887e+003 (b) A plot of the cable can be generated as >> >> >> >> x = linspace(-50. y = TA/w*cosh(w*x/TA) + y0 .17 The function to be evaluated is f (t ) = 9e −t sin(2πt ) − 3.2).y0 = 5. >> t = linspace(0. >> plot(t.

1 and 0.^2)'.Thus. The fzero function can be used to obtain refined estimates.01 − 2⎞ 1 ⎛ + ⎜ 0.2 0. there appear to be two roots at approximately 0.[1 1000]) ans = 220.6e-6*x-2.4.[0.40134369265980 6.19 The fzero function can be used to determine the root as 66 .5'.18 The function to be evaluated is f (ω ) = 1 − Z 1 ⎛ 1 ⎞ + ⎜ ωC − ⎟ 2 ωL ⎠ R ⎝ 2 Substituting the parameter values yields f (ω ) = 0. >> t = fzero('9*exp(-x)*sin(2*pi*x)-3.8]) t = 0.5'.2]) t = 0.6 × 10 −6 ω − ⎟ ω⎠ 50625 ⎝ 2 The fzero function can be used to determine the root as >> fzero('0.0202 6.[0 0.06835432096851 >> t = fzero('9*exp(-x)*sin(2*pi*x)-3.01-sqrt(1/50625+(./x).

6.6527 Thus.[40 60]) theta = 51.8+90*tan(pi*x/180)-44. Therefore.0) theta = 37.5*40000*x^2-95*9.16662477900186 6.8 + 90 tan ⎜ 2 ⎝ 180 ⎠ cos (πθ 0 / 180) Note that the angle is expressed in degrees.8*x-95*9.8+90*tan(pi*x/180)-44.>> format long >> fzero('2*40*x^(5/2)/5+0.8380 >> theta = fzero('0.1. MATLAB can be used to plot this function versus various angles. the y at 90 m will be –0. >> theta = fzero('0.1) ans = 0. the right fielder can throw at two different angles to attain the same result. Roots seem to occur at about 40o and 50o./cos(pi*x/180).8.^2'.^2'./cos(pi*x/180).20 If the height at which the throw leaves the right fielders arm is defined as y = 0. These estimates can be refined with the fzero function.1.43'.21 The equation to be solved is 67 .1 ⎞ ⎛ π θ0 ⎟ − f (θ ) = 0. the function to be evaluated is 44.8*0. First.

523% 0.355008 with an approximate relative error of 0.22 >> r = [-2 6 1 -4 8]. 6.395 44. It can be formulated as ⎛π ⎞ πRxi2 − ⎜ ⎟ xi3 − V x i +1 = x i − ⎝3⎠ 2πRxi − πxi2 or substituting the parameter values.1) ans = 0 >> b = poly([-2 6]) b = 1 -4 -12 >> [q. >> a = poly(r) a = 1 -9 -20 204 208 -384 0 0 >> polyval(a.1593 276.r] = deconv(a.017% Thus.458% 2. the Newton-Raphson is the best choice to achieve results efficiently.017%.355008 f(xi) 1094. the root is determined to be 6. after only three iterations.2858 1.4442 272.26E-05 |εa| f'(xi) 314. ⎛π ⎞ π (10) xi2 − ⎜ ⎟ xi3 − 1000 x i +1 = x i − ⎝3⎠ 2π (10) xi − πx i2 The iterations can be summarized as iteration 0 1 2 3 xi 10 6.356057 6.b) q = 1 -5 -28 32 0 0 0 0 r = 68 .⎛π ⎞ f ( h) = πRh 2 − ⎜ ⎟h 3 − V ⎝3⎠ Because this equation is easy to differentiate.26917 0.0353 272.4202 53.516432 6.

0000 1.0000 -20.>> x = roots(q) x = 8. >> r = roots(a) r = -4.0000 >> a = conv(q.0000 .0000 -4.0000 -3.0000 -4.0000 -9.0000 6. >> r = roots(a) r = -6.0000 -384.0000 -1.0000 6.0000 -2.23 >> a = [1 9 26 24].0000 Therefore.b) a = 1 -9 -20 204 208 -384 >> x = roots(a) x = 8.0000 -5.0000 1.0000 -2. the transfer function is G (s) = ( s + 4)( s + 3)( s + 2) ( s + 6)( s + 5)( s + 3)( s + 1) 69 208.0000 >> a = [1 15 77 153 90].0000 204.0000 >> a = poly(x) a = 1.0000 -3.

7621 0. b23 = 6.4565 0.0000 [D]: 2 × 4 (b) square: [B].CHAPTER 7 7.1 >> Aug = [A eye(size(A))] Here’s an example session of how it can be employed.6068 7.3 2⎤ 1⎥ 7⎥ 5⎥⎦ ⎡4 3 7 ⎤ (10) I × [B ] = ⎢1 2 6⎥ ⎢⎣1 0 4⎥⎦ The terms can be collected to give 70 .7621 0.8214 [B]: 3 × 3 [F]: 2 × 3 1. row: ⎣G⎦ (c) a12 = 5.8913 0.4860 0.4565 0.0185 0.0000 0 0 {C}: 3 × 1 ⎣G⎦: 1 × 3 0 1.8913 0.4860 0. d32 = undefined.8214 >> Aug = [A eye(size(A))] Aug = 0.2 (a) [A]: 3 × 2 [E]: 3 × 3 0.0185 0.9501 0.2311 0. e22 = 1.6068 0. >> A = rand(3) A = 0. column: {C}.0000 0 0 0 1. g12 = 6 (d) MATLAB can be used to perform the operations ⎡5 8 13⎤ (1) [ E ] + [ B ] = ⎢8 3 9 ⎥ ⎣⎢5 0 9 ⎥⎦ ⎡ 3 −2 1 ⎤ (2) [ E ] − [ B] = ⎢− 6 1 3⎥ ⎣⎢ − 3 0 − 1⎦⎥ (3) [A] + [F] = undefined ⎡20 15 35⎤ (4) 5[ F ] = ⎢ 5 10 30⎥ ⎢⎣ 5 0 20⎥⎦ (5) [A] × [B] = undefined ⎡54 68⎤ (6) [ B] × [ A] = ⎢36 45⎥ ⎢⎣24 29⎥⎦ (7) [G] × [C] = 56 (8) [C ]T = ⎣2 6 1⎦ ⎡5 (9) [ D] = ⎢⎢4 3 ⎢⎣6 T 7.2311 0. f12 = 0. [E].9501 0.

0618 0.8108 -4.1081 0.-4 3 -7].⎡− 7 3 0 ⎤ ⎧⎪ x1 ⎫⎪ ⎧⎪ 10 ⎫⎪ ⎢ 0 4 7 ⎥ ⎨ x 2 ⎬ = ⎨− 30⎬ ⎣⎢− 4 3 − 7⎦⎥ ⎪⎩ x 3 ⎪⎭ ⎪⎩ 40 ⎪⎭ Here is the MATLAB session: >> A = [-7 3 0.4 ⎡ 23 − 8⎤ [ X ] × [Y ] = ⎢ 55 56 ⎥ ⎢⎣− 17 24 ⎥⎦ 8⎤ ⎡ 12 [ X ] × [ Z ] = ⎢− 30 52⎥ ⎢⎣− 23 2 ⎥⎦ 8⎤ [Y ] × [ Z ] = ⎡ 4 ⎢⎣− 47 34⎥⎦ 16 ⎤ [ Z ] × [Y ] = ⎡ 6 ⎢⎣− 20 32⎥⎦ 7.1892 -0.-30.40].1081 7. >> x = A\b x = -1.0 4 7. >> b = [10.0811 0.1892 -0.7490 >> AT = A' AT = -7 3 0 0 4 7 -4 3 -7 >> AI = inv(A) AI = -0.0811 0.0347 0.0811 0.5 Terms can be combined to yield 71 .1892 0.

-3 3 0 0 0. >> Qc = [50.0. 72 . m=[2.7530 15. 0 -1 -8 11 -2.2055 7.3575 12.6 The mass balances can be written as (Q15 + Q12 )c1 = Q01c 01 − Q31c3 − Q12 c1 + (Q23 + Q24 + Q25 )c 2 =0 − Q23 c 2 + (Q31 + Q34 )c 3 − Q24 c 2 − Q15 c1 = Q03 c 03 − Q34 c3 + Q44 c 4 − Q25 c 2 − Q54 c 5 = 0 + (Q54 + Q55 )c 5 = 0 The parameters can be substituted and the result written in matrix form as 0 − 1 0 0 ⎤ ⎧ c1 ⎫ ⎧ 50 ⎫ ⎡6 0 0 0 ⎥ ⎪⎪c 2 ⎪⎪ ⎪⎪ 0 ⎪⎪ ⎢− 3 3 ⎢ 0 − 1 9 0 0 ⎥ ⎨c3 ⎬ = ⎨160⎬ ⎢ 0 − 1 − 8 11 − 2⎥ ⎪c 4 ⎪ ⎪ 0 ⎪ ⎢⎣− 3 − 1 0 0 4 ⎥⎦ ⎪c ⎪ ⎪⎩ 0 ⎪⎭ ⎩ 5⎭ MATLAB can then be used to solve for the concentrations >> Q = [6 0 -1 0 0. x=K\mg x = 7.3.62 ⎫⎪ ⎡ 20 − 10 − 10 20 − 10⎥ ⎨ x 2 ⎬ = ⎨ 29.-10 20 -10. -3 -1 0 0 4]. mg=m*9.2kx1 − kx 2 = m1 g − kx1 + 2kx 2 − kx3 = m 2 g − kx 2 + kx3 = m3 g Substituting the parameter values 0 ⎤ ⎧⎪ x1 ⎫⎪ ⎧⎪ 19.81.0 -10 10].2. 0 -1 9 0 0.5].0].0.525⎪⎭ A MATLAB session can be used to obtain the solution for the displacements >> >> >> >> K=[20 -10 0.160.43 ⎬ ⎢ ⎢⎣ 0 − 10 10 ⎥⎦ ⎪⎩ x 3 ⎪⎭ ⎪⎩24.

0110 749.866 0 0 -1] >> b = [0 -1000 0 0 0 0]'. 0.5 0 0 0 ⎥ ⎪ V2 ⎪ ⎪ 0 ⎪ ⎢⎣ 0 0 − 0.0566 16. >> A = [0.0191 -866.0000 250.>> c = Q\Qc c = 11. >> F = A\b F = -500. -0. F1 = –500 H2 = 0 7.8 F2 = 433 V2 = 250 F3 = –866 V3 = 750 The problem can be written in matrix form as 1 1 0 0 0 ⎤ ⎧i12 ⎫ ⎧ 0 ⎫ ⎡1 − 1 0 ⎥ ⎪i52 ⎪ ⎪ 0 ⎪ 0 1 ⎢0 − 1 ⎢0 −1 0 0 0 1 ⎥ ⎪⎪i32 ⎪⎪ = ⎪ 0 ⎪ ⎢0 − 1⎥ ⎨i65 ⎬ ⎨ 0 ⎬ 0 0 0 1 ⎢0 10 − 10 − 15 − 5⎥ ⎪i ⎪ ⎪ 0 ⎪ 0 ⎢⎣5 − 10 − 20 0 0 0 ⎥⎦ ⎪⎪i54 ⎪⎪ ⎪⎩200⎪⎭ ⎩ 43 ⎭ MATLAB can then be used to solve for the currents.5094 7.5 0 0 0. 0 0 -0. 0 1 0.866 -1 0 -1 0 0.9983 11. -0.866 0 0.866 0 -0.9890 Therefore.5 ⎡ 0.866 − 1 −1 0 0 0 ⎥ ⎪⎪ F3 ⎪⎪ = ⎪ 0 ⎪ ⎢ − 0 .5 0 0 0 -1 0.5094 11.866 0 0 0.5094 19.5 0 0.866 0 0 0 ⎥ ⎪ F2 ⎪ ⎪− 1000⎪ ⎢ 0 .7 The problem can be written in matrix form as 0 0 0 0 ⎤ ⎧ F1 ⎫ ⎧ 0 ⎫ − 0 .866 0 0 − 1⎥⎦ ⎪⎪ V ⎪⎪ ⎪⎩ 0 ⎪⎭ ⎩ 3⎭ MATLAB can then be used to solve for the forces and reactions. 73 .5 0 0 0 − 1 0 ⎥ ⎨H 2 ⎬ ⎨ 0 ⎬ ⎢ 0 1 0 .0381 -0.5 0 0 0.5 ⎢− 0.0220 433.

>> A = [1 1 1 0 0 0 .(1/m3)*(k3+k4)].1538 -4. >> x = [0.04. >> m1 = 1. &x&2 = 0 . and &x&3 = 0. -(k3/m2).m2 = 1. 74 . -(k2/m1).m3 = 1.6154 -1. >> b = [0 0 0 0 0 200]'.1 m/s2.9. 5 -10 0 -20 0 0]. 0. -(k3/m3). >> i = A\b i = 6.5385 -1. 0 0 0 0 1 -1.5385 7.k4 = 10. -(k2/m2). >> km = [(1/m1)*(k2+k1). 0 0 -1 0 0 1. >> kmx = km*x kmx = 0.03].0. &x&1 = −0.1538 -1.9000 0.k2 = 40. 0 -1 0 1 -1 0.k3 = 40.9 >> k1 = 10.0.0000 -0.0. (1/m2)*(k2+k3). 0 10 -10 0 -15 -5.05.5385 -6.1000 Therefore.

3 (a) The equations can be expressed in a format that is compatible with graphing x2 versus x1: x 2 = 0.5 x1 + 3 x2 = − 1 34 x1 + 6 6 which can be plotted as 10 9 8 7 6 5 4 3 2 1 0 0 2 4 6 8 10 12 Thus.114943x1 + 10 75 . x2 = 5. 8. the effort is much. The solution can be checked by substituting it back into the equations to give 4( 4) − 8(5) = 16 − 40 = −24 4 + 6(5) = 4 + 30 = 34 8.6 can be summarized as Mult/Div 3(n – 1) 2n – 1 5n – 4 Forward elimination Back substitution Total Add/Subtr 2(n – 1) n–1 3n – 3 Total 5(n – 1) 3n – 2 8n – 7 Thus. the solution is x1 = 4.11x1 + 12 x 2 = 0.2 The equations can be expressed in a format that is compatible with graphing x2 versus x1: x 2 = 0. as n increases.1 The flop counts for the tridiagonal algorithm in Fig. 8. much less than for a full matrix solved with Gauss elimination which is proportional to n3.CHAPTER 8 8.

4 This result is relatively low suggesting that the solution is ill-conditioned.86 − 2 17. you would expect that the system would be ill-conditioned (c) The determinant can be computed as − 1.1(400) + 10(60) = 160 ≈ 120 − 2(400) + 17. the graphical solution is not very good.4(60) = 244 ≈ 174 Therefore.which can be plotted as 140 120 100 80 60 40 20 0 0 200 400 600 800 1000 Thus. The solution can be checked by substituting it back into the equations to give − 1. the solution is approximately x1 = 400.14 + 20 = 0. 8.4 (a) The determinant can be evaluated as D = 0⎡ 2 − 1⎤ − (−3) ⎡1 − 1⎤ + 7 ⎡1 2 ⎤ ⎢⎣5 − 2⎥⎦ ⎢⎣− 2 0 ⎥⎦ ⎢⎣5 0 ⎥⎦ D = 0(−2) + 3(5) + 7(−12) = −69 (b) Cramer’s rule 76 .1 10 = −1.2) − 10(−2) = −19. (b) Because the lines have very similar slopes.1(17. x2 = 60.

9855 − 69 = − 101 = 1.2 The solution can then be obtained by back substitution x3 = 4 .913043) = 1. =2 5 x1 − 2 x 2 − 3 x 2 + 7 x3 = 2 4.4 x 2 − x 3 = 2. =2 5 x1 − 2 x 2 x1 + 2 x 2 − x3 = 3 − 3x 2 + 7 x3 = 2 Multiply pivot row 1 by 1/5 and subtract the result from the second row to eliminate the a21 term.2 = 0.463768 −3 77 .6 Multiply pivot row 2 by 2.4638 − 69 = − 63 = 0.6 x2 = 2 − 7(0.913043 4 .6 x3 = 4.9130 − 69 (c) Pivoting is necessary.x1 = x2 = x3 = 2 −3 7 3 2 −1 2 −2 0 − 69 0 2 7 1 3 −1 5 2 0 − 69 0 −3 2 1 2 3 5 −2 2 − 69 = − 68 = 0. so switch the first and third rows.4 x 2 − x 3 = 2.4/(–3) and subtract the result from the third row to eliminate the a32 term.6 − 3x 2 + 7 x3 = 2 Pivoting is necessary so switch the second and third row. =2 5 x1 − 2 x 2 2. =2 5 x1 − 2 x 2 − 3x 2 + 7 x3 = 2 2.

985507 + 2(1.985507 5 (d) − 3(1.913043) = 2 0.5 -2 0].463768) = 2 8.463768) − (0.913043) = 3 5(0.1 10. 78 . 8.5 x 2 = 0.4 The resulting plot indicates that the intersection of the lines is difficult to detect: 22 20 18 16 14 12 10 5 10 15 20 Only when the plot is zoomed is it at all possible to discern that solution seems to lie at about x1 = 14.5 x1 + 9. 8.5 Prob.8600 Prob. >> det(A) ans = 0.6 (a) The equations can be expressed in a format that is compatible with graphing x2 versus x1: x 2 = 0.4: >> A=[0 -3 7.4].51x1 + 9. >> det(A) ans = -69 8.463768) + 7(0.5 and x2 = 10.1 2 -1.463768) = 0.-2 17.3: >> A=[-1.x1 = 2 + 2(1.985507) − 2(1.

0.02) = 0.5 0.52 and subtract the result from the second equation to eliminate the x1 term from the second equation.14.16538 79 .5 + 14.5 x1 − x 2 = −9.5 = 10 0 .04 This result can be substituted into the first equation which can be solved for x1 = − 9.6 14.5 14.7 14.04 x 2 = 0. (c) Because the lines have very similar slopes and the determinant is so small.35 14.5 − 0.45 14.5 − 1 = 0.5(−2) − (−1)(1.02 1.58 The second equation can be solved for x2 = 0.5 0.02 − 2 which is close to zero. you would expect that the system would be ill-conditioned (d) Multiply the first equation by 1.3 9.52 x1 − x 2 = −9.75 10 10.02/0.5 (e) Multiply the first equation by 1.58 = 14.4 14.5 and subtract the result from the second equation to eliminate the x1 term from the second equation.03846 x 2 = −0.25 (b) The determinant can be computed as 0. 0.55 14.02/0.65 14.

351852 x3 = −32.52 x1 = Interpretation: The fact that a slight change in one of the coefficients results in a radically different solution illustrates that this system is very ill-conditioned.5 + 4.11111 Back substitution can then be used to determine the unknowns x3 = − 32.7 x3 = −53.1x3 = −24.5 10 (b) Check: 80 . multiply the first equation by 1/10 and subtract the result from the third equation to eliminate the x1 term from the third equation.16538 = 4.8 x 2 + 5.4 x 2 − x 3 = 27 + 1. 10 x1 + 2 x 2 − x 3 = 27 − 5.4 − 1.3 = −10 0.4) and subtract the result from the third equation to eliminate the x2 term from the third equation.4 0.4 x 2 + 1. Then.2 Multiply the second equation by 0.11111 = −6 5.8/(–5.4 x1 = ( 27 − 6 − 2(8)) = 0.3 − 0.7(−6)) =8 − 5 .351852 x2 = (−53. 8.7 (a) Multiply the first equation by –3/10 and subtract the result from the second equation to eliminate the x1 term from the second equation.4 5.7 x3 = −53.03846 This result can be substituted into the first equation which can be solved for − 9.The second equation can be solved for x2 = − 0. 10 x1 + 2 x 2 − 5.

5 8.21739 = −2 8.75 x 2 − 2 x 3 = −20 − 1.75 x3 = −26. so switch the first and third rows.75) and subtract the result from the third row to eliminate the a32 term.75 x3 = −26.5 − 5.5 x 3 = −43 − 1.5 x 3 = −43 Pivoting is necessary so switch the second and third row.375 x 2 + 7.5 Multiply pivot row 2 by –1.75 x 2 − 1.5 + 8 + 5(−6) = −21.375/(–5. − 8 x1 + x2 − 5.108696 x3 = −16.5) − 6(8) + 2(−6) = −61.375 x 2 + 7.5 x3 = −43 8.5 0.75 81 .5) + 2(8) − (−6) = 27 − 3(0. − 8 x1 + x2 − 2 x3 = −20 − 1.8 (a) Pivoting is necessary.21739 The solution can then be obtained by back substitution x3 = − 16. − 8 x1 + x2 − 2 x3 = −20 − 5.108696 x2 = − 43 + 1.75 x 2 − 1. Then. − 8 x1 + x 2 − 2 x3 = −20 − 3 x1 − x 2 + 7 x3 = −34 2 x1 − 6 x 2 − x3 = −38 Multiply the first equation by –3/(–8) and subtract the result from the second equation to eliminate the a21 term from the second equation.10(0.5(−2) =8 − 5. multiply the first equation by 2/(–8) and subtract the result from the third equation to eliminate the a31 term from the third equation.

4 0.4)253.8 and subtract the result from the second equation to eliminate the x1 term from the second equation.75) = 105 8.75 0 .5 ⎬ ⎢ 0.75) = 25 − 0.6 and subtract the result from the third row to eliminate the x2 term.6 − 0.4(253.533333 x2 = 45.4 ⎤ ⎧ x1 ⎫ ⎧ 41 ⎫ ⎪ ⎪ ⎪ ⎪ ⎢ 0.9 Multiply the first equation by –0.8(245) − 0.8(173.75 = 245 0 .8 − 0.3333 = 253.x1 = − 20 + 2(−2) − 1(8) =4 −8 (b) Check: 2(4) − 6(8) − (−2) = −38 − 3(4) − (8) + 7(−2) = −34 − 8(4) + (8) − 2(−2) = −20 8.75) − 0.75) + 0.8(253.6 − 0.4 ⎥ ⎨ x 2 ⎬ = ⎨ 45.533333⎥⎦ ⎪⎩ x3 ⎪⎭ ⎪⎩135.4(245) + 0.4⎥ ⎨ x 2 ⎬ = ⎨45.4/0.8 − 0.10 The mass balances can be written as 82 .6 x1 = 41 − (−0.4/0.4)245 = 173.4 ⎤ ⎧ x1 ⎫ ⎧ 41 ⎫ ⎪ ⎪ ⎪ ⎪ ⎢ 0.8 ⎥⎦ ⎪⎩ x3 ⎪⎭ ⎪⎩ 105 ⎪⎭ ⎣ Multiply pivot row 2 by –0.8 (b) Check: 0.4(245) = 41 − 0.75 0. ⎡0.3333⎪⎭ ⎣ The solution can then be obtained by back substitution x3 = 135.5⎬ ⎢ − 0.5 − ( −0. ⎡0.4(173.

15 x3 = 5000 0.5]. MATLAB can be used to solve this system of equations for >> A=[0. >> c = a\b c = 4.0000 4. >> b = [400 0 200]'. >> x=A\b x = 1.25 x 2 + 0.38 x1 + 0.0000 4. >> b=[6000. 4400 and 7600 m3 from pits 1.0.-80 80 0. fine gravel and coarse gravel can be written as 0.0000 8.3 0.11 Equations for the amount of sand.15.30 x1 + 0.0.35 0.0000 5.35 x 2 + 0.-40 -60 120].6000 Therefore. 83 .50 x 3 = 8000 where xi = the amount of gravel taken from pit i.40 x 2 + 0.25 0.0e+003 * 7.32 0. we take 7000.38 0.4000 7.32 x1 + 0.Q21c 2 + 400 = Q12 c1 + Q13 c1 Q12 c1 = Q21c 2 + Q23 c 2 Q13 c1 + Q23 c 2 = Q33 c 3 + 200 or collecting terms (Q12 + Q13 )c1 − Q21c 2 − Q12 c1 + (Q21 + Q23 )c 2 − Q13 c1 = 400 =0 − Q23 c 2 + Q33 c3 = 200 Substituting the values for the flows and expressing in matrix form ⎡ 120 − 20 0 ⎤ ⎧⎪ c1 ⎫⎪ ⎧⎪400⎫⎪ 0 ⎥ ⎨c 2 ⎬ = ⎨ 0 ⎬ ⎢ − 80 80 ⎢⎣− 40 − 60 120⎥⎦ ⎪⎩c 3 ⎪⎭ ⎪⎩200⎪⎭ A solution can be obtained with MATLAB as >> A = [120 -20 0.4 0.5000.35.8000]. 2 and 3 respectively.35 x 3 = 6000 0.

7866 67. 2 − 1 0 ⎢ ⎥ ⎪T2 ⎪ ⎪ 4 ⎪ ⎢ 0 − 1 2.2T3 − T4 = 4 − T3 + 2.12 Substituting the parameter values the heat-balance equations can be written for the four nodes as − 40 + 2.-1 2.2T2 − T3 = 4 − T2 + 2.2 -1.0 -1 2.2 − 1 0 − 1 2 .7306 94.2T4 − 200 = 4 Collecting terms and expressing in matrix form 0 ⎤ ⎧T1 ⎫ ⎧ 44 ⎫ ⎡2.2⎥⎦ ⎪T ⎪ ⎪⎩204⎪⎭ ⎩ 4⎭ The solution can be obtained with MATLAB as >> A=[2.2 -1 0.2] >> b=[44 4 4 204]' >> T=A\b T = 50.5548 84 .8.2206 135.2 − 1⎥ ⎨T3 ⎬ = ⎨ 4 ⎬ ⎢⎣ 0 0 − 1 2.0 0 -1 2.2T1 − T2 = 4 − T1 + 2.2 -1 0 0.

for every iteration of the inner loop. . The major difference is that the elimination is only implemented for the left-hand side coefficients. k . .1 The flop counts for LU decomposition can be determined in a similar fashion as was done for Gauss elimination.14) yields ∑ [n n −1 2 ] − 2nk + k 2 = k =1 n3 n2 n − + 3 2 6 A similar analysis for the multiplication/division flops yields n −1 ∑ (n − k )(n + 1 − k ) = k =1 [n 3 ] [ n3 n − 3 3 ] 3 ⎤ n ⎡1 + O(n 2 ) + O ( n 2 ) − n 3 + O ( n) + ⎢ n 3 + O ( n 2 ) ⎥ = ⎦ 3 ⎣3 Summing these results gives 2n 3 n 2 n − − 3 2 6 For forward substitution. n Addition/Subtraction flops (n – 1)(n – 1) (n – 2)(n – 2) Multiplication/Division flops (n – 1)n (n – 2)(n – 1) (n – k)(n – k) (n – k)(n + 1 – k) (1)(1) (1)(2) Therefore. . Thus. the total addition/subtraction flops for elimination can be computed as n −1 ∑ (n − k )(n − k ) = k =1 ∑ [n n −1 2 − 2nk + k 2 ] k =1 Applying some of the relationships from Eq. the numbers of multiplications and subtractions are the same and equal to 85 . (8. . n–1 Inner Loop i 2. . n 3. The computations can be summarized as Outer Loop k 1 2 . . there are n multiplications/divisions and n – 1 addition/subtractions. n. n . n . k + 1. .CHAPTER 9 9. .

1 and subtract the result from the third row to eliminate the a31 term.3 (9.8) The matrix to be evaluated is ⎡ 10 2 − 1⎤ ⎢− 3 − 6 2 ⎥ ⎢⎣ 1 1 5 ⎥⎦ Multiply the first row by f21 = –3/10 = –0. Eq. (9.8) [ L]{d } = {b} 9.6) Matrix multiplication is distributive.2 Equation (9. The result is 86 . The entire number of flops can be summarized as Mult/Div Forward elimination 3 n n − 3 3 n2 n − 2 2 n2 n + 2 2 Forward substitution Back substitution Total n3 n + n2 − 3 3 Add/Subtr 3 2 n n − 3 2 2 n − 2 n2 − 2 n3 n2 + 3 2 + n 6 n 2 n 2 − Total 3 2n n2 n − − 3 2 6 n2 − n n2 5n 6 2n 3 3n 2 7 n + − 3 2 6 The total number of flops is identical to that obtained with standard Gauss elimination.n −1 ∑i = i =1 (n − 1) n n 2 n = − 2 2 2 Back substitution is the same as for Gauss elimination: n2/2 – n/2 subtractions and n2/2 + n/2 multiplications/divisions. multiply the first row by f31 = 1/10 = 0. 9.7) Equating the constant terms yields Eq. (9.3 and subtract the result from the second row to eliminate the a21 term.6) is [ L]{[U ]{x} − {d }} = [ A]{x} − {b} (9.7) follows [ L][U ] = [ A] (9. Then. [ L][U ]{x} = [ A]{x} and. so the left-hand side can be rewritten as [ L][U ]{x} − [ L]{d } = [ A]{x} − {b} Equating the terms that are multiplied by {x} yields. therefore.

0000 5.4) = –0.4 2.0000 9.8/(–5.3 1 0⎥ ⎨− 61.5 − 0.11111 Back substitution: 87 .1⎥⎦ Multiply the second row by f32 = 0.5⎬ ⎢⎣ 0.5 + 0.0000 -6. 2 −1 ⎤ ⎡10 1.148148 1].1 − 0.148148 and subtract the result from the third row to eliminate the a32 term.148148 1⎥⎦ ⎢⎣ 0 0 5.3 1 0.0000 -3.0000 The LU decomposition can be computed as 0 0⎤ ⎡10 2 −1 ⎤ ⎡ 1 [ L]{U ] = ⎢− 0.0 0 5.0 -5.1(27) − (−0.8 5.1 -0.0000 1.351852].4 1.7.148148 1⎥⎦ ⎪⎩− 21.0000 -1.351852⎥⎦ Forward substitution: 0 0⎤ ⎧⎪ 27 ⎫⎪ ⎡ 1 {d } = ⎢− 0.4 ⎢⎣ 0 0 5.7 ⎥ ⎢⎣ 0 0.148148 1⎥⎦ ⎢⎣ 0 0 5.0.4) = −32.3(27) = −53.0000 2.4 1. >> L = [1 0 0.4 d 3 = −21.-0. >> U = [10 2 -1.5⎪⎭ d1 = 27 d 2 = −61.4 1.351852⎥⎦ Multiplying [L] and [U] yields the original matrix as verified by the following MATLAB session.4 1.2 − 1⎤ ⎡10 ⎢ 0 − 5. the LU decomposition is 0 0⎤ ⎡10 2 −1 ⎤ ⎡ 1 [ L]{U ] = ⎢− 0.1 − 0.3 1 0 ⎥ ⎢ 0 − 5 .148148)(−53. >> A = L*U A = 10.351852⎥⎦ Therefore.1 − 0.7 ⎥ ⎢⎣ 0.7 ⎥ ⎢ 0 − 5 .0000 1.7 ⎥ ⎢⎣ 0.3 1 0 ⎥ ⎢ 0 − 5 .

972318 10 The system can be written in matrix form as ⎡ 2 − 6 − 1⎤ [ A] = ⎢− 3 − 1 7 ⎥ ⎢⎣− 8 1 − 2⎥⎦ ⎧⎪ − 38⎫⎪ {b} = ⎨− 34 ⎬ ⎪⎩− 20⎪⎭ Partial pivot: 88 .6 − 1. forward substitution is implemented as 0 0⎤ ⎧⎪ 12 ⎫⎪ ⎡ 1 {d } = ⎢− 0.351852⎦⎥ ⎪⎩ − 4 ⎪⎭ ⎣⎢ 0 9.4 1.7(−0.1 − 0.6 d 3 = −6 − 0.351852 x2 = 21.5 ⎬ ⎢⎣ 0 0 5.6⎬ 0 5.3(12) = 21.747405 5.7 ⎥ ⎨ x 2 ⎬ = ⎨ − 53.11111⎪⎭ x3 = − 32.351852 x2 = − 53.4 x1 = 12 − 2( −4.747405) = 1.11111 = −6 5.3 1 0⎥ ⎨ 18 ⎬ ⎣⎢ 0.4 1.5 x3 = −4 = −0.747405) = −4.2 − 1 ⎤ ⎧⎪ x1 ⎫⎪ ⎧⎪ 27 ⎡10 ⎫⎪ {x} = ⎢ 0 − 5.351852⎥⎦ ⎪⎩ x3 ⎪⎭ ⎪⎩− 32.148148 1⎥⎦ ⎪⎩− 6⎭⎪ d1 = 12 d 2 = 18 + 0.235294) − (−1)(−0.4 − 1.235294 − 5.7 ⎥ ⎨21.1(12) − (−0.5 10 For the alternative right-hand-side vector.148148)(18) = −4 Back substitution: 2 − 1 ⎤ ⎧⎪ 12 ⎫⎪ ⎡10 {x} = ⎢ 0 − 5.7( −6) =8 − 5 .4 x1 = 27 − 2(8) − (−1)(−6) = 0.

108696 ⎥⎦ Therefore.375 Forward eliminate f32 = −1.75 − 1.⎡− 8 1 − 2 ⎤ [ A] = ⎢− 3 − 1 7 ⎥ ⎢⎣ 2 − 6 − 1 ⎥⎦ ⎧⎪− 20⎫⎪ {b} = ⎨− 34 ⎬ ⎪⎩− 38⎪⎭ Forward eliminate f21 = −3/(−8) = 0.75 ⎥ ⎢⎣ 0 − 5.5 ⎥ ⎢⎣ 0 0 8.375 0. the LU decomposition is 0 0⎤ ⎡ − 8 1 −2 ⎤ ⎡ 1 [ L]{U ] = ⎢− 0.375 0.25 ⎡− 8 1 −2 ⎤ [ A] = ⎢ 0 − 1.23913 ⎡− 8 1 −2 ⎤ [ A] = ⎢ 0 − 5.23913(−43) = −16.25 ⎧⎪− 20⎫⎪ {b} = ⎨− 38⎬ ⎪⎩− 34 ⎪⎭ f31 = 0.23913 1⎦⎥ ⎢⎣ 0 Forward elimination 0 0⎤ ⎧⎪− 20⎫⎪ ⎡ 1 {d } = ⎢− 0.5 ⎥ ⎢⎣ 0 − 1.375 7.75 − 1 .5 ⎥ 0 8.375/(−5.375(−20) − 0.375 7.25 1 0⎥ ⎨ − 38⎬ ⎢⎣ 0.75 − 1.5 ⎥⎦ Pivot again ⎡− 8 1 −2 ⎤ [ A] = ⎢ 0 − 5.108696⎦⎥ ⎣⎢ 0.25 1 0⎥ ⎢ 0 − 5.75 ⎥⎦ f21 = −0.23913 1⎥⎦ ⎪⎩− 34 ⎪⎭ d1 = −20 d 2 = −38 − (−0.25)(−20) = −43 d 3 = −34 − 0.75 − 1.21739 Back substitution: 89 .75) = 0.375 f31 = 2/(−8) = −0.

-3 -6 2.k)/U(k.k+1:n) = U(i.108696⎦⎥ ⎪⎩ x3 ⎪⎭ ⎪⎩− 16. U] = LUNaive(A) % LUNaive(A): % LU decomposition without pivoting.4000 0 -1.k) = 0.75 0 8.k).0000 0 0 2.0000 1. U(i.k) = U(i.75 x1 = − 20 − 1(8) − (−2)(−2) =4 −8 Here is an M-file to generate the LU decomposition without pivoting function [L. 9.5)(−2) =8 − 5.U] = LUnaive(A) L = 1.6 x3 = − 16.k+1:n)-L(i.1 1 5]. end end Test with Prob.1 − 2 ⎤ ⎧⎪ x1 ⎫⎪ ⎧⎪ − 20 ⎫⎪ ⎡− 8 − 1. % forward elimination for k = 1:n-1 for i = k+1:n L(i. U(i.0000 -0. end L = eye(n).0000 U = 10.k)*U(k.n] = size(A).3000 0.21739 = −2 8.0000 -5.5 ⎥ ⎨ x 2 ⎬ = ⎨ − 43 ⎬ ⎢ 0 − 5.108696 x2 = − 43 − (−1.1000 0 1. error('Matrix A must be square').k+1:n). % input: % A = coefficient matrix % output: % L = lower triangular matrix % U = upper triangular matrix [m.7000 5.3 >> A = [10 2 -1. U = A. >> [L.3519 90 .21739⎪⎭ ⎣⎢ 0 9.0000 -0. if m~=n.1481 0 0 1.

123724 × 2.00002 a 32 = 6.123724 × 22.0000 -1.0002 91 .0000 1.1481 0 0 1.45366 = 55.110101⎥⎦ ⎣ ⎦⎣ The multiplication can be implemented as in a11 = 2.1833 = 225 a 31 = 2.45366 + 4. >> L*U ans = 10.110101⎥ ⎢ 6 .44949 × 22.44949 6.14) to give ⎡ 2.0000 -5.44949 = 55.9165 ⎥ ⎢22. (9.00002 a 21 = 2.45366 × 6.0000 Check using the lu function.9165 6.0000 1.45366⎤ ⎥⎢ [ A] = [U ]T [U ] = ⎢6.123724 2 + 20.3000 0.45366 20.44949 2 = 6.3519 The result of Example 9.123724 = 15 a 22 = 6.99999 a 22 = 22.0000 U = 10.123724 2 + 4.1833 4.0000 2.7000 5.9165 2 + 6.44949 = 15 a13 = 22.000001 a12 = 6.9165 = 225 a 33 = 22.0000 5.0000 2.1000 0 1. >> [L.123724 22.4 can be substituted into Eq.45366 × 2.44949 × 6.44949 ⎤ ⎡2.0000 0 0 2.4000 0 -1.1101012 = 979.45366 2 + 20.Verification that [L][U] = [A].1833 2 = 54.9165 × 4.U]=lu(A) L = 9.7 1.0000 -0.0000 -3.0000 1.123724 4.1833 × 20.1833 20.0000 -0.0000 -6.

9.15 50 60].14) to see if their product yields the original matrix [A].8 (a) For the first row (i = 1).303301) = = 2.071068 5.071068) 2 = 5.4772 0 5.16) can be used to determine u12 = a12 20 = = 7. (9.1640 (c) The solution can be obtained by hand or by MATLAB.303301 u11 2.828427 For the second row (i = 2).477226 For the third row (i = 3).477226 u 23 = a 23 − u12 u13 50 − 7. (9.2822 5.282177) 2 = 5. Using MATLAB: >> b = [50.303301) 2 − (2.0711 5. the Cholesky decomposition yields ⎡2. Eq.071068(5.282177 ⎥ ⎢ 5.477226 2.163978 Thus.163978 ⎥⎦ ⎣ The validity of this decomposition can be verified by substituting it and its transpose into Eq.20 80 50. Eq. >> U = chol(A) U = 2. This is left for an exercise.282177 u 22 5. 2 2 u 33 = a 33 − u13 − u 23 = 60 − (5.071068 u11 2.303301⎤ [U ] = ⎢ 5.15) is employed to compute u11 = a11 = 8 = 2. (9.828427 Then.100].828427 u13 = a13 15 = = 5.8284 0 0 7. (b) >> A = [8 20 15.250. >> d=U'\b d = 92 .828427 7.3033 2. 2 u 22 = a 22 − u12 = 80 − (7.

for k = 1:i-1 s = s + U(k.7187 9.8 >> A = [8 20 15.15 50 60].0711 5.7344 4. end end Test with Prob. error('Matrix A must be square'). i) ^ 2.8828 -1.6777 22.4772 0 5.3033 2.9 Here is an M-file to generate the Cholesky decomposition without pivoting function U = cholesky(A) % cholesky(A): % cholesky decomposition without pivoting.0711 5.s) / U(i.8756 >> x=U\d x = -2. if m~=n. i) . j).8218 -8. >> cholesky(A) ans = 2. % input: % A = coefficient matrix % output: % U = upper triangular matrix [m.20 80 50. i). for k = 1:i-1 s = s + U(k. i) * U(k. end U(i.s).n] = size(A).2822 5.1640 Check with the chol function >> U = chol(A) U = 2. end for i = 1:n s = 0.8284 0 0 7. j) .2822 5. i) = sqrt(A(i. j) = (A(i.8284 0 0 7.1640 93 .4772 0 5.17.3033 2. for j = i + 1:n s = 0. end U(i. 9.

Thus.4) = –0.1 − 0.055556⎪⎭ which can be solved by back substitution for the first column of the matrix inverse.1 First.7 ⎥ ⎢⎣ 0.4 1.4 1.3 and subtract the result from the second row to eliminate the a21 term. multiply the first row by f31 = 1/10 = 0.3 − 0.8 5.CHAPTER 10 10.4 ⎢⎣ 0 0 5. 0 0⎤ ⎧⎪ d1 ⎫⎪ ⎧⎪1⎫⎪ ⎡ 1 1 0⎥ ⎨d 2 ⎬ = ⎨0⎬ ⎢− 0.1 − 0.7 ⎥ ⎢⎣ 0 0.055556⎦ . compute the LU decomposition The matrix to be evaluated is ⎡ 10 2 − 1⎤ ⎢− 3 − 6 2 ⎥ ⎢⎣ 1 1 5 ⎥⎦ Multiply the first row by f21 = –3/10 = –0.4 1. This vector can then be used as the right-hand side of the upper triangular system. 94 .3 5 .3 ⎢⎣ 0. the lower-triangular system.7 ⎥ ⎨ x 2 ⎬ = ⎨ ⎢0 ⎬ ⎢⎣ 0 0 5.3 1 0 ⎥ ⎢ 0 − 5 .148148 1⎥⎦ ⎢⎣ 0 0 5. 2 −1 ⎤ ⎡10 1.148148 and subtract the result from the third row to eliminate the a32 term.7 ⎥ ⎢ 0 − 5 .351852⎥⎦ Therefore.8/(–5.351852⎥⎦ The first column of the matrix inverse can be determined by performing the forwardsubstitution solution procedure with a unit vector (with 1 in the first row) as the right-handside vector. can be set up as.1⎥⎦ Multiply the second row by f32 = 0. Then. the LU decomposition is −1 ⎤ 0 0⎤ ⎡10 2 ⎡ 1 [ L]{U ] = ⎢− 0.351852⎥⎦ ⎪⎩ x3 ⎪⎭ ⎪⎩− 0.1 and subtract the result from the third row to eliminate the a31 term. The result is 2 − 1⎤ ⎡10 ⎢ 0 − 5.148148 1⎥⎦ ⎪⎩ d 3 ⎪⎭ ⎩⎪0⎪⎭ and solved with forward substitution for {d}T = ⎣1 0. − 1 ⎤ ⎧⎪ x1 ⎫⎪ ⎧⎪ 1 2 ⎡10 ⎫⎪ − 0 .

2 The system can be written in matrix form as ⎡− 8 1 − 2 ⎤ [ A] = ⎢ 2 − 6 − 1 ⎥ ⎢⎣− 3 − 1 7 ⎥⎦ ⎧⎪ − 38⎫⎪ {b} = ⎨− 34 ⎬ ⎪⎩− 20⎪⎭ Forward eliminate f21 = 2/(−8) = −0.010381 0 0⎥⎦ To determine the second column.110727 [ A] −1 = ⎢− 0. (9.1 − 0.110727 0 0⎤ [ A] −1 = ⎢− 0.058824 -0.058824 − 0.176471 0⎥ ⎢⎣ − 0.25 f31 = −3/(−8) = 0.058824.0000 -0. -0.148148⎦ .027682 0. -0. Eq.0000 0.1 1 5].0000 10.0000 1.010381 0.0000 0.186851⎦⎥ This result can be checked by multiplying it times the original matrix to give the identity matrix.375 95 .-3 -6 2.038062 0.148148 1⎥⎦ ⎪⎩ d 3 ⎪⎭ ⎪⎩0⎪⎭ This can be solved with forward substitution for {d}T = ⎣0 1 0. 0. The following MATLAB session can be used to implement this check.058824⎥ ⎣⎢ − 0. and the results are used with [U] to determine {x} by back substitution to generate the third column of the matrix inverse.0000 -0.027682 0.058824 − 0. >> AI = [0.176471 0.110727 [ A] −1 = ⎢− 0.058824 0 0⎥ ⎢⎣ − 0.⎡ 0.038062 0.3 ⎢⎣ 0.0000 -0.8) is formulated as 0 0⎤ ⎧⎪ d1 ⎫⎪ ⎧⎪0⎫⎪ ⎡ 1 1 0⎥ ⎨d 2 ⎬ = ⎨1⎬ ⎢− 0.010381 0.00692. 0.027682 0⎥⎦ Finally.110727 0. the same procedures can be implemented with {b}T = ⎣0 0 1⎦ to solve for {d}T = ⎣0 0 1⎦ . >> A*AI ans = 1. >> A = [10 2 -1. and the results are used with [U] to determine {x} by back substitution to generate the second column of the matrix inverse.010381 0.0000 1.038062 0⎤ ⎡ 0.176471 0.0000 -0.00692 ⎤ ⎡ 0.186851].

the lower-triangular system.8) is formulated as 0 0⎤ ⎧⎪ d 1 ⎫⎪ ⎧⎪0⎫⎪ ⎡ 1 1 0⎥ ⎨d 2 ⎬ = ⎨1⎬ ⎢− 0.75 ⎥⎦ Forward eliminate f32 = −1.029491 0 0⎥ ⎢⎣− 0.25 ⎬ ⎢ 0 − 5. the LU decomposition is −2 ⎤ 0 0⎤ ⎡ − 8 1 ⎡ 1 − 1. (9.434783⎪⎭ which can be solved by back substitution for the first column of the matrix inverse. 1 − 2 ⎤ ⎧⎪ x1 ⎫⎪ ⎧⎪ 1 ⎡− 8 ⎫⎪ − 1.23913⎦ . Eq.5 ⎥ ⎢⎣ 0 0 8.5 ⎥ [ A] = ⎢ 0 ⎢⎣ 0 − 1.375/(−5.5 ⎥ [ L]{U ] = ⎢− 0.75) = 0.75 − 1.375 0.75 ⎢⎣ 0.375 0.108696 ⎥⎦ Therefore.0.25 − 0. Thus. 0 0⎤ ⎧⎪ d 1 ⎫⎪ ⎧⎪1⎫⎪ ⎡ 1 1 0⎥ ⎨d 2 ⎬ = ⎨0⎬ ⎢− 0.108696⎥⎦ The first column of the matrix inverse can be determined by performing the forwardsubstitution solution procedure with a unit vector (with 1 in the first row) as the right-handside vector. 96 .75 ⎢⎣ 0 0 8. can be set up as.434783⎦ .5 ⎥ ⎨ x 2 ⎬ = ⎨ 0.053619 0 0⎥⎦ To determine the second column.375 7.25 ⎢⎣ 0.25 1 0⎥ ⎢ 0 − 5. and the results are used with [U] to determine {x} by back substitution to generate the second column of the matrix inverse.375 0.115282 0 0⎤ [ A] −1 = ⎢ − 0.23913 1⎥⎦ ⎪⎩ d 3 ⎪⎭ ⎪⎩0⎭⎪ and solved with forward substitution for {d}T = ⎣1 0.23913 ⎡− 8 1 −2 ⎤ [ A] = ⎢ 0 − 5.23913 1⎥⎦ ⎪⎩ d 3 ⎪⎭ ⎪⎩0⎪⎭ This can be solved with forward substitution for {d}T = ⎣0 1 − 0. This vector can then be used as the right-hand side of the upper triangular system.108696⎥⎦ ⎪⎩ x3 ⎪⎭ ⎪⎩− 0. ⎡ .75 − 1.⎡− 8 −2 ⎤ 1 − 5.23913 1⎥⎦ ⎢⎣ 0 0 8.25 ⎢⎣ 0.

0124352.9534 + 2. the same procedures can be implemented with {b}T = ⎣0 0 1⎦ to solve for {d}T = ⎣0 0 1⎦ . the increase in the mass input to reactor 3 needed to element a13 induce a 10 g/m3 rise in the concentration of reactor 1 can be computed as ∆b3 = g 10 = 804.053619 − 0.01278065630397 0.0124352 d (d) The decrease in the concentration of the third reactor will be ∆c 3 = 0.032172⎥ ⎣⎢− 0.123324 ⎦⎥ 10.02072538860104 0.5026 (c) The impact of a load to reactor 3 on the concentration of reactor 1 is specified by the −1 = 0. ⎡ . >> format short >> c = AI*b c = 320.0.-3 18 -6. >> format long >> AI = inv(A) AI = 0.029491 0.034853⎤ [ A] −1 = ⎢ − 0.2021 321.115282 − 0. Therefore.0.4 The mass balances can be written and the result written in matrix form as 97 .029491 − 0.029491 − 0.16622 0⎥ ⎢⎣− 0.009326(250) = 12.029491 0⎥⎦ Finally.09015544041451 (b) >> b = [3800 1200 2350]'. (a) >> A = [15 -3 -1.285 g m3 10.03212435233161 0.013405 − 0.1667 0.00932642487047 0.0259067(500) + 0.⎡ .02590673575130 0.16622 − 0.3316 = 15.06079447322971 0.3 The following solution is generated with MATLAB.01243523316062 0. and the results are used with [U] to determine {x} by back substitution to generate the third column of the matrix inverse.013405 0⎤ [ A] −1 = ⎢ − 0.07253886010363 0.053619 − 0.115282 − 0.-4 -1 12].2073 227.

2500 The concentration in reactor 5 can be computed using the elements of the matrix inverse as in.7500 0 0 0 -1. >> inv(Q) ans = 0.0000 0 98 0 1.5 0 0 0 ⎥⎪ V ⎪ ⎪F ⎪ ⎢⎣ 0 0 − 0.-3 3 0 0 0.0 − 1 0 0 ⎤ ⎧ c1 ⎫ ⎧Q01c 01 ⎫ ⎡6 0 0 0 ⎥ ⎪⎪c 2 ⎪⎪ ⎪⎪ 0 ⎪⎪ ⎢− 3 3 ⎢ 0 − 1 9 0 0 ⎥ ⎨c 3 ⎬ = ⎨Q03 c 03 ⎬ ⎢ 0 − 1 − 8 11 − 2⎥ ⎪c 4 ⎪ ⎪ 0 ⎪ ⎢⎣− 3 − 1 0 0 4 ⎥⎦ ⎪c ⎪ ⎪ 0 ⎪ ⎭ ⎩ 5⎭ ⎩ MATLAB can then be used to determine the matrix inverse >> Q = [6 0 -1 0 0.866 0 0 − 1⎥⎦ ⎪⎪ V2 ⎪⎪ ⎪ 3.-3 -1 0 0 4].0909 0 0 0 0 0.0 -1 -8 11 -2. 0 0 -0.5 0 0.981 + 7.5 ⎪ ⎪ ⎢− 0.4330 0.0189 0.v ⎬ ⎢ 0 1 0.0000 0 0 0 0 0 0 -1.0189 0 0 0 0.4330 0.866 0 0 -1].0000 0 -1.5 0 0 0. -0.528 10.866 − 1 −1 0 0 0 ⎥ ⎪⎪ F3 ⎪⎪ = ⎪ F2.866 0 -0.v ⎪⎭ MATLAB can then be used to solve for the matrix inverse.4330 0. -0.5000 -1. >> A = [0.8660 0.547 = 24.2500 -0. h ⎫ − 0.0063 0.0896 0.5 0 0 0 − 1 0 ⎥ ⎨ H 2 ⎬ ⎨ F2.0189(8)50 = 16.8660 0.1698 0.0189 0. h ⎪ ⎢ − 0 .866 -1 0 -1 0 0.0000 -0.3396 0.866 0 0 0 ⎥ F2 ⎢ 0 . 0.1698 0.2500 -0.5 The problem can be written in matrix form as ⎧ F1. 0 1 0.866 0 0 0.0 -1 9 0 0.0377 0.866 F1.5 0 0 0 0 ⎤ ⎧ F1 ⎫ ⎪ ⎡ 0.0000 0 0 0 0 0 0 0 -1.v ⎪ ⎪ ⎪ 0 0.h ⎪ ⎩ 3 ⎭ ⎪⎩ F3.5 0 0 0 -1 0.0746 0.0600 0. −1 −1 c5 = a 51 Q01c 01 + a 53 Q03 c 03 = 0.1698 0.0455 0. >> AI = inv(A) AI = 0.1698(5)20 + 0.0000 .0875 0.5 0 0 0.0189 0.1132 0.0000 -0.5000 -0.

5(−2000) + 0(−500) = −1000 + 0 = −1000 −1 −1 F2 = a 22 F1.1) ans = 2.0667 1.2 -6 -1.The forces in the members resulting from the two forces can be computed using the elements of the matrix inverse as in.866(−2000) + 0(−500) = −1732 + 0 = −1732 10.3: >> A = [15 -3 -1. h = 0.1111 -0.-3 18 -6.4000 MATLAB can then be used to determine each of the norms. >> norm(A.v + a 35 F3.3333 0.h = 0.1 1/(-9) 3/(-9).9920 >> norm(A.433(−2000) + 1(−500) = 866 − 500 = 366 −1 −1 F3 = a 32 F1.-3 -1 7].'fro') ans = 13 >> norm(A.7 Prob.v + a15 F3.inf) ans = 2 10.'fro') ans = 1. −1 −1 F1 = a12 F1. >> norm(A.-4 -1 12] 99 .2: >> A = [-8 1 -2. 10.1 -1/15 6/15] A = -0.0000 -0.2000 -0.0000 1.8000 >> norm(A. 10.8000 1.6 The matrix can be scaled by dividing each row by the element with the largest absolute value >> A = [8/(-10) 2/(-10) 1.v + a 25 F3.inf) ans = 11 Prob.h = −0.0000 -0.

inf) Warning: Matrix is close to singular or badly scaled.0667 ⎤ − 1 . >> cond(A.inf) ans = 27 10.9 (a) The matrix to be evaluated is ⎡16 4 1⎤ ⎢ 4 2 1⎥ ⎢⎣49 7 1⎥⎦ The row-sum norm of this matrix is 49 + 7 + 1 = 57.1 − 0 .2922e+018 10.3333⎪ + 2.'fro') ans = 27.4 ⎥ ⎢ 1.1667 0.037487e-019.) > In cond at 45 ans = 3.4 9 16 25.4 2 1. Results may be inaccurate.inf) 100 .6667.8963e+016 (b) Row-sum norm >> cond(A.6667) = 323 This can be verified with MATLAB.8 + 0. >> cond(A) ans = 8. (Type "warning off MATLAB:nearlySingularMatrix" to suppress this warning.16 25 36 49]. Therefore. the condition number is Cond[A] = 57(5. >> A = [16 4 1.1 0.9 16 25 36.5 ⎢⎣ − 2.8 0. The inverse is ⎡− 0.5333⎥⎦ The row-sum norm of the inverse is ⎪-2.3333 2.8 (a) Spectral norm >> A = [1 4 9 16.5333 = 5.49 7 1].6586 >> norm(A.>> norm(A. RCOND = 3.

4843 10.:)).1682 1.:)).:)). sum(A(8.3468 1.:)). sum(A(7.:)). sum(A(9.49 7 1].6025e+013 The digits of precision that could be lost due to ill-conditioning can be calculated as >> c = log10(N) c = 13. >> N = cond(A) N = 1. >> cond(A) ans = 216.10 The spectral condition number can be evaluated as >> A = hilb(10).ans = 323.7188 The solution can then be generated by left division >> x = A\b 101 .0000 (b) Spectral norm: >> A = [16 4 1.6032 1. sum(A(6.1294 Frobenius norm: >> cond(A.'fro') ans = 217.:))] b = 2. sum(A(4.9307 0. about 13 digits could be suspect.9290 2.8467 0. sum(A(2.:)).7773 0.:)).:)).4 2 1.2048 Thus. A right-hand side vector can be developed corresponding to a solution of ones: >> b=[sum(A(1.0349 0. sum(A(5. sum(A(10. sum(A(3.:)).0199 1.

x5^5 x5^4 x5^3 x5^2 x5 1.9995 1.x5=3.8662e-004 Thus.9997 1.x6^5 x6^4 x6^3 x6^2 x6 1] A = 1024 32 16807 100000 243 3125 256 16 2401 10000 81 625 64 8 343 1000 27 125 16 4 49 100 9 25 4 2 7 10 3 5 The spectral condition number can be evaluated as >> N = cond(A) N = 1.x3=7.9999 1. >> A = [x1^5 x1^4 x1^3 x1^2 x1 1.x = 1.0001 The maximum and mean errors can be computed as >> e=max(abs(x-1)) e = 5.0000 0.x2^5 x2^4 x2^3 x2^2 x2 1.11 First. this means that about 11 to 12 digits are suspect.x4=10.x2=2.1611 102 1 1 1 1 1 1 .x3^5 x3^4 x3^3 x3^2 x3 1. the Vandermonde matrix can be set up >> x1 = 4.0000 1.0000 1. 10.3822e-004 >> e=mean(abs(x-1)) e = 1.x4^5 x4^4 x4^3 x4^2 x4 1. some of the results are accurate to only about 3 to 4 significant digits.0005 0.0000 1.x6=5. Because MATLAB represents numbers to 15 significant digits.4492e+007 The digits of precision that could be lost due to ill-conditioning can be calculated as >> c = log10(N) c = 7.0003 0.

:)). this means that about 3 digits are suspect.sum(A(2.00000000000542 0.:))] b = 1365 63 19608 111111 364 3906 The solution can then be generated by left division >> format long >> x=A\b x = 1.sum(A(3.:)).sum(A(5.:)).00000000000075 0.00000000000000 0. about 7 digits might be suspect.:)).:)).99999999999991 1.420774940034789e-012 >> e = mean(abs(x-1)) e = 2. Thus.sum(A(4.154110223528960e-012 Some of the results are accurate to about 12 significant digits.Thus.99999999999630 The maximum and mean errors can be computed as >> e = max(abs(x-1)) e = 5. Because MATLAB represents numbers to about 15 significant digits. sum(A(6. the condition number tends to exaggerate the impact of ill-conditioning. for this case. A right-hand side vector can be developed corresponding to a solution of ones: >> b=[sum(A(1. 103 .99999999999703 1.

00% 35.8 x2 = 25 + 0.9375 0.00% 100.875 × 100% = 62.7188 197.1 = 79.8 0.9375 ε a .8 x3 = 105 + 0.9375 206.6875 − 51.11% 23.8 x3 = 105 + 0.9375 − 56.8 The error estimates can be computed as ε a .4(56.75% 37.6875 0 .4 x 2 105 + 0.6875 79.7188 − 159.4 x1 + 0.875 0.6875 150.7188 126.25) + 0.4(159.00% 62.25 0 .875 159.7188 0.6875 × 100% = 22.875) = 79.6875 ε a.3 = 206.75% 206.4 x 2 41 + 0.9375) = 206.69% 79.4 x3 25 + 0.32% 22.4(51.32% 150.CHAPTER 11 11.4(0) = = 51. The entire computation can be summarized as iteration 1 2 3 unknown x1 x2 x3 x1 x2 x3 x1 x2 value 51.7188 The remainder of the calculation proceeds until all the errors fall below the stopping criterion of 5%.8 x2 = 25 + 0.4(79.6875) = 150.4(150.25 × 100% = 35.875) = = 159.25 56.69% 62.6875 0.4(56.2 = 150.00% 100.9688 εa 100.1 (a) The first iteration can be implemented as x1 = 41 + 0.76% 104 maximum εa 100.8 0.6875) + 0.8 Second iteration: x1 = 41 + 0.8 0 .32% .4(0) = = 56.

84) + 0.8711 239.26% 5.4(62) = 88.86% 7.2(62) − 0.2344 150.24) − 0.4(200. x2 = 239.354 0 .25) − 0.45 0 .5 x2 = 25 + 0.65% 10.9922 161.4 x 2 41 + 0.45) − 0.17% 37.4(0) = = 62 0 .84 x2 = 25 + 0.4(202.50% Thus.37% 3. the maximum error is 3.8 Relaxation yields: x 2 = 1.4 x 3 25 + 0.46% 1.50% 2. First iteration: x1 = 41 + 0.2(74.2(0) = 202.14) = 179. (b) The same computation can be developed with relaxation where λ = 1.8105.8 0.21% 15.2344 221.25 0 .5% and we arrive at the result: x1 = 167.2(61.4(93.2(168.26% 3.8 Relaxation yields: x 3 = 1.4 x 2 105 + 0.2422 247.65% 7.5) = 93. after 6 iterations.4 x1 + 0.8711.4 x3 = 105 + 0.1211 250.8 Relaxation yields: x1 = 1.2(179.4(0) = = 51.2(0) = 61.2(88.8 0 .2.4844 241.45 0.4 5 6 x3 x1 x2 x3 x1 x2 x3 x1 x2 x3 230.8 105 .2(0) = 74.4(62) = = 168.24 0 .5) + 0.4(61.14 Second iteration: x1 = 41 + 0.04% 2.2(51.8 Relaxation yields: x1 = 1.9922 233.208 x3 = 105 + 0.8 0 .45) − 0.8105 10.62% 4.8 Relaxation yields: x 2 = 1.8711 167.11% 15.208) = 231.4) = 200.1211 and x3 = 250.

208 237.5 − x1 − x 2 − 21.839% 42.2( 231.46% 93.997% Thus.7) − 2(0) = 8 .84 ε a.84 − 61.42298 244.379% 4.9 = −6 −6 x3 = − 21.354) − 0.84% 200.7) − 8.9 = −6.1968 − 202.622.00% 100.7 = 10 10 x2 = − 61.1968 The error estimates can be computed as ε a .423.45 88.78% 42.42% maximum εa 100.99528 169.2 = 200.997% and we arrive at the result: x1 = 171.8568 237.6222 εa 100.84 200.99528 243.4 × 100% = 62. After 6 iterations. The entire computation can be summarized as iteration 1 2 3 4 unknown x1 x2 x3 x1 x2 x3 x1 x2 x3 x1 x2 x3 value 51.38866 253.14 93.1 = 93.5 − (2.2768 249.208 ε a .78% 237.00% 2.2 The first iteration can be implemented as x1 = 27 − 2 x 2 + x3 27 − 2(0) + 0 = 2.1968 The remainder of the calculation proceeds until all the errors fall below the stopping criterion of 5%.354 231.45 179.24 231.84% 14.08% 5.354 151.55498 171.46% 62. 11.62 = 5 5 Second iteration: 106 .14) = 237.14 × 100% = 14.00% 34.5 × 100% = 34.208 − 74. x2 = 244.3 = 237.5 + 3(2.70% 6.44433 relaxation 61.1968 162.000% 62.Relaxation yields: x 3 = 1.82% 0.5 + 3x1 − 2 x 3 − 61.25 62 168.23898 253. the maximum error is 4. relaxation speeds up convergence.389 and x3 = 253.00% 100.2(202.49056 252.38% 15.5 74.4 202.

1 = 0.00007.7 × 100% = 947% 0.258 ε a.59% and we arrive at the result: x1 = 0.73% 5.9) − 6.01% 0.19% 1. 11. the maximum error is 0.914333 -5.258) − 2(−6.000112 and x3 = −6.62 = 0.93447 0.01% maximum εa 100% 946% 50.500253.497326 7.3 The first iteration can be implemented as x1 = 27 − 2 x 2 + x3 27 − 2(0) + 0 = 2.2 = 7.934467 The remainder of the calculation proceeds until all the errors fall below the stopping criterion of 5%.51% 12.73% 1.45% 11.258) − 7. x2 = 8.914333 = −5.30% 0.010001 -6.999091 -5.59% 0.62 0.7 = 10 10 107 .000112 -6.00007 εa 100.14% 0.523687 8.3 = − 5.5 + 3(0.00% 946.12% 0.62) = 7. after 5 iterations.00674 0.55% 50.500253 8.914333 −6 x3 = − 21.20% 5.00% 100.99928 0.x1 = 27 − 2(8.45% 7.934467 5 The error estimates can be computed as ε a .914333 − 8.258 10 x2 = − 61.5 − (0.934467 − (−6.9 × 100% = 12.30% 0.258 7.914333 ε a . The entire computation can be summarized as iteration 1 2 3 4 5 unknown x1 x2 x3 x1 x2 x3 x1 x2 x3 x1 x2 x3 x1 x2 x3 value 2.62) × 100% = 11.59% Thus.258 − 2.7 8.55% − 5.00% 100.9 -6.

22 7.5 − 0 − 0 = = −4.9722 0.75% 108 maximum εa 100.045389 -5.2 = 7.x2 = − 61.3 = 0.3) × 100% = 37.5 − ( 2.466667 -6.5 + 3x1 − 2 x 3 − 61.3 0.89 0. The entire computation can be summarized as iteration 1 2 3 4 5 unknown x1 x2 x3 x1 x2 x3 x1 x2 x3 x1 x2 x3 x1 x2 value 2.3 = − 6.22 − 2.59% 57.7 10.28% 7.5 − x1 − x 2 − 21.466667 −6 x3 = − 21.3 5 5 Second iteration: x1 = 27 − 2(10.50% 5.517667 7.89 The remainder of the calculation proceeds until all the errors fall below the stopping criterion of 5%.25 × 100% = 37.59% − 6.89 − ( −4.5 + 3(0) − 2(0) = 10.00% 1127.00% 100.843333 -5.25 = −6 −6 x3 = − 21.25 = −6.00% 100.3) = 7.00% 1127.80% 18.89 5 The error estimates can be computed as ε a .92% 0.1 = 0.7 × 100% = 1127% 0.22 10 x2 = − 61.27% 37.7) − 10.5 + 3(2.25) − 4.258 ε a.47% .03% 5.493702 7.26% 10.28% 37.985467 εa 100.50% 4.5476 8.27% 57.51% 2.83733 0.466667 − 10.466667 ε a .25 -4.47% 2.7) − 2(−4.

68% 212.3519 12 12 Second iteration: c1 = 3800 + 3(108. 11.501047.3519 = 294.4012 ε a.4 The first iteration can be implemented as c1 = 3800 + 3c 2 + c3 3800 + 3(0) + 0 = 253.6491 12 The error estimates can be computed as ε a .3519 εa 100.8889 289.99583.4012 15 c2 = 1200 + 3( 294.00% .1842 18 c3 = 2350 + 4(294.3333 × 100% = 13.3333) + 108.00% 109 maximum εa 100.92% 1.00% 100. the maximum error is 1.15% 311.47% Thus.3333) + 6(0) = = 108.4012 − 253.x3 x1 x2 x3 6 -6.8889 = = 289.00% 100.95% 294. after 6 iterations.1842 ε a .8889 18 18 c3 = 2350 + 4c1 + c 2 2350 + 4(253.47% and we arrive at the result: x1 = 0.2 = 212.8889 × 100% = 48.3519 × 100% = 7.99583 0.14% 0.4012) + 212.6491 − 289.99695 -5.1 = 294.99695 and x3 = −5.3333 = 15 15 c2 = 1200 + 3c1 + 6c 3 1200 + 3(253.77% 1.0186 0.501047 7. x2 = 7.4012) + 6(289.1842 − 108.38% 10.6491 The remainder of the calculation can be summarized as iteration 1 unknown x1 x2 x3 value 253.1842 = 311.47% 0.3519) = 212.3333 108.889) + 289.3 = 311.

0516 227.08631) + ( −2.00% 4.43% 0.155754 = −6 −6 x3 = − 34 + 3x1 + x 2 − 34 + 3( 4.43% 0.166667 + 2(−2.761905) = 8.4388 13.23% 0.2 3 4 5 x1 x2 x3 x1 x2 x3 x1 x2 x3 x1 x2 x3 294.4012 212.09% 48.1842 311.2021 and x3 = 321.68% 7.761905 = 7 7 Second iteration: x1 = − 20 − 7.94076 = 7 7 The error estimates can be computed as 110 .9579 319.23% Note that after several more iterations.1535 320. x2 = 227.08631) + 8.5402 321.3254 226. 11.5468 223.87% 1.95% 48.37% 0.166667 = −6 −6 x3 = − 34 + 3 x1 + x 2 − 34 + 3(2.23% 0.98% 2. we arrive at the result: x1 = 320.0598 321.5 = −8 −8 x2 = − 38 − 2 x1 + x3 − 38 − 2( 2.6491 316.15% 7.08631 −8 x2 = − 38 − 2 x1 + x3 − 38 − 2(4.2073.5026.166667 = −2.68% 7.3075 319.5) + 0 = 7.5 The equations must first be rearranged so that they are diagonally dominant − 8 x1 + x 2 − 2 x3 = −20 2 x1 − 6 x 2 − x3 = −38 − 3 x1 − x 2 + 7 x3 = −34 (a) The first iteration can be implemented as x1 = − 20 − x 2 + 2 x 3 − 20 − 0 + 2(0) = 2 .60% 0.155754 = −1.761905) = 4.00% 1.5) + 7.

155754 -1. First iteration: x1 = − 20 − x 2 + 2 x 3 − 20 − 0 + 2(0) = 2 .8 = = −2.31% 2.04% 2.00% 38.2(2.2(0) = 3 x2 = − 38 − 2 x1 + x3 − 38 − 2(3) + 0 = 7.2(0) = −2.99919.08631 ε a.155754 − 7.2( −2.8 x3 = − 34 + 3 x1 + x 2 − 34 + 3(3) + 8.08631 − 2.08631 8.99168 -1.94076 The remainder of the calculation proceeds until all the errors fall below the stopping criterion of 5%.7771429 111 .00% 100.ε a .2(7.004659. (b) The same computation can be developed with relaxation where λ = 1.31% 2.2 = 8.3142857) − 0.99168 and x3 = −1.99919 100.2(0) = 8.92% maximum εa 100.1 = 4.3 = − 1. x2 = 7.761905) × 100% = 42.5 = −8 −8 Relaxation yields: x1 = 1. after 3 iterations.94076 4.92% Thus.5 7.166667 -2.333333) − 0.5 × 100% = 38.92% and we arrive at the result: x1 = 4.13% 8. the maximum error is 2.05% 2.00% 100.94076 − (−2.155754 ε a .13% 42. The entire computation can be summarized as iteration 0 1 2 3 unknown x1 x2 x3 x1 x2 x3 x1 x2 x3 x1 x2 x3 value εa 0 0 0 2.82% 12.7619 4.00% 42.31% − 1.5) − 0.82% 4.004659 7.333333 = −6 −6 Relaxation yields: x 2 = 1.166667 × 100% = 12.3142857 7 7 Relaxation yields: x 3 = 1.2.

71% 32.280% .5531429) − 2.2166857 ε a .8 -2.2(8.0336312 8.5531429 ε a.94% 2.9678445 7.40% maximum εa 100.8 × 100% = 7.2166857 = −1.2166857 x3 = − 34 + 3 x1 + x 2 − 34 + 3(4.3333333 -2.7771429 = 8.2( −1.35% − 1.7727572 -2.3 = − 1.8467453 -2.5229518 The remainder of the calculation proceeds until all the errors fall below the stopping criterion of 5%.522952 3.884759 3.1 = 4.945323 3.000% 82.9383056 112 εa 100.12892 -1.8 + 2(−2.11% 4.00% 100.2 = 8.0846055 8.10% 82.7771429) × 100% = 82. The entire computation can be summarized as iteration 1 2 3 4 5 unknown x1 x2 x3 x1 x2 x3 x1 x2 x3 x1 x2 x3 x1 x2 value 2.7319837 = 7 7 Relaxation yields: x 3 = 1.9078237 7.5229518 − (−2.777143 4.5229518 The error estimates can be computed as ε a .00% 34.2(4.28% 2.7319837) − 0.2(8.Second iteration: − 20 − x 2 + 2 x3 − 20 − 8.26% 7.3139048 = −6 −6 Relaxation yields: x 2 = 1.00% 100.7771429) = −1.257% 19.2(−2.3139048 -1.1% 8.11% 7.2166857 -1.38% 19.7787598 7.9873047 7.2942857) − 0.353% 32.5531429 8.35% 20.3139048) − 0.731984 3.7771429) = 4.2942857 8.8) = 8.5 7.0695595 -1.314286 4.49% 4.2(3) = 4.2942857 = −8 −8 x1 = Relaxation yields: x1 = 1.12728 4.5531429) + 8.2166857 − 8.5531429 − 3 × 100% = 34.5531429 x2 = − 38 − 2 x1 + x3 − 38 − 2(4.49% 5.248146 4.9700747 relaxation 3 8.

However.979007 8.26% 127.72% 466.49% 66.022594 4.03% 199.11% 3.33% 191.0272613 and x3 = −1. The way that this occurs depends on how the equations are ordered.91% 455.7496 1.0124354 -1.07% 1.71% 199. it will oscillate.00% 100.050162 4.00% 250.4 -1 1. 1.2 0.248 0.76 1.68% 127.11% 1.7 0.595% and we arrive at the result: x1 = 4.20% .66% 466. 1.74992 εa 100. Rather.00% 137. relaxation actually seems to retard convergence.26% 40.496 -0.04% 62.29% 113 maximum εa 100.00% 100.00% 58.99% 127.74 1.748 0.068% 3. For example. none of the sets will converge.0272613 -1. 1).5 1.48 2. the maximum error is 3.x3 x1 x2 x3 6 -2.4992 2.16% 67.00% 250.04% 455.6 As ordered. if Set 1 and 3 are reordered so that they are diagonally dominant.24992 0.5 0.0122254 8.595% Thus.67% 137. However. 1).990866 -2. Gauss-Seidel iterations yields iteration 1 2 3 4 5 6 7 unknown x1 x2 x3 x1 x2 x3 x1 x2 x3 x1 x2 x3 x1 x2 x3 x1 x2 x3 x1 value 1. if they can be ordered as −2x + 4y − 5z = −3 2y – z = 1 −x + 3y + 5z = 7 For this case.499968 2. they will converge on the solution of (1.0048286 8.60% 8.7504 1. Set 1: 8x + 3y + z = 12 2x + 4y – z = 5 −6x +7z = 1 Set 3: 3x + y − z = 3 x + 4y – z = 4 x + y +5z =7 Because it is not diagonally dominant.0122254.20% 40. 11.979007. it will also not diverge.66% 66. Set 2 will not converge on the correct solution of (1.49984 -0. x2 = 8. After 6 iterations.

17% 231.64502 6.69% 128.14% 323.00% 100.85% 79. y ) = − x 2 + x + 0 .9168 -16.14% 206.15008 19.249997 0.62% 244.65% 40.29005 -17. Gauss-Seidel iterations yields iteration 1 2 3 4 5 6 7 8 unknown x1 x2 x3 x1 x2 x3 x1 x2 x3 x1 x2 x3 x1 x2 x3 x1 x2 x3 x1 x2 x3 x1 x2 x3 value -7 0.2 -0.88 -14.94% 355.67% 140.81% 243.75002 1. y ) = x 2 − y − 5 xy The partial derivatives can be computed and evaluated at the initial guesses 114 .66% 66.79% 243.31% 317.94% 195.07% 355.80% 241.65% Alternatively.4584 6.12% 323.7 The equations to be solved are f 1 ( x .32% 244.499999 66.82 3.31% 188.06% maximum εa 100.32% 241.93507 3.36% 317.528 17.00% 200.4 -2. they can be ordered as −x + 3y + 5z = 7 2y – z = 1 −2x + 4y − 5z = −3 For this case.36% 209.374029 19.32% 152.792 -1.10% 179.499994 -0.7251 -1.687014 -4.8 x2 x3 x1 x2 x3 0.00% 231.3752 3.00% 100.5 3.67% 466.42442 εa 100.264 -3.91% 144.32% 167.94 5.00% 151.29% 466.81% 163.57504 -4.5 2.06% 11.69% 186.00% 127.5 − y f 2 ( x.8 13.749984 1.

4 = 2 x − 5 y = 2(1.234243 1. 0 ∂y = −1 ∂f 2.6) − (−6.∂f 1.2 − − 6.2 = −6.2 + 0.212245 0.2 = −0.212245 εa1 4.94)(−3.233318 y 1.2 x 2 = 1.0 ∂y = −1 − 5 x = −1 − 5(1.94(−3.295% 0.96 These values can be substituted into Eq.94 f 2.5 − 1.174194 0.96)(−1) = 1.4(−7) − (−1)(−3.2) − 5(1.4) − (−0.191% 0.2 − − 0.889% 17.26129 6.2 1.6) = 6. (11. The results are summarized as iteration 0 1 2 3 4 x 1.8 (a) The equations can be set up in a form amenable to plotting as y = x2 −1 y = 5 − x2 These can be plotted as 115 .000% 11.2) − 1.2) + 1 = −1.000% εa2 588.2 2 + 1.2) = −3.2 2 − 5(1.211619 0.0 = 1.2 The values of the functions can be evaluated at the initial guesses as f 1.96(−1.233319 1.859% 2.12) to give x1 = 1.0 ∂x = −2 x + 1 = −2(1.6 ∂f 1.075% 0.0 = −1.6) = 0.2 0.2) = −7 They can then be used to compute the determinant of the Jacobian for the first iteration is − 1.174194 6.2)(1.26129 1. 0 ∂x ∂f 2.685% 0.2 The computation can be repeated until an acceptable accuracy is obtained.

030048) 2 − 1 = 3.581139) 2 = 1.75 Second iteration: x = 5 − (1.5 1 1.606592) 2 = 1.6.391941 y = (1.9375 Third iteration: x = 5 − (0.391941) 2 − 1 = 0. An alternative solution involves solving the second equation for x and the first for y.5 -2 Thus.5 + 1 = 1.5 4 3 2 1 0 -1 0 0. a solution seems to lie at about x = y = 1. For this case.030048 y = (2.555269 Third iteration: 116 .606592 y = 5 − (1. (b) The equations can be solved in a number of different ways.5) 2 = 1.581139 Second iteration: x = 1.9375) 2 = 2.12094 Thus.581139 = 1.658312 y = (1. For example.658312) 2 − 1 = 1. the first equation can be solved for x and the second solved for y. successive substitution does work First iteration: x = y + 1 = 1. the solution is moving away from the solution that lies at approximately x = y = 1.75) 2 = 1.5 2 2.581139 y = 5 − x 2 = 5 − (1. successive substitution does not work First iteration: x = 5 − y 2 = 5 − (1.6. For this case.

2 The computation can be repeated until an acceptable accuracy is obtained.0 = 1. y ) = 5 − y 2 − x 2 The partial derivatives can be computed and evaluated at the initial guesses ∂f 1.5 − 1.563564 After several more iterations.4(−7) − (−1)(−3. (11.2 2 − 5(1.6) = 0.600485 and y = 1. The results are summarized as iteration 0 1 2 3 ξ 1.5625 1.604167 1.2) − 1.561553.6) = 6. 0 = −2 x ∂y = −1 = −2 y They can then be used to compute the determinant of the Jacobian for the first iteration is − 1.561553 εa1 6.2 = −0.600489 1.96)(−1) = 1.000% .94(−3.96 These values can be substituted into Eq.2)(1. y ) = x 2 − y − 1 f 2 ( x.2 The values of the functions can be evaluated at the initial guesses as f 1.4) − (−0.0 = −1. the calculation converges on the solution of x = 1.600485 ψ 1.2 = −6.061% 0.555269) 2 = 1.x = 5 − (1.94 f 2.2 − − 6.26129 6.0 = 2x ∂y ∂f 2. 0 ∂x ∂f 2.2 x 2 = 1.598521) 2 − 1 = 1.94)(−3.2 + 0.2 − − 0. (c) The equations to be solved are f 1 ( x.0 ∂x ∂f 1.6) − (−6.5 1.5 1.174194 6.96(−1.598521 y = (1.000% 117 εa2 4.494% 0.12) to give x1 = 1.2 2 + 1.561553 1.230% 0.000% 0.

9 241.063504 2.023104 0.652 12.8 10.7030412 = 0.8624 = 0. lower 7.4 10 9.9 8.559504 0.2 10 9.898704 0.8 9. it is placed in the lower bin.725904 0.1 9.121104 0.494267 c.063504 0.715904 0.5 10.703041 × 100% = 7. = 0.300304 0.8624 241.3 0.5 9.9 9.021904 0.8 10.204304 3.28% 9.8 9.002704 0.4 11.4 9.6 8.200704 0.021904 0.565504 11.CHAPTER 12 12.2 The data can be sorted and then grouped.5 upper 8 Frequency 1 118 .3 = 9.021904 0. We assume that if a number falls on the border between bins.069504 0.v.2 7.565504 0.1 10.023104 0.703041 25 − 1 sy = s y2 = 0.559504 0.1 The data can be tabulated as i 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 Σ y= y (yi – y )2 8.6 9.652 25 11.200704 0.4 9.5 9.121104 0.725904 0.023104 0.8 10.4 8.063504 0.3 10.

65 27.45 27.65 27.140625 1.5 0 4 7 6 5 1 1 Frequency The histogram can then be constructed as 8 7 6 5 4 3 2 1 0 7 8 9 10 11 Bin 12.680625 2.805625 0.175625 2.65 29.390625 0.85 26.35 27.25 31.65 27.390625 0.35 28.455625 0.5 10 10.140625 0.65 28.65 28.180625 0.65 28.030625 0.5 9 9.65 27.35 28.105625 0.8 8.5 11 8.85 28.05 28.390625 0.25 26.050625 13.640625 0.3 The data can be tabulated as i 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 y 28.65 28.5 11 11.890625 0.140625 1.14063 0.65 27.65 (yi – y )2 0.5 10 10.140625 119 12 .180625 0.5 9 9.55 28.500625 2.390625 0.275625 0.950625 0.45 27.140625 0.65 26.55 29.

105751 × 100% = 3.0125 784.025 28 33.5 27 27.075625 0.0125 = 1.v.5 28 28.5 31 31.380625 1.25 26 27 28 Σ (a) y = 26.625625 0.85 26.5 30 30.5 30 30.5 27 27.600625 33.7 = 28. = 1.95% 28.1057512 = 1.5 Upper 26.25 784.5 32 Frequency 1 4 3 7 4 6 1 1 0 0 0 1 The histogram can then be constructed as 8 7 Frequency 6 5 4 3 2 1 0 26 27 28 29 30 31 Bin 120 32 .105751 28 − 1 (b) s y = (c) s y2 = 1.7 1.5 28 28.5 29 29.75 27.75 27.5 31 31.5 29 29.025 (e) The data can be sorted and grouped.222685 (d) c. Lower 26 26.

614) − 200. Twenty values fall between these bounds which is equal to 20/28 = 71.2 × 10 ) − 200.8100 9.4426) = −3.025 + 1.919249 and 28.025 – 1.80942 5 5 x iy i 0 194974 387516 577668 765456 1925614 Therefore. the line of best fit is (using the nomenclature of the problem) 121 .4426 x i2 0 4.0225 × 10 −6 = 9.6879 9.925.4 The sum of the squares of the residuals for this case can be written as n ∑ (y Sr = i − a1 x i ) 2 i =1 The partial derivative of this function with respect to the single parameter a1 can be determined as ∂S r = −2 ∂a1 ∑ [( y i − a1 x i ) xi ] Setting the derivative equal to zero and evaluating the summations gives ∑y − a1 i ∑x i which can be solved for a1 = ∑y ∑x i i So the slope that minimizes the sum of the squares of the residuals for a straight line with a zero intercept is merely the ratio of the sum of the dependent variables (y) over the sum of the independent variables (x).130751.6E+09 3.0225 × 10 −6 10 2 5(1. That is.(f) 68% of the readings should fall between y − s y and y + s y .5682 48.7487 9.0E+08 1.10575096 = 26.4% of the values which is not that far from 68%.000 − 3.10575096 = 29.5 i 1 2 3 4 5 Σ xi 0 20000 40000 60000 80000 200000 yi 9.000(48. 12.6278 9.2E+10 a1 = 5(1. 12.000 a0 = 48.4426 200. between 28.4E+09 1.6E+09 6.

487 ⎝ 10 / 28 ⎠ This is close to the standard value of 8.80942 − 3.80942 − 3.999) 12000 10000 8000 6000 -50 0 50 100 ⎛ p⎞V R=⎜ ⎟ ⎝T ⎠ n p = 30.314 J/gmole.6431825 12.3164T (r2 = 0.6 y = 0.1077 2 R = 0.4 0.3164⎜ 3 ⎟ = 8.999 0.47 + 30.g = 9.000) = 9.000 m can therefore be computed as g = 9.7 Linear regression gives 0.2 0 0 2 4 6 8 122 10 150 .3164 T n= 1 kg 28 g/mole ⎛ 10 ⎞ R = 30.0225 × 10 −6 y The value at 55.0225 × 10 −6 (55.0454x + 0.6 Regression gives p = 8100. 12.

2 0 0 2 4 6 8 10 However.0454x.8 y 0.733969 -0.28 0.6 0.Forcing a zero intercept yields y = 0. x 0. a plot of ln(y/x) versus x should yield a straight line with an intercept of lnα4 and an intercept of β4.80359 -2.55 0. this seems to represent a poor compromise since it misses the linear trend in the data.9 1.1 0.7 1.8602 -1.35 0.832581 1.6 0. Therefore. if the model holds.75 1.3 1.8387 0. 12.4 0.9024 0. we might try y = 0.6 0.8 The function can be linearized by dividing it by x and taking the natural logarithm to yield ln( y / x) = ln α 4 + β 4 x Therefore.85 0.014903 1.1827x 2 R = 0.25 1.18 ln(y/x) 2.4 0. if the linear slope is valid.45529 -1.2 0.287854 0.2 0 0 2 4 6 8 10 One alternative that would force a zero intercept is a power fit 0.05716 -0. An alternative approach would to assume that the physically-unrealistic non-zero intercept is an artifact of the measurement method.25 0.061x 2 R = 0.30259 123 .4069 y = 0.4 0.45 1.5 1.

995732 3.9842x .5 1 1.y = -2.401197 3.2682 = 9.5 3 3.4733x + 2.9481 ln F 3.413459 7.279319 2 6 5 4 3 2 2 2. m/s 10 20 30 40 50 60 70 80 F.9974 0 0.9 The data can be transformed.688879 3.248495 5.661786.2941 7 R = 0.2682 3 2 1 0 -1 -2 -3 2 R = 0.912023 4.309918 6.4733 x This equation can be plotted together with the data: 2 1 0 0 0. plotted and fit with a straight line v. N 25 70 380 550 610 1220 830 1450 ln v 2.218876 4.721426 7.5 .1.5 1 1.094345 4.106606 6.382027 8 y = 1. and the fit is y = 9.661786 xe −2.5 4 124 4.248495 4.5 2 12.5 2 Therefore.302585 2.4733 and α4 = e2. β4 = −2.940171 6.

476972 6.9842 and the leading coefficient is e−1.e. The exponential fit can be determined as t (hrs) 4 8 12 16 20 24 c (CFU/100 mL) 1590 1320 1000 900 650 560 ln c 7. An exponential model (i. a semilog plot) is the best choice to linearize the data.274137.274137 x 1.371489 7.9842 12.The least-squares fit is ln y = 1.2941 The exponent is 1. Therefore.907755 6.802395 6. This conclusion is based on • • • A power model does not result in a linear plot Bacterial decay is known to follow an exponential model The exponential model by definition will not produce negative values. the result is the same as when we used common or base-10 logarithms: y = 0.10 (a) The data can be plotted 2000 1600 1200 800 400 0 0 10 20 30 The plot indicates that the data is somewhat curvilinear.327937 125 .9842 ln x − 1.2941 = 0.185387 6..

y = -0.201397 3.63 ⎠ t= ⎝ = 43.08 d − 0.0532t ⎝ 1978.0532t ⎛ 200 ⎞ ln⎜ ⎟ = −0.63e −0. the coefficient of the exponent (β1) is −0.5902 = 1978.11 (a) The exponential fit can be determined with the base-10 logarithm as t (hrs) 4 8 12 16 c (CFU/100 mL) 1590 1320 1000 900 log c 3.0532t Consequently the concentration at t = 0 is 1978.2 6.4 6 0 10 20 30 Therefore. Here is a plot of the fit along with the original data: 2400 2000 1600 1200 800 400 0 0 10 20 30 (b) The time at which the concentration will reach 200 CFU/100 mL can be computed as 200 = 1978.9887 7.6 2 R = 0.63e −0.63.0532 12.0532x + 7.0532 and the lead coefficient (α1) is e7.120574 3 2.5902 7. and the fit is c = 1978.954243 126 .8 6.63 ⎠ ⎛ 200 ⎞ ln⎜ ⎟ 1978.63 CFU/100 ml.

3 3.2964 = 1978.0231t ⎛ 200 ⎞ log10 ⎜ ⎟ = −0.7 2 R = 0.0231t ⎝ 1978.0231 Thus. the results are identical to those obtained with the base-e model. and the fit is c = 1978.748188 y = -0.2964 3.63.1 3 2.08 d − 0.63 ⎠ ⎝ t= = 43.9887 0 10 20 30 Therefore.63(10) −0.812913 2.0231x + 3. (b) The time at which the concentration will reach 200 CFU/100 mL can be computed as 200 = 1978.63(10) −0.63 CFU/100 ml.63 ⎠ ⎛ 200 ⎞ log10 ⎜ ⎟ 1978. The relationship between β1 and β5 can be developed as in e −α1t = 10 −α 5t Take the natural log of this equation to yield − α 1t = −α 5 t ln 10 or α 1 = 2.9 2. the coefficient of the exponent (β5) is −0.302585α 5 127 .0231 and the lead coefficient (α5) is 103.20 24 650 560 2.8 2.2 3.0231t Consequently the concentration at t = 0 is 1978.

342423 0.35 2.37 logA = 0.348305 0. the power is b = 0.4149(95) 0.1 2.2 2.3821 = 0.31 1.3799logW .913814 1.3799 = 2.354108 0.35 0.12 2.886491 1.4149W 0.845098 1.322219 0.1 2.326336 0.34 0.36 2 R = 0.4149.9711 0.12 The power fit can be determined as W (kg) 70 75 77 80 82 84 87 90 A (m2) 2.34 m 2 128 .954243 log A 0.26 2.3 log W 1.15 2.332438 0.92 1.346353 0.924279 1.3799 and the lead coefficient is a = 10−0.23 2.3 2.84 1. and the fit is A = 0.15 2.8 1.361728 0.875061 1.939519 1.25 2.3821 0.88 1.90309 1.33 0.2 2.05 70 75 80 85 90 The value of the surface area for a 95-kg person can be estimated as A = 0.22 2.3799 Here is a plot of the fit along with the original data: 2.12.32 0.96 Therefore.0.

6363 log σ (r2 = 0.13 The power fit can be determined as Mass (kg) 300 70 60 2 0.041393 2 1.7497 and the lead coefficient is a = 101.845098 1.52288 log Met 3.7497logMass + 1.818 = 65.9935 0 -1 0 1 2 3 Therefore.12.477121 1.230449 3.768.477121 4 3 2 logMet = 0.778151 0.7497 Here is a plot of the fit along with the original data: 8000 6000 4000 2000 0 0 100 200 300 12.14 Linear regression of the log transformed data yields logε& = −5.3 Metabolism (kCal/day) 5600 1700 1100 100 30 log Mass 2.818 1 2 R = 0. and the fit is Metabolism = 65.30103 -0.768Mass 0. the power is b = 0.41 log B + 2.9997) 129 400 .748188 3.

6363 and the untransformed model is ε& = 3.88975 × 10 -6 σ 2.001 0 0 5 10 15 12.2 -3.004 0.15 Linear regression of the data yields τ = 2.002 0.1 1. 130 6 .779 N/m2.4 -2.779 + 0.685γ& (r2 = 0.8 0.003 0.2 -2.977121) 8 6 4 2 0 0 2 4 Therefore. B = 10 -5.685 and τy = 2.8 -3.41 = 3.7 0.6363 A plot of the data and the model can be developed as 0.88975 × 10 -6 m = 2. µ = 0.005 0.0.6 Therefore.9 1 1.

The power model is therefore.989118) 1.8 2 2.958564 1.1 1 0. µ = 10–0.113943 log(stress) 0.932474 0.6 1.25 log(strain) 1.69897 1.45 8.72765γ& 0.9 0.54298 = 0.54298 A plot of the power model along with the data can be created as 12 8 4 0 0 50 100 131 150 .954243 2.041393 2.99 7.7 0.872156 0. τ = 0.010724 Linear regression of the transformed data yields log τ = −0.8 0.09 10.13808 + 0.2 Therefore.845098 1.56 9.777427 0.12.16 The data can be transformed strain 50 70 90 110 130 stress 5.6 1.54298 log γ& (r2 = 0.54298.72765 and n = 0.

6607 ( yi − y) 2 380535 327041 68579 132 (y − ypred)2 1485 7892 1709 .037202v 2 Here is the resulting fit: 2000 1500 1000 500 0 -500 0 20 40 60 80 100 The predicted values can be used to determined the sum of the squares.12202v + 0. Note that the mean of the y values is 641.4821 + 16.5417 158.CHAPTER 13 13.875. i x 1 2 3 10 20 30 y 25 70 380 ypred -13.1 The data can be tabulated and the sums computed as i 1 2 3 4 5 6 7 8 Σ x 10 20 30 40 50 60 70 80 360 y 25 70 380 550 610 1220 830 1450 5135 x2 100 400 900 1600 2500 3600 4900 6400 20400 x3 1000 8000 27000 64000 125000 216000 343000 512000 1296000 x4 10000 160000 810000 2560000 6250000 12960000 24010000 40960000 87720000 xy 250 1400 11400 22000 30500 73200 58100 116000 312850 x2y 2500 28000 342000 880000 1525000 4392000 4067000 9280000 20516500 Normal equations: 360 20400 ⎤ ⎧⎪a 0 ⎫⎪ ⎧⎪ 5135 ⎫⎪ ⎡ 8 20400 1296000 ⎥ ⎨ a1 ⎬ = ⎨ 312850 ⎬ ⎢ 360 ⎢⎣20400 1296000 87720000⎥⎦ ⎪⎩a 2 ⎪⎭ ⎪⎩20516500⎪⎭ which can be solved for the coefficients yielding the following best-fit polynomial F = −178.8393 338.

4
5
6
7
8
Σ

40
50
60
70
80

550
610
1220
830
1450

525.9226
720.625
922.7679
1132.351
1349.375

8441
1016
334229
35391
653066
1808297

580
12238
88347
91416
10125
213793

The coefficient of determination can be computed as
r2 =

1808297 − 213793
= 0.88177
1808297

The model fits the trend of the data nicely, but it has the deficiency that it yields physically
unrealistic negative forces at low velocities.
13.2 The sum of the squares of the residuals for this case can be written as

Sr =

∑ (y
n

i

− a1 x i − a 2 x i2

)

2

i =1

The partial derivatives of this function with respect to the unknown parameters can be
determined as
∂S r
= −2
∂a1

∑ [( y

i

− a1 x i − a 2 xi2 ) x i

]

∂S r
= −2
∂a 2

∑ [( y

i

− a1 x i − a 2 x i2 ) xi2

]

Setting the derivative equal to zero and evaluating the summations gives

(∑ x )a + (∑ x )a = ∑ x y
2
i

3
i

1

2

i

(∑ x )a + (∑ x )a = ∑ x
3
i

4
i

1

2

i

2
i yi

which can be solved for
a1 =

a2

∑x y ∑x −∑x y ∑x
∑ x ∑ x − (∑ x )
i

4
i

i

2
i

2
i

i

3
i

3 2
i

4
i

∑x ∑x y −∑x y ∑x
=
∑ x ∑ x − (∑ x )
2
i

2
i

2
i

i

i

4
i

i

3
i

3 2
i

The model can be tested for the data from Table 12.1.

133

x
10
20
30
40
50
60
70
80
Σ

x2
100
400
900
1600
2500
3600
4900
6400
20400

y
25
70
380
550
610
1220
830
1450

a1 =

x3
1000
8000
27000
64000
125000
216000
343000
512000
1296000

x4
10000
160000
810000
2560000
6250000
12960000
24010000
40960000
87720000

312850(87720000) − 20516500(1296000)

a2 =

20400(87720000) − (1296000) 2

xy
250
1400
11400
22000
30500
73200
58100
116000
312850

x2y
2500
28000
342000
880000
1525000
4392000
4067000
9280000
20516500

= 7.771024

20400(20516500) − 312850(1296000)
= 0.119075
20400(87720000) − (1296000)

Therefore, the best-fit model is
y = 7.771024 x + 0.119075 x 2

The fit, along with the original data can be plotted as
2500
2000
1500
1000
500
0
0

20

40

60

80

100

13.3 The data can be tabulated and the sums computed as
i
1
2
3
4
5
6
7
8
Σ

x
3
4
5
7
8
9
11
12
59

y
1.6
3.6
4.4
3.4
2.2
2.8
3.8
4.6
26.4

x2
9
16
25
49
64
81
121
144
509

x3
27
64
125
343
512
729
1331
1728
4859

x4
81
256
625
2401
4096
6561
14641
20736
49397

Normal equations:

134

x5
243
1024
3125
16807
32768
59049
161051
248832
522899

x6
729
4096
15625
117649
262144
531441
1771561
2985984
5689229

xy
4.8
14.4
22
23.8
17.6
25.2
41.8
55.2
204.8

x2y
14.4
57.6
110
166.6
140.8
226.8
459.8
662.4
1838.4

x3y
43.2
230.4
550
1166.2
1126.4
2041.2
5057.8
7948.8
18164

59
509
4859 ⎤ ⎧a 0 ⎫ ⎧ 26.4 ⎫
⎡ 8
509
4859
49397 ⎥ ⎪ a1 ⎪ = ⎪ 204.8 ⎪
⎢ 59
⎢ 509 4859 49397 522899 ⎥ ⎨a 2 ⎬ ⎨1838.4⎬
⎢⎣4859 49397 522899 5689229⎥⎦ ⎪a ⎪ ⎪⎩18164 ⎪⎭
⎩ 3⎭
which can be solved for the coefficients yielding the following best-fit polynomial
y = −11.4887 + 7.143817 x − 1.04121x 2 + 0.046676 x 3

Here is the resulting fit:
8
6
4
2
0
-2

0

5

10

15

The predicted values can be used to determined the sum of the squares. Note that the mean
of the y values is 3.3.
i
1
2
3
4
5
6
7
8
Σ

x
3
4
5
7
8
9
11
12

ypred

y
1.6
3.6
4.4
3.4
2.2
2.8
3.8
4.6

1.83213
3.41452
4.03471
3.50875
2.92271
2.4947
3.23302
4.95946

( yi − y) 2
2.8900
0.0900
1.2100
0.0100
1.2100
0.2500
0.2500
1.6900
7.6000

The coefficient of determination can be computed as
r2 =

7.6 − 1.2997
= 0.829
7 .6

13.4
function p = polyreg(x,y,m)
% polyreg(x,y,m):
%
Polynomial regression.

135

(y − ypred)2
0.0539
0.0344
0.1334
0.0118
0.5223
0.0932
0.3215
0.1292
1.2997

% input:
%
x = independent variable
%
y = dependent variable
%
m = order of polynomial
% output:
%
p = vector of coefficients
n = length(x);
if length(y)~=n, error('x and y must be same length'); end
for i = 1:m+1
for j = 1:i
k = i+j-2;
s = 0;
for l = 1:n
s = s + x(l)^k;
end
A(i,j) = s;
A(j,i) = s;
end
s = 0;
for l = 1:n
s = s + y(l)*x(l)^(i-1);
end
b(i) = s;
end
p = A\b';

Test solving Prob. 13.3:
>> x = [3 4 5 7 8 9 11 12];
>> y = [1.6 3.6 4.4 3.4 2.2 2.8 3.8 4.6];
>> polyreg(x,y,3)
ans =
-11.4887
7.1438
-1.0412
0.0467

13.5 Because the data is curved, a linear regression will undoubtedly have too much error.
Therefore, as a first try, fit a parabola,
>>
>>
>>
>>

format long
T = [0 5 10 15 20 25 30];
c = [14.6 12.8 11.3 10.1 9.09 8.26 7.56];
p = polyfit(T,c,2)

p =
0.00439523809524

-0.36335714285714

Thus, the best-fit parabola would be

c = 14.55190476 − 0.36335714T + 0.0043952381T 2

136

14.55190476190477

60690 rounded 14. the best-fit cubic would be c = 14.30949 10. We can.22 7.09116 8.1 9.09 8.00729523809524 -0.35786 10. the predictions and data agree to three significant digits.26 7.3 10.04286 8.6 12.c.61 Thus.6 12.56 c-pred 14.09048 9.6 12. therefore.09044 9.3 10. When these values are rounded to the same number of significant digits the results are T 0 5 10 15 20 25 30 c-data 14.395579365T + 0.04 8.60023809523810 Thus.16 12 8 4 0 0 5 10 15 20 25 30 We can use this equation to generate predictions corresponding to the data.8 11.09 8.56 Thus.007295238T 2 − 0.6 12.8 11.60020 12.8 11.3) p = -0.3 10.26 7.1 9.8 11. 137 .1 9.79663 11.09 8.600238095 − 0.00006444444444 0.55190 12.39557936507936 14.1 9.56 c-pred 14. When these values are rounded to the same number of significant digits the results are T 0 5 10 15 20 25 30 c-data 14. discrepancies occur in the third significant digit.000064444T 3 We can use this equation to generate predictions corresponding to the data.4 10.21500 7. fit a third-order polynomial >> p = polyfit(T.26 7.26331 7.55855 rounded 14. although the plot looks good.84500 11.

3 10. >> c = [zeros(size(x)) 10*ones(size(x)) 20*ones(size(x))]'.1 9.35 6.73 6.13. This can be seen even better by generating predictions for all the data and then generating a plot of the predictions versus the data.53335714285714 >> ea = abs((9. The coefficients can be evaluated as >> a = Z\y a = 13.6 12.20123809523810T − 0.03 8.2]'.26 7.96 8.10492857142857 Thus.8 11.08 7.87741631305987 Thus.17 7.85 11. >> Z = [ones(size(T)) T c].1 9.6 The multiple linear regression model to evaluate is o = a 0 + a1T + a 2 c The [Z] and y matrices can be set up using MATLAB commands in a fashion similar to Example 13.4.09-cp)/9. the best-fit multiple regression model is o = 13. >> T = [t t t]'.09)*100 ea = 4.4 10. A one-to-one line is included to show how the predictions diverge from a perfect fit.09 8.52214285714286 -0.9 11. >> format long >> t = [0 5 10 15 20 25 30].52214285714286 − 0.46 6.56 12.20123809523810 -0. >> y = [14. 138 .10492857142857c We can evaluate the prediction at T = 12 and c = 15 and evaluate the percent relative error as >> cp = a(1)+a(2)*12+a(3)*15 cp = 9. the error is considerable.3 10.3 8.

2]'.3 8.9 11.26 7.96 8.03 8.00574444444444 -0.02714285714287 -0.3 10.10492857142857 Thus.85 11.336423T + 0.17 6.08 7. 13.16 12 8 4 4 8 12 16 The cause for the discrepancy is because the dependence of oxygen concentration on the unknowns is significantly nonlinear.10492857c The model can then be used to predict values of oxygen at the same values as the data. = [14.000043704T 3 − 0. 139 . Then. = [0 0 0 0 0 0 0 10 10 10 10 10 10 10 20 20 20 20 20 20 20]'.4 10.^3 c].8 11. These predictions can be plotted against the data to depict the goodness of fit.35 6.7 The multiple linear regression model to evaluate is y = a 0 + a1T + a 2 T 2 + a 3T 3 + a 4 c The [Z] matrix can be set up as in >> T >> T >> c >> o >> y 7.00004370370370 -0. the least-squares fit is y = 14.00574444T 2 − 0.10) >> format long >> a = (Z'*Z)\[Z'*y] a = 14.73 6. = [1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1]'.027143 − 0.56 12. = [o T T.^2 T. = [T T T]'.09 8.3 10. the coefficients can be generated by solving Eq.1 9.1 9.6 12. It should be noted that this is particularly the case for the dependency on temperature.46 >> Z = 0:5:30.33642328042328 0.(13.

4609 9. 13.10) >> a = (Z'*Z)\[Z'*y] a = 14. the least-squares fit is y = 14. >> a(1)+a(2)*12+a(3)*12^2+a(4)*12^3+a(5)*15 ans = 9.6 20.09 mg/L.'o') Finally.5 35.4 40. the prediction can be made at T = 12 and c = 15.7043 Thus.8 The multiple linear regression model to evaluate is y = a 0 + a1 x1 + a 2 x 2 The [Z] matrix can be set up as in >> >> >> >> >> x1 = [0 1 1 2 2 3 3 4 4]'.9 12. y = [15.(13.16781492063485 which compares favorably with the true value of 9.7 45.0252 x1 − 5. the coefficients can be generated by solving Eq. x2 = [0 1 2 1 2 1 2 1 2]'. o = [1 1 1 1 1 1 1 1 1]'.1 29. Z = [o x1 x2 y].7043x 2 140 .7 25.0252 -5.4609 + 9. Then.yp.1 17.2]'.>> yp = Z*a >> plot(y.

[.38 . [o log10(D) log10(S)] Then.3 .01 .24 . [1 1 1 1 1 1 1 1 1]'.01 . the coefficients can be generated by solving Eq.95 5. >> yp = Z*a >> SSR = sum((yp .9978 >> syx = sqrt(SSR/(length(y)-3)) syx = 0. [.8888 13.10) >> a = (Z'*Z)\[Z'*log10(Q)] a = 1.5609 + 2.5320 log(S ) Taking the inverse logarithm gives 141 .6 .3 .^2) SSR = 4.001 .y).05 .5609 2.6279 0.6 . These predictions can be used to determine the correlation coefficient and the standard error of the estimate.31 1.SSR)/SST r2 = 0.001 .6279 log( D) + 0.82 2.^2) SST = 1.5320 Thus. the least-squares fit is log Q = 1.04 .9 The multiple linear regression model to evaluate is log Q = log α 0 + α 1 log( D) + α 2 log(S ) The [Z] matrix can be set up as in >> >> >> >> >> D S Q o Z = = = = = [.(13.6 .05]'.mean(y)).66]'.0587e+003 >> r2 = (SST .01 .9 .7397 >> SST = sum((y .9]'.05 .9955 >> r = sqrt(r2) r = 0.69 .3 .13 .9 .The model can then be used to predict values of the unknown at the same values as the data.001 .

5*t) exp(-0.3775 Thus.3*t) exp(-0.3t + Ce −0. function f = fSSR(a.8 1.(13.Pm) Pp = a(1)*Im/a(2).3872 1.5 1 2 3 4 5 6 7 8 9]'.Im.05*t)]. an M-file function must be created to compute the sum of the squares.10 The linear regression model to evaluate is p (t ) = Ae −1.^2).6279 S 0.5t + 4.1]'.5 2.1 1.Q = 101.05t The fit and the data can be plotted as >> pp = Z*a >> plot(t.2 3. >> Z = [exp(-1.05*t)]. the least-squares fit is p (t ) = 3.5320 = 36.10) >> Z = [exp(-1.3813D 2.7778e −1.p.5320 13.t.8 3.7778 4.5*t) exp(-0.*exp(-Im/a(2)+1).'o'.3*t) exp(-0.2 1. >> a = (Z'*Z)\[Z'*p] a = 3.5609 D 2. >> t = [0.6279 S 0.5t + Be −0. f = sum((Pm-Pp). the coefficients can be generated by solving Eq.pp) 13.11 First.2 2.3t + 1. Then. 142 .3775e −0.5 1.05t The unknowns can be entered and the [Z] matrix can be set up as in >> p = [7 5.3872e −0.

I.6 .45 1. >> plot(I. 143 .5 1.'o'.4 .xm.ym) yp = a(1)*xm.*exp(-I/a(2)+1). f = sum((ym-yp).Pp) 13. The data can then be entered as >> x = [. P) a = 238. >> Pp = a(1)*I/a(2).12 First.*exp(a(2)*xm).75 1.28 0.9].9 1.P. >> y = [0. [].3 1. 200]. [200.7124 − +1 I e 221. The minimization of the function is then implemented by >> a = fminsearch(@fSSR.I.18].7 1.25 1. an M-file function must be created to compute the sum of the squares.The data can then be entered as >> I = [50 80 130 200 250 350 450 550 700].^2). >> P = [99 177 202 248 229 219 173 142 72].8239 221.8239 The best-fit model is therefore I P = 238.25 0.85 0.2 .1 .55 0.7124 221.35 0. function f = fSSR(a.8239 The fit along with the data can be displayed graphically.

13997346408367 144 ./v0) a = 1.01 .'o'. [1.737e-5 2.431e-5].078e-11 7. >> plot(x.8545 -2. []. 12.423e-5 2.5217 The best-fit model is therefore y = 9.^3.13 (a) The model can be linearized by inverting it.8545 xe −2. x. y) a = 9. >> a = linregr(1.64527391375701 4.1.1 ./S.12).x.43e-5 2.05 .063e-8 5.*exp(a(2)*x). >> yp = a(1)*x.788e-6 1.The minimization of the function is then implemented by >> a = fminsearch(@fSSR. >> S = [.595e-9 6. The slope and intercept can be implemented in MATLAB using the M-file function linregr (Fig.yp) 13.5 1 5 10 50 100]. a plot of 1/v0 versus 1/[S]3 should yield a straight line with a slope of K/km and an intercept of 1/km. >> v0 = [6.0e+004 * 1.5217 x The fit along with the data can be displayed graphically. 1]. K 1 1 1 = + 3 v0 k m [S ] km If this model is valid.y.431e-5 2.

39741170517893 Thus.05 .063e-8 5.Sm. function f = fSSR(a.01 .^3). We will use a log-log plot because of the wide variation of the magnitudes of the values being displayed.737e-5 2.431e-5 2.1 .5 1 5 10 50 100]. >> loglog(S.^3).595e-9 6.415474 × 10 −5 [ S ]3 0. >> v0 = [6. the best-fit model is v0 = 2.These results can then be used to compute km and K./(K+S.423e-5 2.^3.788e-6 1.39741 + [ S ]3 The fit along with the data can be displayed graphically.'o'. >> km=1/a(2) km = 2. f = sum((v0m-v0p). The data can then be entered as >> S = [.078e-11 7.415474419523452e-005 >> K=km*a(1) K = 0.v0./(a(2)+Sm.v0m) v0p = a(1)*Sm.S.^3.^2). 145 .v0p) (b) An M-file function must be created to compute the sum of the squares.431e-5]. >> v0p = km*S.43e-5 2.

We will use a log-log plot because of the wide variation of the magnitudes of the values being displayed. 1].431 × 10 −5 [ S ]3 0. >> v0p = a(1)*S.39976314533880 The best-fit model is therefore v0 = 2. >> loglog(S. [2e-5.'o'./(a(2)+S. [].^3. v0) a = 0.v0.S. S.00002430998303 0.399763 + [ S ]3 The fit along with the data can be displayed graphically.v0p) 146 .The minimization of the function is then implemented by >> format long >> a = fminsearch(@fSSR.^3).

5 f(x2) = 2 f(x3) = 7 f(x4) = 0 Note that based purely on the distance from the unknown.4 − 3) = 6.5 − 3 = 4.4) = 5.333333) 5−4 = 5.1 (a) Newton’s polynomial.4 − 3)(3.5333333 − (−2.5) (3.333333) (3.5 − 3 = 4.4 − 4)(3. because it provides better balance and is located only a little bit farther from the unknown.4 − 3 6 . 5).4 − 2.5) f 2 (3.5) 5−3 − 2.4 − 2.4 − 4) 2 .4 − 4 3 . the point at (5.4 − 3)(3.259887 Third order: 0−7 − (−3.333333) 5−4 f 3 (3. 0) is chosen.4) = 3 .8 − (−3. First order: f 1 (3.4 − 4)(3.7 + − 3.333333 − (−4.4 − 3)(3.95152 5−3 (b) Lagrange polynomial.4 − 4) 2.5 − (−2. Ordering of points: x1 = 3 x2 = 4 x3 = 2.5 + 2 − 6.4 − 3)(3.333333) 5 − 2 . However.5) 5−3 = 5. First order: f 1 (3.5 (3.7 + (−2.4 − 3) = 4.7 3−4 4−3 147 .CHAPTER 14 14.4 − 4)(3.4 − 2.4 − 4) = 5.7 4−3 Second order: 7−2 − (−4.5 + 2 = 4. the fourth point would be (2.259887 + (3.259887 + 0.5 + ( −4.4) = 6.333333)(3.259887 + (3.5 − 4 (3.5) = 4.5 x4 = 5 f(x1) = 6.4) = 4.333333) − (−2.4 − 3)(3.5)(3.7 + 2.4 − 3)(3.

4 − 3)(3.5)(3.25 + 7.25 5. First order: f 1 (4) = 5.5 Second order: f 2 ( 4) = 12.4 − 5) (3. A divided-difference table can then be developed as x 3 5 2 6 1 f(x) 5.5 3−5 5−3 148 .5)(3 − 5) + (3.4 − 4)(3.5 − 4) Third order: f 3 (3.4 − 2.5 − 3)(2.Second order: f 2 (3.4 − 4) 6.5) (2.5 − 3)(2.4 − 2.5)(4 − 5) (3 − 4)(3 − 2.5) (3.75 4 36 4.25 8 6.5) 14.5 + ( 4 − 3)(4 − 2.5 − 4)(2.75 First 7.25 + 19.4 − 3)(3.3 Lagrange polynomial.25 Second 2 2.4 − 2.5 Third order: f 3 (4) = 10.75 = 12.25(4 − 3) = 12.5) 7+ 0 = 4.5 + (4 − 3)(4 − 5)(4 − 2)0.5 + 2+ 7 = 5.259887 (3 − 4)(3 − 2.4 − 4)(3.5 + (4 − 3)(4 − 5)(4 − 2)(4 − 6)0 = 10 14.4 − 2.4 − 3)(3.95152 (2.25 Fourth 0 Note that the fact that the fourth divided difference is zero means that the data was generated with a third-order polynomial.5 + (4 − 3)(4 − 5)2 = 10.4 − 5) 2 6.5)(3.75 Third 0.2 The points can be ordered so that they are close to and centered around the unknown.5 − 5) (5 − 3)(5 − 4)(5 − 2.4 − 3)(3.4 − 4)(3.25 = 10 Fourth order: f 3 (4) = 10.5) (3.4 − 3)(3.25 0.75 1.4 − 4)(3.4 − 5) (3.4) = (3. First order: f 1 ( 4) = 4−5 4−3 5.4 − 2.4) = (3.25 19.5) (4 − 3)(4 − 2.

5 (3 − 5)(3 − 2) (5 − 3)(5 − 2) (2 − 3)(2 − 5) Third order: f 3 ( 4) = (4 − 5)(4 − 2)(4 − 6) (4 − 3)(4 − 2)(4 − 6) 5.214(12 − 10) + 0.08 − 9. c = 15) = 9.227 -0. 10 and 15 at c = 15.1 + 8.6564 Third order: f 3 (4) = 9.0025(15 − 0)(15 − 10) = 10. c = 15) = 10.000107 Second order: f 2 ( 4) = 10.25 + 19.53 (12 − 10) = 9. f 1 (T = 10.20867 second 0.3 8.53 20 − 10 f 1 (T = 15.03 11.53 + 8.1 − 0.96 − 10. A divided-difference table can then be developed as T. quadratic interpolation can be used to generate values for T = 5.6564 + 0.75 + 4 = 10.214 -0.0026 0. f 1 (T = 12.25 + 19. f 2 (T = 5. oC 10 15 5 20 c = 10 g/L 10.65192 (b) First.14 15 − 10 (c) First.1 9.Second order: f 2 ( 4) = (4 − 5)(4 − 2) (4 − 3)(4 − 2) (4 − 3)(4 − 5) 5.555 − 9.75 (3 − 5)(3 − 2)(3 − 6) (5 − 3)(5 − 2)(5 − 6) + (4 − 3)(4 − 5)(4 − 6) ( 4 − 3)(4 − 5)(4 − 2) 4+ 36 = 10 (2 − 3)(2 − 5)(2 − 6) (6 − 3)(6 − 5)(6 − 2) 14. c = 15) = 12.17 first -0.03 + 8.000107(12 − 10)(12 − 15)(12 − 5) = 9.1 (15 − 10) = 9.15(15 − 0) + 0.8 − 0.0026(12 − 10)(12 − 15) = 9.4 (a) The points can be ordered so that they are close to and centered around the unknown.003667 third 0.03 (15 − 10) = 8.7375 149 . c = 15) = 9. linear interpolation can be used to generate values for T = 10 and 15 at c = 15.555 20 − 10 These values can then be used to determine the result at T = 12.

1016 14. >> y = x.6 = −0.1500 1.6 1.107(15 − 0) + 0.0003(15 − 0)(15 − 10) = 9.15 x 3 +1.^2.2) p = -0.15 x 3 +1.2500 7. c = 15) = 10.3 − 0.2156 is obtained with εa = 0.fx.00069% after 16 iterations. >> p = polyfit(x.9 = 0 Bisection can be employed the root of this polynomial.y.12(15 − 0) + 0. >> x = [1 2 3 4]./(1+x. >> p = polyfit(x.5 x 2 −5. c = 15) = 10.5000 -5. 14.7375 − 0.8 1.2 0.3) p = -0. >> format long >> x = [3 4 5].93 = x2 1 + x2 0. >> fx = [3.243(12 − 5) + 0.9]. Using initial guesses of xl = 2 and xu = 3. a value of 2.07 x 2 = 0.5 MATLAB can be used to generate a cubic polynomial through the first 4 points in the table.5 or f ( x) = −0.1 − 0.5 x 2 −5.25 x + 7.5000 Therefore.07 (b) A quadratic interpolating polynomial can be fit to the last three points using the polyfit function.^2).93 x 2 = x 2 0.93 x= 0. f 2 (T = 12.11402714932127 150 0. c = 15) = 11.93 = 3.644957 0. the roots problem to be solved is 1.65158371040724 .00465(12 − 5)(12 − 10) = 9.6 (a) Analytical: 0.0006(15 − 0)(15 − 10) = 8.f 2 (T = 10.01040723981900 0.93 + 0.5225 f 2 (T = 15.25 x + 5.54 These values can then be used to determine the result at T = 12.

27149321266968 Thus. (c) A cubic interpolating polynomial can be fit to the last four points using the polyfit function. the estimate is 3.6515837 We must therefore find the root of 0.01040724 x 2 + 0. the best fit cubic is f 3 ( x) = 0. 151 .61883 is obtained.6585068 Bisection can be employed the root of this polynomial.00633484162896 -0.11402715 x + 0.01040724)(−0.7 (a) Because they bracket the unknown.67294421.08642534 x 2 + 0.4117647 x + 0.11402715 x + 0.4117647 x + 0.2835775 3. the two last points are used for linear interpolation. the best fit quadratic is f 2 ( x) = −0.3) p = 0.4117647 x − 0.11402715 x − 0.08642534 x 2 + 0.93 = 0. 14.6729442 Thus.11402715) = 7.41176470588235 0.93 = −0.006334842 x 3 − 0.08642534 x 2 + 0./(1+x.006334842 x 3 − 0.^2) >> p = polyfit(x.2714932 We must therefore find the root of 0. Using initial guesses of xl = 3 and xu = 4.01040724 x 2 + 0.11402715 ± (0. >> y=x. a value of 3.08642533936652 0.2784163) 2(0.01040724 x 2 + 0.^2. >> format long >> x = [2 3 4 5].2784163 The quadratic formula yields x= − 0.Thus.11402715) 2 − 4(−0.6515837 or f ( x) = −0.006334842 x 3 − 0.2714932 or f ( x) = 0.y.

2358 -64.45 p = 354.0. >> v = [0.f 1 (0. to the level of significance reported in the table the estimated entropy is 6.8950 Then.4147 6. we can fit a quadratic polynomial to the data to yield.9976 9.3450 We must therefore find the root of 6.7664 − 6.45 is 0.9976 x + 9.9976 2.6077 Therefore.45 = 354.2358 -64. p = 354. First.6077 (c) The inverse interpolation can be implemented in MATLAB.2358 x 2 − 64.7664].11144 (b) The quadratic interpolation can be implemented easily in MATLAB.118 − 0.2358 -64.1074 0.5453 + 6.6487 0.2358 x 2 − 64. the value of the specific volume corresponding to an entropy of 6.118) = 6. T 300 D 1. >> s = [6. we can order the data so that the points are closest to and centered around the unknown.45 = 354.9976 9.9976 x + 2. >> roots(p) ans = 0.1074.118) ans = 6.5453 6. 14.8 This problem is nicely suited for the Newton interpolating polynomial.8950 In MATLAB. >> p = polyfit(v.2) p = 354.s. we can generate this polynomial by subtracting 6.1144 0.12547].139 152 .45 from the constant coefficient of the polynomial >> p(3)=p(3)-6.3450 or 6.0761 Thus. as in part (b).5453 (0.10377 0.11144) = 6. we can use the roots function to determine the solution. First.3450 >> polyval(p.12547 − 0.

93333 −10 (330 − 300)(330 − 350)(330 − 400)(330 − 250) = 1.139 0.708 first -0.16000E-05 7.367 0.77333E-12 First-order (linear) fit: f 1 (330) = 1.60000E-11 fifth -2.0289 − 2.350 400 250 450 200 0.0358 Thus.028.029 to the level of significant digits provided in the original data. This may be an initial indication that the higher-order terms are beginning to induce slight oscillations. Fourth-order (quartic) fit: f 4 (330) = 1.00000E-09 -4.002260 -0.708 Then we can generate the divided difference table.0358 + 1. the linear estimate is 1.00000E-08 -3.003420 -0.759 1.60000E-06 1.028888 The cubic estimate is also 1.029.76000E-08 fourth -2. T 300 350 400 250 450 200 D 1.854 1.967 0.0287 The quadratic estimate is 1.854 1.759 1. Second-order (quadratic) fit: f 2 (330) = 1.0279 − 2.367 0.18000E-05 1. Fifth-order (quintic) fit: f 2 (330) = 1.003440 -0.51200E-05 third 4.967 0.00344(330 − 300) = 1.0279 The quartic estimate now seems to be diverging slightly by moving to a value of 1.003040 -0.77333 −12 (330 − 300)(330 − 350)(330 − 400)(330 − 250)(330 − 450) = 1.18 × 10 −5 (330 − 300)(330 − 350) = 1.003796 second 1.93333E-10 -1.139 − 0.02902 153 .036 to the level of significant digits provided in the original data. Third-order (cubic) fit: f 3 (330) = 1.0287 + 4 × 10 −9 (330 − 300)(330 − 350)(330 − 400) = 1.

0097 3.029 p = 0. To do this.029 is a sound estimate to the level of significant digits provided in the original data.D.3670 1. This acts to both reduce the magnitudes of the temperatures and centers them on zero. >> format long >> D = [1.0000 -0. First. even though the polynomial is badly conditioned one of the roots corresponds to T = 330 as expected.3300 Thus.967 0. Remove repeated data points or try centering and scaling as described in HELP POLYFIT.2420 Let’s disregard this warn and proceed to adjust the polynomial so that it can be used to solve the inverse interpolation problem.967 0.) > In polyfit at 78 p = 0.854].139 0. I would conclude that the cubic equation provides the best approximation and that a value of 1.3) Warning: Polynomial is badly conditioned. Now let’s perform the inverse interpolation.0000 0. On the basis of the foregoing. we subtract the specified value of the density from the polynomial’s constant coefficient >> p(4)=p(4)-1. 154 . >> p = polyfit(T.8237 0. Interestingly. because of the large values of the temperatures.0000 -0. Inverse interpolation can be now used to determine the temperature corresponding to the value of density of 1.0097 2. we get an error message. >> D =[1.0e+003 * -2.139 0. but with scaling. MATLAB can be used to fit a cubic polynomial through the four points that bracket this value. >> T = [250 300 350 400].029.2130 Then we can use the roots function to determine the temperature that corresponds to this value >> roots(p) ans = 1.Oscillations are now evidently occurring as the fifth-order estimate now jumps back up to slightly above a value of 1. (Type "warning off MATLAB:polyfit:RepeatedPointsOrRescale" to suppress this warning.5938 0.0000 0.3670 1. To do this.029. we will merely subtract the value at the midpoint of the temperature range (325) from all the temperatures.854].

00344250000000 0.01681250000000 We can set up the roots problem >> p(4)=p(4)-1.00496634199799 By adding back the offset of 325.223891 -0.1.00000000400000 0.029 p = 0. >> J = [0.5625 13. >> x = [1 1.25 0.V. >> polyval(p. >> V = [-193 -41 -13. >> Tinv = r(3)+325 Tinv = 3.048384].9 A MATLAB session provides a handy way to solve this problem >> i = [-1 -0.3) p = 0.0000 45.0000 The interpolating polynomial is therefore V = 148i 3 + 45i The polyval function can be used to determine the interpolation at i = 0.10) ans = 4. 155 .5625 41 193].325.00344250000000 1.00000000400000 0. >> p = polyfit(T.0000 -0.D.0000 0.5 -0. we arrive at the expected result of 330.0000 148. the cubic fit can be generated with no error message.5].14874694489127 0. >> T = T .00001150000000 -0. Then.511828 0.0e+003 * -3.5 1].0.0000 -0.5) p = 0.10 Third-order case: The MATLAB polyfit function can be used to generate the cubic polynomial and perform the interpolation.00001150000000 We can then use the roots function to determine the temperature that corresponds to the given density >> r = roots(p) ans = 1.5 2 2.299663419979927e+002 14.04581250000000 -0.6480 14.25 0.>> T = [250 300 350 400]. >> p = polyfit(i.26878060289231 0.765198 0.

511828 0.511828 0.82).1955)/35.5].1.82).765198 0. >> ea = abs((Jtrue-Jpred)/Jtrue)*100 ea = 5. p = polyfit(ts.1.0027 0. MATLAB can be used to evaluate each of the cases.223891 -0.2400 -0.>> p = polyfit(x.5 2 2.223891 -0. >> J = [0.048384 -0.1014 >> Jpred = polyval(p.0916 -0.0043 Fourth-order case: >> x = [1 1.pop.1). First order: >> >> >> >> t = [1990 1980]. 156 . >> ea = abs((Jtrue-Jpred)/Jtrue)*100 ea = 0.46 227.0231 -0. >> J = [0.3283 >> Jtrue = besselj(0.3705 0.1.0008 >> Jpred = polyval(p.5 2 2.3284 0.9673 The built-in function besselj can be used to determine the true value which can then be used to determine the percent relative error >> Jtrue = besselj(0.9409 >> Jpred = polyval(p.0035 0.3) p = 0.260052 0.82) Jpred = 0.0670 -0.1.2461e-004 14.0302 Fifth-order case: >> x = [1 1.82) Jpred = 0.260052].23].938470]. >> p = polyfit(x.0115 -0. pop = [249.5 3 0.4) p = -0.J.1.048384 -0.1692 0.11 In the same fashion as Example 14.4330 0.J.3284 >> Jtrue = besselj(0.765198 0.5) p = -0.5 3].6. ts = (t .3284 >> ea = abs((Jtrue-Jpred)/Jtrue)*100 ea = 0.1.J. >> p = polyfit(x.0045 1.82) Jpred = 0.82) Jtrue = 0.

4200 Although the improvement is not great.1955)/35.2).(2000-1955)/35) ans = 271. >> p = polyfit(ts.>> polyval(p.pop. >> polyval(p.6900 Second order: >> t = [t 1970].(2000-1955)/35) ans = 271.7400 Third order: >> t = [t 1960]. >> p = polyfit(ts.(2000-1955)/35) ans = 273.42 that occurred in 2000.3). 157 .27]. >> polyval(p.05]. >> pop = [pop 180. >> p = polyfit(ts.9900 Fourth order: >> t = [t 1950]. >> pop = [pop 205.pop. using higher-order approximations is moving the prediction closer to the actual value of 281. Thus. >> ts = (t . >> ts = (t .67].pop. >> pop = [pop 152. >> polyval(p.1955)/35. >> ts = (t .1955)/35.(2000-1955)/35) ans = 274. the addition of each term causes the prediction for 2000 to increase.4).

840249 -1.970954 4. xx = linspace(1. The coefficients for the intervals can be summarized as interval 1 2 3 4 5 a 1 5 7 8 2 b 3.5 ⎥ ⎪⎪c3 ⎪⎪ ⎪⎪ − 6 ⎪⎪ ⎢ ⎥⎨ ⎬ = ⎨ ⎬ 0.y.31535 5.xx.087137 -0.058091 3.5 3 1 ⎥ ⎪c 4 ⎪ ⎪− 24⎪ ⎢ ⎢ 1 4 1⎥ ⎪c5 ⎪ ⎪ 15 ⎪ ⎢ ⎥⎪ ⎪ ⎪ ⎪ 1⎦⎥ ⎪⎩c6 ⎪⎭ ⎩⎪ 0 ⎭⎪ ⎣⎢ These equations can be solved for the c’s and then Eqs.xx).248963 d 0.5 3 4 5].'o'. plot(x.16598 c 0 0.029046 -0.52282 -9.08299 These can be used to generate the following plot of the natural spline: 10 8 6 4 2 0 0 2 4 6 (b) The not-a-knot spline and its plot can be generated with MATLAB as >> >> >> >> >> x = [1 2 2.5 ⎥ ⎪c ⎪ ⎪ 0 ⎪ ⎪ ⎢ ⎥⎪ 2 ⎪ ⎪ ⎢ 0.yy) 158 .414938 -2.5).CHAPTER 15 15.40664 -6.1 (a) The simultaneous equations for the natural spline can be set up as ⎡1 ⎤ ⎧ c1 ⎫ ⎧ 0 ⎫ ⎢1 3 0.99585 6. yy = spline(x.y.5 2 0. (15.41909 -5.21) and (15. y = [1 5 7 8 2 1].18) can be used to solve for the b’s and the d’s.

yy = interp1(x. plot(x. xx = linspace(1.yy) 15.5).xx.xx.2 The simultaneous equations for the clamped spline with zero end slopes can be set up as 159 .y.Notice how the not-a-knot version exhibits much more curvature.y.'pchip'). particularly between the last points.'o'. (c) The piecewise cubic Hermite polynomial and its plot can be generated with MATLAB as >> >> >> >> >> x = [1 2 2.5 3 4 5]. y = [1 5 7 8 2 1].

5 18 ⎪ ⎪ ⎪ ⎪ ⎢ ⎥ 6 ⎪ ⎪ ⎪ ⎪ ⎢ ⎥ 0. Note that we are plotting the points as depth versus temperature so that the graph depicts how the temperature changes down through the tank.729 + 640.7385 106.⎡ 1 0 .7077( d − 1) 3 where T = temperature and d = depth. This equation can be differentiated twice to yield the second derivative d 2T3 ( x) dx 2 = −137.5 2 0. The coefficients for the intervals can be summarized as interval 1 2 3 4 5 6 a 70 70 55 22 13 10 b 0 -7.13846 c 15.5 2 0. 5 2 0 .18) can be used to solve for the b’s and the d’s.2462(d − 1) − 68.5 1 ⎦ ⎩c7 ⎭ ⎩ ⎭ ⎣ These equations can be solved for the c’s and then Eqs.5538 The fit can be displayed in graphical form.7538 -24.5 2 0.0923 13.87692 -31. 0 50 100 0 1 2 3 Inspection of the plot indicates that the inflection point occurs in the 3rd interval.8615(d − 1) 2 + 106.5 2 0.44615 -3.0769 -5.21) and (15.2462 -47.5 ⎢ ⎥ ⎨c 4 ⎬ = ⎨ 144 ⎬ ⎢ ⎥ ⎪c5 ⎪ ⎪ 36 ⎪ 0.2462(d − 1) 160 .5 ⎪ ⎢ ⎥⎪ ⎪ ⎪ 0.93846 12.7077 -66.5 ⎪ ⎢ ⎥⎪ ⎪ ⎪ c 0 .66154 -12. (15.93846 -58.55385 d -31.2 -7.7538 -68. The cubic equation for this interval is T3 ( x) = 55 − 58.5 ⎥ ⎪c ⎪ ⎪ − 90 ⎪ ⎪ ⎢ ⎥⎪ 2 ⎪ ⎪ ⎢ ⎥ ⎪c3 ⎪ ⎪− 108⎪ 0.5 ⎤ ⎧ c1 ⎫ ⎧ 0 ⎫ ⎢0.8615 91.

21511 m.3 (a) The not-a-knot fit can be set up in MATLAB as >> >> >> >> >> >> x = linspace(0.xx.3). xx = linspace(0.1)./((x-0.y./((xx-0./((xx-0.yy.xx.11).^2+0.'--') 161 ./((xx-0.1.xx.04)-6. plot(x.3).9). y = 1.^2+0.9).01)+1. y = 1.^2+0.y.04)-6.1.yh.04)-6.'o'.'o'.xx.^2+0.11).^2+0.01)+1./((x-0.xx).xx.^2+0.9)./((x-0. yy = interp1(x.1).01)+1. xx = linspace(0.3).^2+0.'--') (b) The piecewise cubic Hermite polynomial fit can be set up in MATLAB as >> >> >> >> >> >> x = linspace(0.'pchip').^2+0./((xx-0.y.01)+1. yy = spline(x.yy.9).3). yh = 1. plot(x.y.04)-6.This can be set equal to zero and solved for the depth of the thermocline as d = 1./((x-0.yh. yh = 1. 15.

824361 1 0.xx.4 The simultaneous equations for the clamped spline with zero end slopes can be set up as 0 ⎫ ⎡ 1 ⎤ ⎧ c1 ⎫ ⎧ ⎢100 400 100 ⎥ ⎪c ⎪ ⎪− 0.406006 0.15.3E-09 The fit can be displayed in graphical form as 1.'--') 162 .00923⎪ 100 600 200 ⎪ ⎢ ⎥⎪ ⎪ ⎪ 200 800 200 ⎢ ⎥ ⎨c 4 ⎬ = ⎨− 0.3E-07 1.9E-06 1.7E-10 -2.4 0.*exp(-xx/200+1).2 0 0 500 1000 (b) The not-a-knot fit can be set up in MATLAB as >> >> >> >> >> >> x = [0 100 200 400 600 800 1000].39E-06 d -1.2 1 0. yy = spline(x. y = x/200.00138 -0.01946⎪ ⎪ ⎢ ⎥⎪ 2 ⎪ ⎪ ⎢ ⎥ ⎪c3 ⎪ ⎪− 0.7E-05 -7.009801 0.xx).1000).31E-08 2.00072 c 0 -4.00031 -0.735759 0. yc = xx/200. The coefficients for the intervals can be summarized as interval 1 2 3 4 5 6 a 0 0. xx = linspace(0.005128 -0.001843 ⎪ 200 800 200 ⎪ ⎢ ⎥⎪ ⎪ ⎪ 200 800 200⎥ ⎪c6 ⎪ ⎪ 0.82E-09 -8.xx.0018 -0. plot(x.7E-06 2.6E-07 1.8 0.yy.y.y.001489 ⎪ ⎢ ⎪ ⎪ ⎪ ⎪ ⎢ 1 ⎥⎦ ⎩c7 ⎭ ⎩ 0 ⎭ ⎣ These equations can be solved for the c’s and then Eqs.6 0.199148 b 0.13E-07 1.00098⎬ ⎢ ⎥ ⎪c5 ⎪ ⎪ 0.21) and (15.*exp(-x/200+1).18) can be used to solve for the b’s and the d’s. (15.yc.'o'.

*exp(-xx/200+1).1). yy = interp1(x.'--') Summary: For this case. yc = xx/200.yy) 163 .y.y.xx.1000). xx = linspace(-1.yy. y = [0 0 0 1 1 1].'o'. the not-a-knot fit is the best.6 1]. yy = spline(x.yc.xx.(c) The piecewise cubic Hermite polynomial fit can be set up in MATLAB as >> >> >> >> >> >> x = [0 100 200 400 600 800 1000].2 0.xx).xx. xx = linspace(0.6 -0.y.'o'.2 0.y.'pchip'). plot(x. y = x/200.xx.5 (a) The not-a-knot fit can be set up in MATLAB as >> >> >> >> >> x = [-1 -0. plot(x.*exp(-x/200+1). 15.

'o'.xx). plot(x.xx.6 1].yy) 164 . ys = [0 y 0]. xx = linspace(-1. xx = linspace(-1. plot(x.2 0.xx.2 0. y = [0 0 0 1 1 1].xx.1).y.'o'.6 -0.2 0.6 -0. yy = interp1(x. y = [0 0 0 1 1 1].'pchip').6 1]. yy = spline(x.y.y.(b) The clamped spline with zero end slopes can be set up in MATLAB as >> >> >> >> >> >> x = [-1 -0.yy) (c) The piecewise cubic Hermite polynomial fit can be set up in MATLAB as >> >> >> >> >> x = [-1 -0.2 0.1).ys.

aa(i.1 a(i) = y(i). i). function fdd = fd(i. x. j. b(i) = fd(i + 1. n.i-1) = h(x.fd(i. function yyy = SplineInterp(x.1) = 1.1 if xi >= x(ii) .1) + h(x. aa(1. bb(1) = 0.6 An M-file function to implement the natural spline can be written as function yy = natspline(x. c. n = length(x). d. i.xx): % uses a natural cubic spline interpolation to find yy. b. break end end 165 . bb(i) = 3 * (fd(i + 1. i . y) . a. end c = aa\bb'. i).n) = 1. n. x. bb(n) = 0. i)). end for i = 1:m yy(i) = SplineInterp(x. i) / 3 * (2 * c(i) + c(i + 1)). d(i) = (c(i + 1) . xi) for ii = 1:n . for i = 1:n . i .15. x. a.y. y)).c(i)) / 3 / h(x.xx) % natspline(x.h(x.000001 & xi <= x(ii + 1) + 0.1). end function hh = h(x. xx(i)). i .000001 yyy=a(ii)+b(ii)*(xi-x(ii))+c(ii)*(xi-x(ii))^2+d(ii)*(xi-x(ii))^3. aa(i.1. c.x(j)).y(j)) / (x(i) .y. d. x. y) fdd = (y(i) . i) hh = x(i + 1) .i) = 2 * (h(x. % The vector x specifies the points at which the data y is given.i+1) = h(x. m = length(xx). i. y) . aa(n.x(i). the values % of the underlying function y at the points in the vector xx.0. for i = 2:n-1 aa(i. b.

912 x + 27.y. These values can then be added to the y vector and the spline function invoked to develop the clamped fit: 166 .xx. yy = natspline(x.456*xx.776 x 3 + 11.1. plot(x.xx).211 and f'(9) = 11.5 1 2.5 7 9].yy.'--') (b) The function can be differentiated to give f ' ( x) = 0.9).xx.The program can be used to duplicate Example 15.^5-0.9125*xx.yc.5].069*xx-14.7375 x 2 − 30.^4+3.444*xx.787.9125*x.0925 x 4 − 1.069*x-14. y = [2. yc = 0.0185*xx. xx = linspace(3.7 (a) The not-a-knot fit can be set up in MATLAB as >> >> >> >> >> >> x = [1 3 5 6 7 9].0185*x.^2+27. yy = spline(x. y = 0.yy) 15.3: >> >> >> >> >> x = [3 4.'o'. xx = linspace(1.y.^3-15. plot(x.y.y.^4+3.444*x.xx).^2+27.^5-0.^3-15.xx.069 This function can be evaluated at the end nodes to give f'(1) = 6.1.456*x.'o'.9).5 .

>> yd = [6.211 y 11.'o'. >> yy = spline(x.yy.yc.xx.xx).xx.y.787].'--') 167 .yd. >> plot(x.

999665 = 2.3437 8 (d) single application of Simpson’s 1/3 rule 168 (ε t = 4.1 A table of integrals can be consulted to determine 1 ∫ tanh dx = a ln cosh ax Therefore.88%) (c) composite trapezoidal rule n = 2: (4 − 0) 0 + 2(0.2 (a) The analytical solution can be evaluated as ∫ 4 0 [ (1 − e − 2 x ) dx = x + 0.5e − 2 ( 0 ) = 3.999665 = 1.CHAPTER 16 16.5e − 2 ( 4 ) − 0 − 0.96303 4 (ε t = 15.99752) + 0. ∫ t 0 ⎛ gc d ⎞ gm tanh ⎜ t ⎟ dt = ⎜ m ⎟ cd ⎝ ⎠ gm 2 gc d2 t gm cd ⎛ gc d ⎞⎤ m ⎡ t ⎟⎥ ⎢ln cosh⎜ ⎜ m ⎟⎥ gc d ⎣⎢ ⎝ ⎠⎦ 0 ⎡ ⎤ ⎛ gc d ⎞ t ⎟ − ln cosh(0)⎥ ⎢ln cosh⎜ ⎜ m ⎟ ⎢⎣ ⎥⎦ ⎝ ⎠ Since cosh(0) = 1 and ln(1) = 0.500167731 (b) single application of the trapezoidal rule (4 − 0) 0 + 0.981684) + 0.981684 + 0.35%) n = 4: (4 − 0) 0 + 2(0.86466 + 0.999665 = 3.47%) .99329 2 (ε t = 42.5e − 2 x ] 4 0 = 4 + 0. this reduces to ⎛ gc d ⎞ m t⎟ ln cosh⎜ ⎜ m ⎟ cd ⎝ ⎠ 16.

12132) + 6 = 12.3111%) (d) single application of Simpson’s 1/3 rule ⎛π ⎞ 9 + 4(8.18%) (c) composite trapezoidal rule n = 2: ⎛π ⎞ 9 + 2(8.995172) + 0.78097 ⎜ − 0⎟ ⎝2 ⎠ 2 (ε t = 5.14805) + 2(8.0032%) .7716 + 7. 169 (ε t = 0.4316 (ε t = 0.86466 + 0.3 (a) The analytical solution can be evaluated as ∫ π /2 0 (6 + 3 cos x) dx = [6 x + 3 sin x ]0 π /2 = 6(π / 2) + 3 sin(π / 2) − 6(0) − 3 sin(0) = 12.999665 = 3. ( 4 − 0) 0 + 3(0.0550%) ⎜ − 0⎟ 6 ⎝2 ⎠ (e) composite Simpson’s 1/3 rule (n = 4) ⎛π ⎞ 9 + 4(8.930517 + 0.25%) n = 4: ⎛π ⎞ 9 + 2(8.84%) (f) Simpson’s 3/8 rule.981684) + 0.999665 = 3.99752) + 2(0.999665 = 3.26896 ⎜ − 0⎟ 4 ⎝2 ⎠ (ε t = 1.77164 + 8.424778 (b) single application of the trapezoidal rule ⎛π ⎞9+6 = 11.17%) (e) composite Simpson’s 1/3 rule (n = 4) (4 − 0) 0 + 4(0.12132 + 7.28427 6 (ε t = 6.12132) + 6 = 12.14805) + 6 = 12.388365 8 (ε t = 3.981684) + 0.386125 ⎜ − 0⎟ 8 ⎝2 ⎠ (ε t = 0.42518 ⎜ − 0⎟ 12 ⎝2 ⎠ (f) Simpson’s 3/8 rule.12132) + 6 = 12.19%) 16.(4 − 0) 0 + 4(0.47059 12 (ε t = 0.

(4 − (−2)) − 29 + 3(1 + 31) + 1789 = 1392 8 (ε t = 26.4%) (d) single application of Simpson’s 1/3 rule (4 − (−2)) − 29 + 4(−2) + 1789 = 1752 (ε t = 58.6685%) (f) Simpson’s 3/8 rule.3%) (c) composite trapezoidal rule n = 2: (4 − (−2)) − 29 + 2(−2) + 1789 = 2634 4 (ε t = 138.3125) + 2( −2) + 1789 = 1144.9375) + 12(−2) + 32(131.6%) n = 4: (4 − (−2)) − 29 + 2(1.⎛π ⎞ 9 + 3(8.09%) (g) Boole’s rule.9375 + (−2) + 131.3125) + 7(1789) = 1104 90 170 (ε t = 0%) .5) + 6 = 12.4 (a) The analytical solution can be evaluated as 4 ∫ 4 −2 ⎡ x2 x6 ⎤ − x4 + ⎥ (1 − x − 4 x + 2 x ) dx = ⎢ x − 2 3 ⎦ −2 ⎣ 3 =4− 5 (−2) 2 ( −2) 6 46 42 − 44 + − (−2) + + (−2) 4 − = 1104 3 2 3 2 (b) single application of the trapezoidal rule (4 − (−2)) − 29 + 1789 = 5280 2 (ε t = 378.7%) 6 (e) composite Simpson’s 1/3 rule (n = 4) (4 − (−2)) − 29 + 4(1.5 12 (ε t = 3. (4 − (−2)) 7(−29) + 32(1.875 8 (ε t = 37.59808 + 7.3125) + 1789 = 1516.0243%) 16.9375 + 131.42779 ⎜ − 0⎟ 8 ⎝2 ⎠ (ε t = 0.

3 − 0.2 − 0.5 (a) The analytical solution can be evaluated as ∫ 1.90484 + (0.60653 0.74082 + 0.49659 + 4(0.7 − 0.30119 + (0.35%) (c) Trapezoidal and Simpson’s Rules (0.5 − 0.1) 2 8 + (1.33333 y − 4 y 3 + 2y4 ] 2 -2 21.164566 + 0.0131%) 6 16. y = −2: (4 − 0) − 12 + 2(−24) − 28 = −88 4 y = 0: (4 − 0) 0 + 2(4) + 16 = 24 4 171 .957) 2 2 2 + (0. 4 ∫ 2 ⎡ x3 2 3 x ⎤ − + 3 y x y ⎢ ⎥ dy −2 3 2 ⎦0 ⎣ ∫ ( 4) 3 ( 4) 2 − 3 y 2 ( 4) + y 3 dy −2 3 2 ∫ 2 2 2 −2 21.70126 (ε t = 0.110312 + 0.38674) + 0.134735 + 0.09524 + 0.698897 (ε t = 0.90484 + (0.60653) + 0.2 − (−e 0 ) = 0.2 0 [ e − x dx = − e − x ] 1.3) 2 2 2 0.38674 0.16.69880579 (b) Trapezoidal rule (0.1) + (0.74082 1 + 0.2 − 0.49659 + 0.7) + (1.1 − 0) 0.74082 + 0.33333( −2) + 4(−2) 3 − 2(−2) 4 = 21.33333 − 12 y 2 + 8 y 3 dy [21.49659 1 + 0.60653 + 0.30119 = 0.49659 0.2 0 = −e −1.5) = 0.90484 + 0.1 − 0) 0.40826 + 0.7 − 0.195395 = 0.7) 0.38674 + 0.085992 = 0.33333( 2) − 4(2) 3 + 2(2) 4 − 21.6 (a) The integral can be evaluated analytically as.90484 + 3(0.33333 (b) The composite trapezoidal rule with n = 2 can be used the evaluate the inner integral at the three equispaced values of y.09524 + 0.110416 + 0.95 − 0.

33333 6 These results can then be integrated in y to yield (2 − (−2)) − 90.33333 6 which represents a percent relative error of εt = 21.33333 = 21.(4 − 0) y = 2: − 12 + 2(8) + 36 = 40 4 These results can then be integrated in y to yield − 88 + 2(24) + 40 =0 4 (2 − (−2)) which represents a percent relative error of εt = 21.33333 6 y = 2: (4 − 0) − 12 + 4(8) + 36 = 37.33333 − 0 × 100% = 100% 21.33333 − 21.33333 which is perfect 16. 6 ⎡ x4 4 ∫ ∫ −4 0 4 6 −4 0 ∫ ∫ 3 ⎤ ⎢ − 2 yzx ⎥ dy dz = ⎣ 4 ⎦ −1 20 − 8 yz dy dz = 4 6 −4 0 ∫ ∫ 20 − 8 yz dy dz ∫ [20 y − 4 zy ] 4 −4 2 6 0 dz = 172 ∫ 4 120 − 144 z dz −4 .66667 + 4(21.66667 6 y = 0: (4 − 0) 0 + 4(4) + 16 = 21.33333 × 100% = 0% 21.7 (a) The integral can be evaluated analytically as.33333 which is not very good.33333) + 37. y = −2: ( 4 − 0) − 12 + 4(−24) − 28 = −90. (c) Single applications of Simpson’s 1/3 rule can be used the evaluate the inner integral at the three equispaced values of y.

4

[

120 − 144 z dz = 120 z − 72 z 2

−4

]

4
−4

= 120(4) − 72(4) 2 − 120(−4) + 72(−4) 2 = 960

(b) Single applications of Simpson’s 1/3 rule can be used the evaluate the inner integral at
the three equispaced values of y for each value of z,

z = −4:
y = 0:

(3 − (−1))

− 1 + 4(1) + 27
= 20
6

y = 3:

(3 − (−1))

23 + 4(25) + 51
= 116
6

y = 6:

(3 − (−1))

47 + 4(49) + 75
= 212
6

These results can then be integrated in y to yield
( 6 − 0)

20 + 4(116) + 212
= 696
6

z = 0:
y = 0:

(3 − (−1))

− 1 + 4(1) + 27
= 20
6

y = 3:

(3 − (−1))

− 1 + 4(1) + 27
= 20
6

y = 6:

(3 − (−1))

− 1 + 4(1) + 27
= 20
6

These results can then be integrated in y to yield
( 6 − 0)

20 + 4( 20) + 20
= 120
6

z = 4:
y = 0:

(3 − (−1))

− 1 + 4(1) + 27
= 20
6

y = 3:

(3 − (−1))

− 25 + 4(−23) + 3
= −76
6

173

(3 − (−1))

y = 6:

− 49 + 4(−47) − 21
= −172
6

These results can then be integrated in y to yield
( 6 − 0)

20 + 4(−76) − 172
= −456
6

The results of the integrations in y can then be integrated in z to yield
( 6 − 0)

696 + 4(120) − 456
= 960
6

which represents a percent relative error of

εt =

960 − 960
× 100% = 0%
960

16.8 (a) The trapezoidal rule can be implemented as,

d = (2 − 1)

7 + 8 .5
5.5 + 7
6 + 5.5
5+6
+ (3.25 − 2)
+ (4.5 − 3.25)
+ (6 − 4.5)
2
2
2
2

+ (7 − 6)

7+5
7+7
6+7
6+6
8 .5 + 6
+ (8 − 7)
+ (8.5 − 8)
+ (9.3 − 8.5)
+ (10 − 9.3)
= 58.425
2
2
2
2
2

(b) The polynomial can be fit as,
>>
>>
>>
>>

format long
t = [1 2 3.25 4.5 6 7 8 8.5 9.3 10];
v = [5 6 5.5 7 8.5 6 6 7 7 5];
p = polyfit(t,v,3)

p =
-0.00657842294444
4.46645555949356

0.01874733808337

The cubic can be plotted along with the data,
>> tt = linspace(1,10);
>> vv = polyval(p,tt);
>> plot(tt,vv,t,v,'o')

174

0.56859435273356

The cubic can then be integrated to estimate the distance traveled,
d=

10

− 0.006578t 3 + 0.018747t 2 + 0.568594t + 4.46646 dt

1

[

]

10

= − 0.001645t 4 + 0.006249t 3 + 0.284297t 2 + 4.46646t 1 = 58.14199

16.9

D
0

ρgw(z)(60 – z)

ρgzw(z)(60 – z)

z
60
50
40
30
20
10
0

w(z)
200
190
175
160
135
130
122

f t = 60

7.1809 + 4(6.3765 + 4.7088 + 1.8639) + 2(5.2974 + 3.4335) + 0
× 10 7 = 2.5480 × 10 9
3(6)

ρgzw( z )( D − z ) dz = 60

d=

0
1.8639E+07
3.4335E+07
4.7088E+07
5.2974E+07
6.3765E+07
7.1809E+07

0
9.3195E+08
1.3734E+09
1.4126E+09
1.0595E+09
6.3765E+08
0

0 + 4(0.63765 + 1.4126 + 0.93195) + 2(1.0595 + 1.3734) + 0
× 10 9 = 5.5982 × 1010
3(6)

5.5982 × 1010
= 21.971
2.5480 × 10 9

16.10 (a) Trapezoidal rule:
f = 30

0 + 2(54.937 + 51.129 + 36.069 + 27.982 + 19.455) + 13.311
= 996.1363
2(6)

175

30
f =

0 + 2( 274.684 + 511.292 + 586.033 + 559.631 + 486.385) + 399.332
2(6)
13088.45
=
= 13.139 m
996.1363
996.1363

(b) Simpson’s 1/3 rule:
f = 30

30
f =

0 + 4(54.937 + 36.069 + 19.455) + 2(51.129 + 27.982) + 13.311
= 1042.294
3(6)

0 + 4( 274.684 + 586.033 + 486.385) + 2(511.292 + 559.631) + 399.332
3(6)
13215.97
=
= 12.6797 m
1042.294
1042.294

176

9355% 27. [ ] 8 I = − 0.8646(4 + 4 x d ) 3 − 4.81973333 3 0.5% is iteration → εt → εa → 1 2 4 1 6.6908% 25.2 (a) The integral can be evaluated analytically as.21615 x 4 − 1.84320000 21.3854 x 3 + 3.31250000 25.1613% 1.9064% 19.87808000 4 0.5% is iteration → εt → εa → 1 2 4 8 1 20.6766% 34. I= ∫ 2 1 2 3⎞ ⎛ ⎜ 2 x + ⎟ dx = x⎠ ⎝ ⎡ 4x 3 I =⎢ + 12 x − ⎣ 3 ∫ 2 1 4 x 2 + 12 + 9 x − 2 dx 2 4( 2) 3 9 9⎤ 9 4(1) 3 = + − − − 12(1) + = 25.83456463 Thus.1699% 27.87808000 34.91680000 30.8333 12 ( 2 ) ⎥ x ⎦1 1 2 3 3 The tableau depicting the implementation of Romberg integration to εs = 0.62500000 26.8256% 9.01094 x 5 + 0.000000% 34.87808 (b) The tableau depicting the implementation of Romberg integration to εs = 0.84920000 2 42.1562(4 + 4 x d ) 2 + 6. (c) The transformations can be computed as x= (8 + 0) + (8 − 0) x d = 4 + 4 xd 2 dx = 8−0 dx d = 4dx d 2 These can be substituted to yield I= ∫ [− 0.CHAPTER 17 17.87500000 25.0098% 25.14585 x 2 + 2 x 0 = 34. the result is 25.0048% 0. the result is exact.87808000 Thus.0000% 2.2917(4 + 4 x d ) + 2 4dx d 177 .94133333 33.1 The integral can be evaluated analytically as.95594388 2 0.0000% 0.94453333 34.83709184 3 0.83456. 17.0547(4 + 4 x 1 −1 d ] ) 4 + 0.93760000 33.

(d) >> format long >> y = inline('-0.1 I = f (−0.1 I = 0. >> I = quad(y.57337260 41.*exp(x)').5 + 1.2917*x+2').0547*x.^3-4.1562*x.3 Although it’s not required. the analytical solution can be evaluated simply as I= ∫ 3 0 [ ] 3 xe x dx = e x ( x − 1) 0 = 41.8349% 26.5350% 90.5555556 f (0.8646*x.5x 1 −1 d ] )e1.3) 178 .0.5dx d 2 These can be substituted to yield I= ∫ [(1.5 x d 2 dx = 3−0 dx d = 1.774596669) + 0.8888889 f (0) + 0.1020% 0.5 xd 1.6075058 which represents a percent relative error of 3.83949598 2 5.8579% 43.5555556 f (−0.38491615 55. (c) Using MATLAB >> format long >> I = quad(inline('x.5 + 1. (b) The transformations can be computed as x= (3 + 0) + (3 − 0) x d = 1.8 %.577350269) + f (0.0.5dx d The transformed function can be evaluated using the values from Table 17.577350269) = 39.21305531 which represents a percent relative error of 0.36057514 3 0.102 %.3579% 41.87808 which is exact.27625849 44.774596669) = 34.17107385 (a) The tableau depicting the implementation of Romberg integration to εs = 0.^2+6.^4+0.5+1.5% is iteration → εt → εa → 1 2 4 1 119.87808000000000 17.The transformed function can be evaluated using the values from Table 17.8) I = 34.

*exp(x)').75 xd ) 2 ]0.1 I = f (−0.66621287 685.062 %.17107466800178 which represents a percent relative error of 2×10−6 %.5 + 0) + (1.22995126 4 0.17107385090233 which represents a percent relative error of 1.4 The exact solution can be evaluated simply as >> format long >> erf(1.0.75 + 0.5 (a) The tableau depicting the implementation of Romberg integration to εs = 0.75+ 0. >> I = quadl(inline('x.8888889 f (0) + 0.1131% 847.0922% 1027.04507345 179 3 1. 17.5555556 f (−0.5 − 0 dx d = 0.96610514647531 (a) The transformations can be computed as x= (1. (b) The transformed function can be evaluated using the values from Table 17.86564547 933.49455856 1051. 17.974173129 which represents a percent relative error of 0.75dx d 2 These can be substituted to yield I= 2 π ∫ 1 −1 [e − ( 0.5 − 0) x d = 0.20139037 2 19.774596669) + 0.I = 41.67034112 1020.75dx d The transformed function can be evaluated using the values from Table 17.835 %.5% is iteration → εa → 1 2 4 8 1 199.577350269) + f (0.1×10−8 %.5555556 f (0.035826% 1051.93212300 1016.774596669) = 0.75 x d 2 dx = 1.5) ans = 0.60670352 .1 I = 0.577350269) = 0.965502083 which represents a percent relative error of 0.27190634 1049.3) I = 41.

Note that if 8 iterations are implemented.) > In quad at 88 I = 1.085280043451920e+003 The quadl function converges rapidly.5(15+15 xd ) / 30 ⎤ e ⎢ ⎥ 15dx d −1 22 + 15 x d ⎣ ⎦ 1 The transformed function can be evaluated using the values from Table 17.0.16326649 15.0.41501768 . (Type "warning off MATLAB:quad:MaxFcnCount" to suppress this warning.1% is iteration → εa → 1 2 4 1 0.6 The integral to be evaluated is I= ∫ (10e 1/ 2 0 −t sin 2πt ) 2 dt (a) The tableau depicting the implementation of Romberg integration to εs = 0.055900924411335e+003 17.40142910 2 25.0000% 20.00000000 15.0824% 15. the method converges on a value of 1053.025340% 15.41111155 4 0.93396 (c) Interestingly.1 I = f (−0. This result is also obtained if you use the composite Simpson’s 1/3 rule with 1024 segments. singularity likely.577350269) + f (0.16502516 15. the quad function encounters a problem and exceeds the maximum number of iterations >> format long >> I = quad(inline('200*x/(7+x)*exp(-2.30) I = 1. but does not yield a very accurate result: >> I = quadl(inline('200*x/(7+x)*exp(-2.30) Warning: Maximum function count exceeded.48081663 15.21768866 15. (b) The transformations can be computed as x= (30 + 0) + (30 − 0) x d = 15 + 15 x d 2 dx = 30 − 0 dx d = 15dx d 2 These can be substituted to yield I = 200 ∫ ⎡ 15 + 15 x d − 2.577350269) = 1162.5*x/30)').38523686.41546811 180 3 2.5*x/30)').

88063803 13.00272915 11.5 − 0 dx d = 0.684096 + 4.75 − 0 dx d = 0.25 + 0.0.99782 For the three-point application.0000% 10.5555556(1.14200015 2 25. the transformed function can be evaluated using the values from Table 17.41260804934509 17.41195836 (b) The transformations can be computed as x= (0.8888889(15.0.55755148 13.75 0 r ⎞ ⎛ 10⎜1 − ⎟ ⎝ 0.65755 (c) >> format long >> I = quad(inline('(10*exp(-x).75 − 0) x d = 0.774596669) + 0.75 ⎠ 1/ 7 2πr dr (a) The tableau depicting the implementation of Romberg integration to εs = 0.7 The integral to be evaluated is I= ∫ 0.237449) + 0.74249225 13.25 xd ) −1 ] 2 sin 2π (0.5 + 0) + (0.684915) = 15.375dx d 2 .75 + 0) + (0.5555556 f (0.^2').5555556 f (−0.098313% 13.67030554 12.00000000 8.577350269) + f (0.25dx d 2 These can be substituted to yield I= ∫ [10e 1 − ( 0.0725% 12.67014971 3 1.74550712 (b) The transformations can be computed as x= (0.25dx d For the two-point application.8888889 f (0) + 0.1 I = 0.5 − 0) x d = 0.25 x d ) 0.577350269) = 7.8 15.1% is iteration → εa → 1 2 4 8 1 0.5) I = 15.25 + 0.375 + 0.1 I = f (−0.73199355 4 0.375 x d 2 181 dx = 0.5555556(2.*sin(2*pi*x)).16327) + 0.25 + 0.25 x d 2 dx = 0.774596669) = 0.313728 = 11. the transformed function can be evaluated using the values from Table 17.

15t ) dt (a) The tableau depicting the implementation of Romberg integration to εs = 0.577350269) + f (0.75 ⎠ ⎢⎣ ⎝ ⎥⎦ ∫ 1 For the two-point application.001212% 322.47335665 2 7.43168560836254 17. the transformed function can be evaluated using the values from Table 17.375 + 0.5t + 2e 0.34961426 4 0.1054% 322.223483672542467e+002 17.0.59571622 322.4179% 317.34570788 (b) >> format long >> y = inline('(9+4*cos(0.15529472 322.86219465 323.375 + 0.1 I = f (−0.68170896 326.34374398 3 0.0.4*x).1% is iteration → εa → 1 2 4 8 1 411.*x'). 4 ∫ ⎡ x3 x2 ⎤ − 3y 2 x + y 3 ⎢ ⎥ dy −2 3 2 ⎦0 ⎣ ∫ ( 4) 3 ( 4) 2 − 3 y 2 ( 4) + y 3 dy −2 3 2 ∫ 2 2 2 −2 21.*(5*exp(-0.33333 − 12 y 2 + 8 y 3 dy 182 .5*x)+2*exp(0.2.375 x d )⎥ 0.8) I = 3.These can be substituted to yield 2 ⎡ ⎛ 0.375dx d −1 0.15*x))') >> I = quadl(y.375 x ⎞1 / 7 ⎤ d I= ⎢10⎜1 − ⎟ 2π (0.9 (a) The integral can be evaluated analytically as.^(1/7)*2*pi.75) I = 14.8 The integral to be evaluated is ∫ I= 8 2 (9 + 4 cos 2 0.4t )(5e −0.26095167 340.577350269) = 14.^2).77171 (c) >> format long >> I = quad(inline('10*(1-x/0.25568988 322.75).

33333( 2) − 4(2) 3 + 2(2) 4 − 21.0. >> dblquad(inline('x.[21.^3'). >> help dblquad A session to use the function to perform the double integral can be implemented as.3333 183 .33333( −2) + 4(−2) 3 − 2(−2) 4 = 21.^2-3*y.^2+x*y.4.33333 y − 4 y 3 + 2y4 ] 2 -2 21.33333 (b) The operation of the dblquad function can be understood by invoking help.-2.2) ans = 21.

074707 0.109863 Euler method (h = 0.058594 0.188424 0.5t + C 4 ln y = Substituting the initial conditions yields C = 0. Substituting this value and taking the exponential gives y = et 4 / 4 −1.25795 0.113525 dy/dt -1.415156 1. t4 − 1.75 2 y 1 0.25 1.92773 -0.34375 -0.5 -0.353292 .778417 tm 0.393066 0.625 0. ∫ dy = t 3 − 1.5 dt y ∫ The integrals can be evaluated to give.1 (a) The analytical solution can be derived by the separation of variables.5 1.5) t 0 0.25 0.5 2 y 1 0.13737 2.269586 0.040434 (c) Midpoint method (h = 0.625 0.351837 0.CHAPTER 18 18.25 1.73718 -0.75 ym 0.2781 -0.536133 0.5 -0.5 -0.03906 0.591802 dy/dt -1.5 0.92773 -0.078125 0.5t (b) Euler method (h = 0.25 0.5 1 1.75 1.25): t 0 0.75 1 1.54047 -0.529695 dy/dt -1.09421 0.5 1 1.5): t 0 0.60976 184 dym/dt -0.164871 0.344153 1.37932 0.183548 0.5 2 y 1 0.17324 0.25 0.346471 0.303162 0.

3738 2.1429 3.5) t 0 0.5912 -0.3960 0. Substituting this value and rearranging gives ⎛ x2 + x + 2 ⎞ ⎟ y = ⎜⎜ ⎟ 2 ⎝ ⎠ 2 Some selected value can be computed as x y 0 0.25) RK4 2 M idpoint 18.4811 0.890625 2.5 2 y 1.5000 -0.336914 1.6615 -0.7008 ym 0.3404 0.4300 0.5) Analytical 1 1.1736 4.3883 0.3154 0.3584 2.5 1 1. 2 y = x + x2 + C Substituting the initial conditions yields C = 2.1186 tm 0.25 1.5489 tm 0.1435 0.6250 0.7681 0.5 Euler (h=0. ∫ dy y ∫ = 1 + 2 x dx The integrals can be evaluated to give.7607 All the solutions can be presented graphically as 3 2 1 0 0 0.6720 13.25 0.25 0.25 0.5 1 1.75 1.3157 0.9034 k3 -1.4269 0.2511 0.0000 0.1401 -0.1170 k4 -0.2 (a) The analytical solution can be derived by the separation of variables.75 1.743164 185 φ -1.1138 2.5 2 ye 0.9277 -0.75 ym 0.75 k2 -0.1338 0.5131 k1 -1.0378 -0.2869 0.25 1.5 0.2676 0.4866 te 0.75 1 1.2786 .5 Euler (h=0.(d) RK4 (h = 0.

1

4

(b) Euler’s method:

y (0.25) = y (0) + f (0,1) h
f (0,1) = (1 + 2(0)) 1 = 1
y (0.25) = 1 + 1(0.25) = 1.25
y (0.5) = y (0.25) + f (0.25,1.25)0.25
f (0.25,1.25) = (1 + 2(0.25)) 1.25 = 1.67705
y (0.5) = 1.25 + 1.67705(0.25) = 1.66926
The remaining steps can be implemented and summarized as
x
0
0.25
0.5
0.75
1

y

dy/dx

1
1.25
1.66926
2.31526
3.26626

1
1.67705
2.584
3.804
5.42184

(c) Heun’s method:

Predictor:
k1 = (1 + 2(0)) 1 = 1
y (0.25) = 1 + 1(0.25) = 1.25
k 2 = (1 + 2(0.25)) 1.25 = 1.6771
Corrector:
y (0.25) = 1 +

1 + 1.6771
0.25 = 1.33463
2

The remaining steps can be implemented and summarized as
x

y

0
0.25
0.5
0.75
1

1
1.33463
1.88364
2.72772
3.97099

k1
1.0000
1.7329
2.7449
4.1290

xe
0.25
0.5
0.75
1

ye
1.25
1.76785
2.56987
3.75996

186

k2
1.6771
2.6592
4.0077
5.8172

dy/dx
1.3385
2.1961
3.3763
4.9731

(d) Ralston’s method:

Predictor:
k1 = (1 + 2(0)) 1 = 1
y (0.1875) = 1 + 1(0.1875) = 1.1875
k 2 = (1 + 2(0.1875)) 1.1875 = 1.49837
Corrector:
y (0.25) = 1 +

1 + 2(1.49837)
0.25 = 1.33306
3

The remaining steps can be implemented and summarized as
x

y

k1

0
0.25
0.5
0.75
1

1
1.33306
1.87974
2.72069
3.95998

1
1.73187
2.74208
4.12363

x + 3/4h
0.1875
0.4375
0.6875
0.9375

y + (3/4)k1h
1.1875
1.65779
2.39388
3.49387

k2
1.49837
2.41416
3.67464
5.37392

dy/dx
1.3322
2.1867
3.3638
4.9572

(e) RK4
x
0
0.25
0.5
0.75
1

y
1.0000
1.3369
1.8906
2.7431
3.9998

k1
1
1.73436
2.74997
4.14056

xm
0.125
0.375
0.625
0.875

0

0.2

ym
1.1250
1.5537
2.2343
3.2606

k2
1.32583
2.18133
3.36322
4.96574

xm
0.125
0.375
0.625
0.875

k3
1.34961
2.2202
3.42043
5.04368

ym
1.1657
1.6096
2.3110
3.3638

4
3
2
1
0
0.4

0.6

Euler

Heun

RK4

Ralston

0.8
Analytical

187

1

xe
0.25
0.5
0.75
1

ye
1.3374
1.8919
2.7457
4.0040

k4
1.73469
2.75096
4.14253
6.00299

φ
1.3476
2.2147
3.4100
5.0271

18.3 (a) Heun’s method:

Predictor:
k1 = −2(1) + (0) 2 = −2
y (0.5) = 1 + (−2)(0.5) = 0
k 2 = −2(0) + 0.5 2 = 0.25
Corrector:
y (0.5) = 1 +

− 2 + 0.25
0.5 = 0.5625
2

The remaining steps can be implemented and summarized as
t

y

0
0.5
1
1.5
2

1
0.5625
0.53125
0.82813
1.41406

k1
-2.0000
-0.8750
-0.0625
0.5938
1.1719

xi+1
0.5
1
1.5
2

yi+1
0
0.125
0.5
1.125

k2
0.2500
0.7500
1.2500
1.7500

dy/dt
-0.875
-0.0625
0.59375
1.17188

(b) As in Part (a), the corrector can be represented as

y i1+1 = 1 +

− 2 + (−2(0) + 0.5 2 )
0.5 = 0.5625
2

The corrector can then be iterated to give
y i2+1 = 1 +

− 2 + (−2(0.5625) + 0.5 2 )
0.5 = 0.28125
2

y i3+1 = 1 +

− 2 + (−2(0.28125) + 0.5 2 )
0.5 = 0.421875
2

The iterations can be continued until the percent relative error falls below 0.1%. This
occurs after 12 iterations with the result that y(0.5) = 0.37491 with εa = 0.073%. The
remaining values can be computed in a like fashion to give
t
0
0.5
1
1.5

y
1.0000000
0.3749084
0.3334045
0.6526523

188

2

1.2594796

(c) Midpoint method

k1 = −2(1) + (0) 2 = −2
y (0.25) = 1 + (−2)(0.25) = 0.5
k 2 = −2(0.5) + 0.25 2 = −0.9375
y (0.5) = 1 + ( −0.9375)0.5 = 0.53125
The remainder of the computations can be implemented in a similar fashion as listed below:
t
0
0.5
1
1.5
2

y
1
0.53125
0.48438
0.77344
1.35547

dy/dt
-2.0000
-0.8125
0.0313
0.7031

tm
0.25
0.75
1.25
1.75

ym
0.5
0.328125
0.492188
0.949219

dym/dt
-0.9375
-0.0938
0.57813
1.16406

(d) Ralston’s method:

k1 = −2(1) + (0) 2 = −2
y (0.375) = 1 + (−2)(0.375) = 0.25
k 2 = −2(0.25) + 0.375 2 = −0.3594
y (0.25) = 1 +

− 2 + 2( −0.3594)
0.5 = 0.54688
3

The remaining steps can be implemented and summarized as
t

y

0
0.5
1
1.5
2

1
0.54688
0.50781
0.80078
1.38477

k1
-2.0000
-0.8438
-0.0156
0.6484

t + 3/4h
0.375
0.875
1.375
1.875

y + (3/4)k1h
0.25
0.230469
0.501953
1.043945

All the versions can be plotted as:

189

k2
-0.3594
0.3047
0.8867
1.4277

dy/dt
-0.9063
-0.0781
0.58594
1.16797

64 3645.66 3984.00 2792.00 pend 2792.29 64.82 77.64 54.95 .45 3814. The estimate of the population growth rate is kg = 0.0178x .15 3335.5 1 1.00 67.80 70.84 3984.46 3051.06 80.04 67.78 k4 49.808 8. 8.6 R = 0.77 74.31 k2 47.85 4169.66 4161.02 4759.5 1 0.49 51.81 74.64 3490.84 56.25 59.1.06 3193.82 77.9976 2 8.81 3645. The plot.4 8.55 3187.48 4354.68 73.29 64.5 0 0 0.4 (a) The solution to the differential equation is p = p0 e kgt Taking the natural log of this equation gives ln p = ln p 0 + k g t Therefore.58 2922. along with the linear regression best fit line is shown below.25 59.53 2916.76 62. a semi-log plot (ln p versus t) should yield a straight line with a slope of kg.40 pmid 2668.97 80.52 51.60 3052.2 8 7.43 51.61 3483.66 61.8 1940 1960 1980 2000 (b) The ODE can be integrated with the fourth-order RK method with the results tabulated and plotted below: t 1950 1955 1960 1965 1970 1975 1980 p 2555.84 190 pmid 2673.92 67.8 y = 0.5 2 Heun without corr Ralston M idpoint Heun with corr 18.91 k3 47.41 49.63 54.0178/yr.99 3335.87 3807.80 k1 45.60 φ 47.41 4556.41 84.94 56.26.54 4548.91 56.80 70.11 81.69 4355.73 62.

85 11575.17 12650.5 1982.29 56.2 3116.86 215.1985 1990 1995 2000 2005 2010 2015 2020 2025 2030 2035 2040 2045 2050 4759.74 10591.35 6213.43 7766.54 5201.98 215.0 1960.54 115.0 2826.75 224.81 65.35 126.29 235.27 8866.07 137.57 92.06 70.72 131.5 1972.24 205.8 4453.88 164.98 6489.20 157.17 5202.43 5443.31 5949.97 11082.59 179.0 ye 2826.01 16000 12000 8000 4000 0 1950 1970 1990 2010 2030 2050 18.555)e −0.0 1985.8 3752.5 4823.6 k4 φ 56.6 3584.6 3425.98 75.0 4453.18 59.82 75.59 172.17 59.30 257.97 75.826.1 52.66 71.3 5012.25 205.24 137.24 10590.5 ym 2685.89 196.5 2971.83 65.24 188.04 5937.3 4271.86 7093.79 150.7 2966.25 8472.6 3266.87 245.74 224.64 6214.70 10139.5 1987.45 15112.52 73.82 75.05 150.88 tm 1952.3 3271.36 96.4 5010.25 7422.5 1967.20 58.15 5685.14 88.9 3920.45 120.4 4823.84 11061.09 14468.5 1987.44 120.8 3425.37 13238.61 214.19 157.61 88.86 .00 76.16 257. For example.46 101.55 73.62 54.2 4635.52 96.60 172.5 1977.06 70.99 63.68 115.05 110.8 k3 54.6 4638.44 88.21 6502.38 12112.37 68.026(1955−1950) Values at the other times can be computed and displayed along with the data in the plot below.1 3589.43 8112.63 71.5 1957.0 1970.5 1967.3 5202.90 180.90 8488.52 73.57 105.64 67.555 + (12.8 4096.6 4095.23 196.95 75.555 12.74 9260.67 9690.00 tm 1952.60 7422.06 110.0 1975.0 1980.000 − 2.06 6791.5 (a) The analytical solution can be used to compute values at times over the range.14 72.5 1962.2 2.50 126.60 164.0 1990.06 61.89 5685.64 67.40 11575.74 15111.46 101.36 68.25 188.41 68.5 1982.86 245.68 4980.96 13826.02 7752.85 256.03 5433.000 = 2.2 3924.22 9690. (b) The ODE can be integrated with the fourth-order RK method with the results tabulated and plotted below: t 1950 1955 1960 1965 1970 1975 1980 1985 p-rk4 k1 2555.79 164.27 58.99 63.76 12651.13 61.80 180.09 61.77 268.5 1972.81 8112.5 191 ym 2690.15 72.31 138.89 te 1955.11 14441.69 105.47 12089.9 3752.93 144.75 105.47 96.93 144.20 10120.71 131.0 1965.88 234.74 115.57 126.60 92.61 13827.6 k2 54.2 4274.87 65.16 235.68 8866.23 58.12 196.76 4971.52 13213.63 71.76 9277.5 1977.5 1957. the value at t = 1955 can be computed as p = 2.75 6791.5 1962.79 84.3 3116.13 7106.97 150.

5 2002.2 77.81 . end Notice how we have used an If statement to use a higher drag coefficient for times after the cord is pulled.5 2017.5 2022.9 7687.5 2027.9 8537.71 76. else % chute is opened dv = 9.77 75.65 1992.62 77.0.4 6172.5 6945.5 2032.98 65.04 60.0 5588.5 5783.4 5588.0 2040.63 78.5 5977.73 77.0 2000.0 2015.5 2047.7 7133.2 6753.41 56. 18.5 6943.5 2002.5 2032.07 74.0 5782.3 8693.7 8849.6 7321.94 77.0 8208.0 7505.20 71.25/80*v^2.5 2012.3).04 74. the RK4 results are so close to the analytical solution that the two results are indistinguishable graphically.5 2017.98 65.5 2027.1990 1995 2000 2005 2010 2015 2020 2025 2030 2035 2040 2045 2050 5202. we develop a function to compute the derivative function dv = dvdt(t.0 76. >> plot(t.5 2007.9 7319.3 5977.21 73.0 2035.43 64.21 73.6 9415.5 8373. First.v] = Eulode(@dvdt.0 2005.05 60.09 70.5 2037.1 77.5 2042.1 6172.5 2012.87 77.7 6561.21 71.0 9141.32 76.01 65.9 7504.81 .76 62.6 8040.0 2045.0 2020.2 8209.61 52.41 56.72 1995. v) if t < 10 % chute is unopened dv = 9.5 6560.1 8537.0 2010.2 8377.21 77.83 68.06 74.4 7684.6 We can solve this problem with the M-file Eulode (Fig.5 2022.85 69.0 2030.[0 30].8 9415. >> [t.5 2047.68 10000 8000 6000 4000 2000 0 1950 1970 1990 pdata 2010 2030 panal 2050 p-rk4 Thus.0 9283.20 77.75 62.5 2042.1 9141.00 77.94 77.0 2025.62 1992.00 77.90 77.63 78.2 9278.8 7134.43 64.32 76.77 75.5 1997.53 54..5 2007.7 6367.56 54.8 6367.91 77.25 58.80 62.18 77.23 58.5 1997.47 67.1).0.5 8036.5 2037.5 5395.4 6753. The Eulode function can then be used to generate results and display them graphically.23 71.9 8849.9 7864.71 76.29 76.v) 192 .5/80*v^2.09 70.90 77.5 5394.5 8697. 18.0 2050.0.47 67.82 68.50 54.8 9000.28 58.3 8995.2 77.0 7864.

99072 dz/dt -16 -10. 2 = f 2 (0.05) = 2.965805 3.1 = f 1 (0.05) = 3.2.4) = − 2( 4) 2 = −16 2 y (0.1 0.18.994714 0.353004 4 2.2 193 .4 (b) 4th-order RK method: k1.730691 3.4 y z 2 3.77687 -3.2 0.05) = 2 + 16(0.2 0.05) = 4 − 16(0.8 z (0.3632 0.4) = −2(2) + 5(4)e −0 = 16 k1.4 1.35114 -3.1 0.10035 5 4 3 y z 2 1 0 0 0.7 (a) Euler’s method: t 0 0.84568 -1.368 -3.2.6 3.658049 -2.3 0.810147 dy/dt 16 3.68486 -1.3 0.

336(0.480984 z (0.3.2832)e −0.2.05. φ1 = 16 + 2(9.107758 z 4 2.1 = f 1 (0.1) = 4 − 13.2)e −0.065342 z (0.8676 = −13.2) = − 2.619671 k 2.065342(2.3.2832)e −0.2.1 0.41043(0.05) = 2.065342.3.628615 1.1 = f 1 (0.662824) = −2(3.410581 1.05.3718(0.480984.619671(0.1) = 3.342571 3. 194 .336 2 y (0.05.619671 + 10.8676 2 The k’s can then be used to compute the increment functions.3.8.2) 2 = −14.2.2) = −2( 2.480984.1) = 2.k 2.480984) + 5(3.1) = 4 − 13.7139(0.041043 3.2832) = − 2.4 y 2 3.8.2832) 2 = −13.1 = 5.2832 k 3.1) = 2 + 10.41043 6 φ2 = − 16 + 2(−14.1. 2 = f 2 (0.1) = 3.05) = 2 + 9.480984(3.2.65342 k 3.662824) 2 = −10.336 − 13.2.149986 A plot of these values can be developed.65342) + 5.065342. 2 = f 2 (0.2.662824 k 4.3718) − 10.7139 6 These slope estimates can then be used to make the prediction for the first step y (0.05) = 3.3.916431 k 4.3 0.3718 2 y (0.041043 z (0.845308 1.916431 = 10.05 = 10.65342(0.065342) + 5(3.1 = f 1 (0.8(3.2 0.1) = 2.301983 3.05 = 9.1.628615 The remaining steps can be taken in a similar fashion and the results summarized as t 0 0.662824) = − 3. 2 = f 2 (0.1) = 2 + 10.3.8) + 5(3.2832) = −2(2.05.05) = 4 − 14.

620015 0. The remainder of the computation would be implemented in a similar fashion and the results displayed in the plot below.67847 .9 0.8 The second-order van der Pol equation can be reexpressed as a system of 2 first-order ODEs.134407 -0.64257 -1.19 1.4896 0.6200145 0.5 4 3 y z 2 1 0 0 0.1).1) 1 1.9 0.18743 dz/dt -1 -1.2 0.4557574 dy/dt 1 0.2).25901 (b) Euler (h = 0.1 0.51085 -1.1344072 -0.2 1.2 0.1 0.289 -1.4 y (h = 0. Here are the first few steps.6092 -1.1) 1 0. t 0 0.8 0.187433 dy/dt 1 0.7711 0.2) 1 1.26711 1.36 1.2 0.77596 -1. dy =z dt dz = (1 − y 2 ) z − y dt (a) Euler (h = 0.2) 1 0. t 0 0.45792 1.552 -1. Here are the first few steps.8 0.7711 0.4 18.4 0.455757 195 dz/dt -1 -1. The remainder of the computation would be implemented in a similar fashion and the results displayed in the plot below.3 0.3291115 z (h = 0.4896 0.3 0.8 y (h = 0.1 1.4848014 z (h = 0.6 0.

19 -6.2129 yanalytical 1 0. dy =z dt dz = −9 y dt (a) Euler.62161 0.91 0.y (h = 0.619 -3.276 dz/dt -9 -9 -8.3 0.2) z (h = 0. Here are the first few steps along with the analytical solution.1) z (h = 0.4681 0 -0.955336 0.619 -3.1 0.362358 yEuler yanal 1 2 196 3 4 .1) y (h = 0.9 -1.73 0.8 -2.9 -1.2) 4 3 2 1 0 -1 0 2 4 6 8 10 -2 -3 -4 18. The remainder of the computation would be implemented in a similar fashion and the results displayed in the plot below.2 0.9 The second-order equation can be reexpressed as a system of two first-order ODEs.276 0 -0.825336 0. t 0 0.4 4 3 2 1 0 -1 0 -2 -3 -4 -5 yEuler zEuler dy/dt 1 1 0.57 -4.8 -2.

45) − 0.05.45 k 3.9553 z (0.9775.1 = f 1 (0.45)(0.−0.7975 y (0.45 − 0.05) = 0. φ1 = 0 + 2(−0.4466(0.45) = −9(1) = −9 y (0.7975) − 8.1) = −0. Here are the first few steps along with the analytical solution. 2 = f 2 (0.0.1) = 0.45) = −0.05) = 1 + 0(0.8798) = −9(0.1) = 0 − 8.45) = −0.1 = f 1 (0.1) = 0.9550) = −8.1 = f 1 (0. 2 = f 2 (0.9550.45 k 2.8650 6 These slope estimates can then be used to make the prediction for the first step y (0.−0.45) = −9(0.1.05) = 0 − 9(0.1.05) = 1 + ( −0.9775 z (0.1.7975(0.1) = 1 − 0.1.1) = 0 − 8.8798 k 4.1.45)(0.9775) = −8.1 = f 1 (0.1) = 1 + (−0.05.0) = z = 0 k1.8650(0.05.(b) RK4. k1.0) = −9 y = −9(1) = −9 y (0.−0.45 k 2.05.9550.−0.9775.1) = −0.05) = 0 − 9(0.8798) = −0. 2 = f 2 (0. 2 = f 2 (0.45 k 3.05) = −0.8865 The remaining steps can be taken in a similar fashion and the first few results summarized as 197 .0.5950 = −8.−0.05) = −0.0.5950 The k’s can then be used to compute the increment functions. The remainder of the computation would be implemented in a similar fashion and the results displayed in the plot below.0.8798 k 4.4466 6 φ2 = − 9 + 2(−9 − 8.9550 z (0.1.8798 = −0.05) = 1 z (0.−0.

36236 0.07074 As can be seen. end %if es blank set to 0. t = (ti:h:tf)'. es = 0.6938 -2.y] = Heun(dydt.h. end %if maxit blank set to 50 if nargin<5.001.0000 0. add an additional value of t 198 4 .95534 0. maxit = 50.2 0. tf = tspan(2).7960 -2.001 ti = tspan(1).tspan.9924 yanal 1.82534 0. the results agree with the analytical solution closely.y0.5 y 1. 4 3 2 1 0 -1 0 -2 -3 -4 -5 yRK4 yanal 1 2 3 18. % if necessary. A plot of all the values can be developed and indicates the same close agreement.10 A MATLAB M-file for Heun’s method with iteration can be developed as function [t.6216 0. n = length(t).y0.y] = Heun(dydt.9553 0. assign default values if nargin<6.001) % maxit = maximum iterations of corrector % optional (default = 50) % es = (optional) stopping criterion (%) % maxit = (optional) maximum allowable iterations % output: % t = vector of independent variable % y = vector of solution for dependent variable % if necessary.0000 -0.h): % uses the midpoint method to integrate an ODE % input: % dydt = name of the M-file that evaluates the ODE % tspan = [ti.8865 -1.4 0.1 0.t 0 0.00000 0.es.0708 z 0.3624 0.3 0.62161 0.8253 0. tf] where ti and tf = initial and % final values of independent variable % y0 = initial value of dependent variable % h = step size % es = stopping criterion (%) % optional (default = 0.tspan.3498 -2.maxit) % [t.

1).9950 2.1).9650 1.7523 4.0000 2.5550 2.5868 5. break. ea = abs((y(i+1) . y(i+1) = y(i) + k1*hh.2555. >> disp([t.4527 4. Then the M-file can be invoked as in >> [t.y(i)).0.5.4256 3. First. an M-file holding the differential equation is written as function dp = dpdt(t.8222 5. while (1) yold = y(i+1).0953 4.p]) 1.9550 1.9900 1.026*(1-p/12000)*p.9600 1.t(i)+hh.[1950 2000].% so that range goes from t = ti to tf if t(n)<tf t(n+1) = tf.9500 1.5. end y = y0*ones(n.t(i).9759 The following plot is generated 199 . end end end plot(t. y(i+1) = y(i) + (k1+k2)/2*hh. iter = iter + 1. k2 = feval(dydt.8261 3.2012 5.9750 1. p) dp = 0.y) Here is the test of the solution of Prob.t(i).0e+003 * 1. %preallocate y to improve efficiency iter = 0.9800 1.p]=Heun(@dpdt. 18.y(i+1)).1165 3. for i = 1:n-1 hh = t(i+1) . k1 = feval(dydt. if y(i+1) ~= 0. n = n+1. end if ea <= es | iter >= maxit.9700 1.9850 1.yold)/y(i+1)) * 100.

k1 = feval(dydt.y0. n = length(t). % if necessary. y(i+1) = y(i) + k2*hh. 18.tspan. end plot(t. end y = y0*ones(n.y] = midpoint(dydt.y] = midpoint(dydt. t = (ti:h:tf)'. add an additional value of t % so that range goes from t = ti to tf if t(n)<tf t(n+1) = tf. ymid = y(i) + k1*hh/2. tf] where ti and tf = initial and % final values of independent variable % y0 = initial value of dependent variable % h = step size % output: % t = vector of independent variable % y = vector of solution for dependent variable ti = tspan(1). n = n+1. 200 .026*(1-p/12000)*p.ymid).5.h) % [t.1).y) Here is the test of the solution of Prob.y(i)). p) dp = 0. an M-file holding the differential equation is written as function dp = dpdt(t.t(i)+hh/2.h): % uses the midpoint method to integrate an ODE % input: % dydt = name of the M-file that evaluates the ODE % tspan = [ti. First.11 A MATLAB M-file for the midpoint method can be developed as function [t.18.tspan.t(i).t(i). %preallocate y to improve efficiency for i = 1:n-1 hh = t(i+1) . k2 = feval(dydt.y0. tf = tspan(2).

9700 3.p]=midpoint(@dpdt.4253 1.y] = rk4(dydt.2555.9500 2.9776 The following plot is generated 18.8227 1.tspan.8260 1. tf = tspan(2). t = (ti:h:tf)'.7521 1.9900 5.[1950 2000].p]) 1.y0.1163 1.9650 3.9550 2.9950 5. n = length(t). tf] where ti and tf = initial and % final values of independent variable % y0 = initial value of dependent variable % h = step size % output: % t = vector of independent variable % y = vector of solution for dependent variable ti = tspan(1). add an additional value of t 201 .h): % uses the fourth-order Runge-Kutta method to integrate an ODE % input: % dydt = name of the M-file that evaluates the ODE % tspan = [ti.0953 1.y0.h) % [t.12 A MATLAB M-file for the fourth-order RK method can be developed as function [t.tspan.9850 4.0000 5.9800 4.5881 2.9600 3. >> disp([t.y] = rk4(dydt.Then the M-file can be invoked as in >> [t. % if necessary.5550 1.9750 4.2021 1.5).0e+003 * 1.4529 1.

end plot(t. yend = y(i) + k3*hh.2544 0. y(i+1) = y(i) + phi*hh.5000 1.8906 0.7000 2.6384 0. k2 = feval(dydt.1000 1.% so that range goes from t = ti to tf if t(n)<tf t(n+1) = tf. k1 = feval(dydt.6000 2. k3 = feval(dydt.0000 The following plot is generated 202 . n = n+1.8000 2.1130 0.4280 0. Then the M-file can be invoked as in >> [x.0000 4.5440 0.t(i).9000 3. >> disp([x. ymid = y(i) + k1*hh/2.2.ymid).3000 1. end y = y0*ones(n.1.t(i)+hh/2.yend).y] = rk4(@dydx.2000 1.y(i)).4410 1.9584 0. y) dy = (1+2*x)*sqrt(y).1). ymid = y(i) + k2*hh/2.t(i). k4 = feval(dydt.t(i)+hh/2. First. %preallocate y to improve efficiency for i = 1:n-1 hh = t(i+1) .y) Here is the test of the solution of Prob.t(i)+hh.0000 0. an M-file holding the differential equation is written as function dy = dydx(x.4000 1.1).1904 0. 18.ymid). phi = (k1+2*(k2+k3)+k4)/6.0.y]) 0 1.[0 1].

y2] = rk42(dy1dt.t(i)+hh/2.1). k22 = feval(dy2dt. % if necessary.y1.y1. ymid2 = y2(i) + k22*hh/2.ymid2). ymid1 = y1(i) + k21*hh/2. tf = tspan(2). t = (ti:h:tf)'. ymid2 = y2(i) + k12*hh/2. function [t.t(i).y20.y10. end y1 = y10*ones(n.tspan.y2(i)).y2] = rk42(dy1dt.h) % [t. for i = 1:n-1 hh = t(i+1) .ymid2).ymid2). tf] where ti and tf = initial and % final values of independent variable % y10 = initial value of first dependent variable % y20 = initial value of second dependent variable % h = step size % output: % t = vector of independent variable % y1 = vector of solution for first dependent variable % y2 = vector of solution for second dependent variable ti = tspan(1).ymid1. k31 = feval(dy1dt. k11 = feval(dy1dt.ymid1.dy2dt. add an additional value of t % so that range goes from t = ti to tf if t(n)<tf t(n+1) = tf.t(i).dy2dt. 203 .t(i). k21 = feval(dy1dt.t(i)+hh/2.18.y2(i)).y20. n = length(t).h): % uses the fourth-order RK method to integrate a pair of ODEs % input: % dy1dt = name of the M-file that evaluates the first ODE % dy2dt = name of the M-file that evaluates the second ODE % tspan = [ti. k12 = feval(dy2dt. The first program shown below is strictly developed to solve 2 equations.y1(i).ymid1.y1(i). ymid1 = y1(i) + k11*hh/2.1).tspan.y10. n = n+1.t(i)+hh/2. %preallocate y's to improve efficiency y2 = y20*ones(n.13 Note that students can take two approaches to developing this M-file.

k41 = feval(dy1dt.0.3020 1.y1.t(i)+hh/2. y2) dy = -y1*y2^2/2. >> disp([t.2000 3.tspan.yend2). y1. 18.3000 3.7.0000 4.4000 3.0410 2.1). First.8453 0.t(i)+hh. yend2 = y2(i) + k32*hh.4106 0. y2) dy = -2*y1 + 5*y2*exp(-t).@dy2dt.4.t.y0.y2]) 0 2. end plot(t.yend2).[0 0.yend1.0000 0. yend1 = y1(i) + k31*hh.ymid1.h) 204 . y1(i+1) = y1(i) + phi1*hh. phi2 = (k12+2*(k22+k32)+k42)/6.t(i)+hh.1000 3.ymid2). y2(i+1) = y2(i) + phi2*hh.y2]=rk42(@dy1dt. y1.1078 1.k32 = feval(dy2dt.3426 1. Then the M-file can be invoked as in >> [t. k42 = feval(dy2dt.y] = rk4sys(dydt.2.6286 0. phi1 = (k11+2*(k21+k31)+k41)/6.y2.'--') Here is the test of the solution of Prob.4].yend1.1500 The following plot is generated A better approach is to develop an M-file that can be used for any number of simultaneous first-order ODEs as in the following code: function [t. function dy = dy2dt(t.y1. M-files holding the differential equations are written as function dy = dy1dt(t.y1.

3000 3. for i = 1:n-1 hh = t(i+1) .t(i)+hh/2.y(i. >> disp([t. n = length(t).0410 2. end y(1. k3 = feval(dydt.:) + k1*hh/2.0000 4.y]) 0 2.1500 205 .1). yend = y(i.t(i). k1 = feval(dydt. k2 = feval(dydt. % if necessary.:))'.% [t.1000 3.3020 1.:) + k2*hh/2.4000 3. t = (ti:h:tf)'.[2 4].:) + phi*hh. k4 = feval(dydt.4].t.t(i). ymid = y(i.2000 3.y(:. First.3426 1.1). add an additional value of t % so that range goes from t = ti to tf if t(n)<tf t(n+1) = tf.'--') This code solves as many ODEs as are specified. n = n+1.h): % uses the fourth-order RK method to integrate a pair of ODEs % input: % dydt = name of the M-file that evaluates the ODEs % tspan = [ti.y0.[0 0.-y(1)*y(2)^2/2].6286 0. tf = tspan(2).0000 0. ymid = y(i.y(:. tf] where ti and tf = initial and % final values of independent variable % y0 = initial values of dependent variables % h = step size % output: % t = vector of independent variable % y = vector of solution for dependent variables ti = tspan(1).7. y(i+1. Then the M-file can be invoked as in >> [t.y] = rk4sys(dydt.tspan. a single M-file holding the differential equations can be written as function dy = dydtsys(t. end plot(t.2).0.1078 1.yend)'.t(i)+hh/2.t(i)+hh.4106 0.ymid)'.:) = y(i. 18. phi = (k1+2*(k2+k3)+k4)/6. Here is the test of the solution of Prob.8453 0.:) + k3*hh. y) dy = [-2*y(1) + 5*y(2)*exp(-t).:) = y0.ymid)'.y]=rk4sys(@dydtsys.

9639 0.9519 0. This is also illustrated by a state-space plot (y versus x): 16 12 8 4 0 0 4 8 12 16 (b) RK4.1 0.2974 1.1607 -0.2.1) = 1.6 k1.9404 dx/dt 1.2497 2.6093 1.4 0.0000 0.9800 0.0359 0.1200 2.5028 1.1 206 .1206 -0.0096 The computation can be continued and the results plotted versus time: 16 x y 12 8 4 0 0 5 10 15 20 25 30 Notice that the amplitudes of the oscillations are expanding.3 0. k1.3896 2.5 x 2.7008 y 1.7(2)(1) = 1.9(1) + 0. Here is the first step in detail.2000 1.2 0. Here are the first few steps t 0 0.5399 2.9440 0.5(2) − 0.7171 dy/dt -0.2. 2 = f 2 (0.3985 1.4(2)(1) = −0.1) = −0.2000 -0.CHAPTER 19 19.0791 -0.1 (a) Euler’s method.0000 2.1 = f 1 (0.

06766 x(0.4 0.083564 y (0.1 = f 1 (0.042891 207 .6 + 2(1.2.06682(0.1(0.993365) = −0.995) = −0.671656 6 φ2 = − 0.08 y (0.2.017509 1.03291 The k’s can then be used to compute the increment functions.993588 1.1) = 1 − 0.06635) − 0.6(0. 2 = f 2 (0.2.743808 = 1.5 x 2 2.03291 = −0.1) = 2.671785 k 3.3 0.0.06766 − 0.167166 2.995) = 1.2. 2 = f 2 (0.06682 6 These slope estimates can then be used to make the prediction for the first step x(0.05.2.05.996617) = 1.05) = 2.993365) = 1.1 = f 1 (0.671656(0.993318 0.993318 The remaining steps can be taken in a similar fashion and the first few results summarized as t 0 0. φ1 = 1.0.2 0.1) = 2.08.1.16766 y (0.05) = 0.1) = 1 − 0.1 = f 1 (0.1. 2 = f 2 (0.0.993365 k 4.05.671785(0.08.978663 y 1 0.2.05) = 0.1) = 0.755314 2.1 + 2(−0.996617) = −0.001398 1.0.167179.167179 y (0.167179.995 k 2.05) = 2 + 1.743808 k 4.0.06635(0.05) = 2.05) = 2 + 1.083564.545029 2.0.083564.05) = 1 − 0.05.67128 + 1.x(0.1 0.05) = 1 − 9(0.996617 k 3.67128(0.348838 2.1) = 0.1) = 2 + 1.1) = 2 + 1.06635 x(0.67128 k 2.671785) + 1.

the solution and plot can be obtained: >> [t.[2 1]). Note that in contrast to Euler’s method.'y(predator)') 208 .4*y(1)*y(2)]. function yp = predprey(t.'--') >> legend('x(prey)'.y(:. the cycles do not amplify as time proceeds.t.y] = ode45(@predprey.2).-0.[0 30].A plot of all the values can be developed. Because this is the expected behavior we can see that the RK4 is far superior to Euler’s method for this particular problem. first a function is developed to evaluate the predator-prey ODEs.y) yp = [1. 6 x y 4 2 0 0 5 10 15 20 25 30 This periodic nature is also evident from the state-space plot.9*y(2)+0.5*y(1)-0.y(:.7*y(1)*y(2). Then. 5 4 3 2 1 0 0 1 2 3 4 5 (c) To implement ode45.1). >> plot(t.

57588 -8.4 0.88719 -11.14148 29.81088 0.84678 5 17.07462 22.9 1 x y z 5 9.43 -7.80001 33.78147 17.30744 28.3 0.6789 -13.2 (a) Here are the results for the first few steps as computed with the classical RK4 technique t 0 0.6668 -6.92312 22.30717 The results from t = 0 to 20 can be displayed graphically as 50 x y z 40 30 20 10 0 -10 0 5 10 -20 -30 209 15 20 .54419 -5.1646 -5.89688 39.1 0.6 0.549578 -3.8 0.2 0.52924 -5.70297 10.43018 5 10.42037 -12.8741 -2.39903 29.84128 -8.9142 -10.43947 35.36888 19.07946 20.5 0.7 0.19.21784 -3.

t.[5 5 5]). 50 40 30 20 10 0 -20 -10 0 10 20 (b) To implement any of the MATLAB functions.-2.'--'.t. the solution and plots for the ode23 function can be obtained: >> >> >> >> [t.y(:.1). here is the plot of y versus x.1).'z') plot(y(:.y) yp = [-10*y(1)+10*y(2). For example.y(:.2)) 210 .3).y] = ode23(@lorenz. Then. an underlying pattern emerges when we look at the statespace plots.666667*y(3)+y(1)*y(2)]. first a function is developed to evaluate the Lorenz ODEs. Although the pattern might appear random. plot(t.'y'.2).y(:.y(:.The solution appears chaotic bouncing around from negative to positive values.[0 20].28*y(1)-y(2)-y(1)*y(3). function yp = lorenz(t. 25 15 5 -20 -5 0 -10 10 20 -15 -25 And here is z versus x.':') legend('x'.

t.':') >> legend('x'.y(:. >> plot(t.'--'.1).Notice how this plot.[0 20].y] = ode45(@lorenz.'y'.2).y(:.1).y(:.2)) (c) The ode45 again differs in the details of the time-series plot.t. although qualitatively similar to the constant step RK4 result in (a). the details are quite different.[5 5 5]).3).y(:. >> [t. However.'z') 211 . >> plot(y(:. the state-space representation looks much more consistent.

(d) The ode23tb also differs in the details of the time-series plot. >> [t.':') >> legend('x'. after awhile. >> plot(t. When the discrepancy becomes large enough (which for these equations is not that much).2). After a number of steps. Such solutions are said to be chaotic.[5 5 5]). they begin to diverge slightly. the solution will tend to make a large jump. It was this characteristic of these particular equations that led Lorenz to suggest that long-range weather forecasts might not be possible.'z') Close inspection of all the above results indicates that they all yield identical results for a period of time.y(:. 19.t. Thereafter.y(:. Thus.3).3 First step: 212 . the various solutions become uncorrelated.t.y] = ode23tb(@lorenz.1).y(:. The reason for this behavior is that these equations are highly sensitive to their initial conditions.[0 20]. because they all employ different algorithms.'--'. they abruptly begin to diverge.'y'.

5(4.5(3.Predictor: y10 = 5.5 = 2.579010) + e −3 0. we can develop the analytical solution as y= t3 −t e3 Thus.573931 0.% 1 2 2.573205 2 The corrector can be iterated to yield j yi+1j ε a .5 0.271558 0.269562 2 The corrector can be iterated to yield j yi+1j ε a .5 − 0.5(4.782868 0. the true values being simulated in this problem are t y 0 0.271558 + 1 − 0.285532) = 2.143883+[−0.222138+[−0.061 Second step: Predictor: y20 = 4.632337 213 .285532) + e −2.5(3.573205 2.143883 + 1 − 0.4 Before solving.5 1 0.5(2.25 0.269562 3.5]1 = 2.271558) + e −2.5 = 3.143883) + e −2 − 0.590189+4/5(3. for comparative purposes.271558-3.0282 19.285532 Corrector: y1 = 4.271558)+e−2.% 1 2 3.590189 Predictor Modifier: y20 = 2.143883)+e−2]1 = 3.579010 Corrector: y 2 = 3.5(3.

1) = 1(0) 2 − 1 = −1 y (0.63188975.125.7339 + (0.25) = 0.125) = 1 − 1(0.7339 + (0. The second step can then be implemented with the non-self-starting Heun method: Predictor: y (0. (b) The implicit Euler can be written for this problem as ( ) y i +1 = y i + − 100.25 = 0.89233) = −0.5) 2 − 0.7828723(0.0.633028629) 0.The first step is taken with the fourth-order RK: k1 = f (0.73163 φ= − 1 + 2(−0.875) = −0.125) = 0.7828723)0.87839(0.63178298 2 Corrector: (Second iteration): y (0.5) = 1 + (0. 19.73163 = −0.5) 2 − 0.125) = 0.25) = 0.875 k 2 = f (0.0.000 = 2×10−5.7828723 + − 0.999e −ti +1 h 214 .86851(0.63178298) 0.633028629 Corrector: (First iteration): y (0.7828723 This result compares favorably with the analytical solution.87839 y (0.5) = 0.861328 y (0.87839) − 0.25 = 0.000 y i +1 + 99.86851 6 y (0.78040) = −0.63189976 2 The iterative process can be continued with the final result converging on 0.25) = 1 − 0.5 = 0.25) 2 − 0.125) = 1 − 0.125.89233 k 3 = f (0.5 (a) h < 2/100.63178298(0.5) = 0.78040 k 4 = f (0.861328(0.861328 − 0.633028629(0.25.7828723 + − 0.0.25) = 1 − 0.

8 0.760677 t 1.270163 3.999e − ti +1 h 1 + 100.4 0.which can be solved for y i +1 = y i + 99.2 -0.444484 0.3 0.1 0.877341 t y 2.5 0 1.4 0.50089 4 -0.6 -0.79745 .606531 2 1 0 0 1 2 19.000h The results of applying this formula for the first few steps are shown below.993242 0.818731 1.6 The implicit Euler can be written for this problem as y i +1 = y i + (30(sin t i +1 − y i +1 ) + 3 cos t i +1 )h which can be solved for y i +1 = y i + 30 sin t i +1 h + 3 cos t i +1 h 1 + 30h The results of applying this formula are tabulated and graphed below.12525 215 t y 3.4 0. t y 0 0 0.740819 1.6 2 y 0.67032 1.2 0.952306 0. A plot of the entire solution is also displayed t y 0 0.622925 2.8 0.2 1.904638 1.

1.2 -1.95⎤ ⎧ x1.73E+10 -3000 147100 -7207805 3. we substitute the initial conditions for the right-hand side and solve the 2x2 system of equations.i 1000hx1.15 353186 0. if the matrix is inverted.95 − 99.i +1 = x 2 . we will use the matrix inverse to obtain the solution.05 150.i ⎬⎭ ⎣⎢ 50 Thus.i − 2000 x 2.7E+07 x2 1 -149 7206 -353184 17305943 dx1/dt dx2/dt 2998 -147102 7207803 -3.2 0. to solve for the first time step.i + (− 1000 x1.i +1 )h or collecting terms (1 − 999h) x1.i + (999 x1.i +1 + (1 + 2000h) x 2 . For the present case.i +1 ⎬⎭ ⎨⎩ x 2 .i +1 = x1.05 and expressing in matrix format ⎡ − 48.7E+10 (b) The implicit Euler can be written for this problem as x1.7 (a) The explicit Euler can be written for this problem as x1.i +1 − 1999hx 2 .i + ( − 1000 x1. 216 .i +1 = x1. the solution for the first step amounts to the matrix multiplication. because its easier to display.1 -7204.i ⎫ 101 ⎥⎦ ⎨⎩ x 2 . The best way to do this is with LU decomposition since we will have to solve the system repeatedly.i +1 = x 2.i + 1999 x 2.5 0 -0.i + (999 x1.5 0 1 2 3 4 -1 19.i )h Because the step-size is much too large for the stability requirements.i or substituting h = 0.5 1 0.9 0.i +1 )h x 2 . t x1 0 1 0.i +1 = x1.i +1 − 2000 x 2 .i +1 = x 2 .i )h x 2.53E+08 -1. the solution is unstable.i +1 ⎫ = ⎧ x1.i +1 + 1999 x 2 .5E+08 1. Thus.

64705 The results are plotted below.752568 ⎤1 ⎨x ⎬ = ⎢ − 0.9141⎥ − 184781 . − 181472 ⎣ ⎦ 2 .05 0. y = t 2 + 0. 217 .62878 ⎨x ⎬ = ⎢ − 0.2 1 3.i +1 ⎭ For the second step (from x = 0.4t + 0.752568 = 3.1).292457 1 -1.93371 − 0.08 Note that even though the choice of the initial condition removes the positive exponential terms.9141⎥ 1 = − 184781 .457057 3.i +1 ⎫ ⎡ 1886088 . Very tiny round off errors in the numerical solutions bring it to the fore.752568 3. along with a solution with the explicit Euler using a step of 0. Hence all of the following solutions eventually diverge from the analytical solution.72938 -1. { }{ } ⎧ x1.81472 -1. .84781 -1. ⎤ 3.93371 − 0. 1 + i ⎩ ⎭ The remaining steps can be implemented in a similar fashion to give t x1 x2 0 0. The plot shows the numerical solution (bold line) along with the exact solution (fine line). 3.05 to 0. x1 4 2 0 0 0. ⎣ ⎦ ⎩ 2 . 186648 .0005.1 -2 0.8.62878 3.15 0.08 If the initial condition at t = 0 is 0.1 0.4t + 0. (b) 4th order RK. 186648 .8 (a) The exact solution is y = Ae 5t + t 2 + 0.2 x2 19.i +1 ⎫ ⎡ 1886088 . it still lurks in the background. A = 0.{} { } ⎧ x1.

30 20 10 0 -10 0 -20 1 2 3 4 5 -30 RK4 Analytical ODE23s ODE23tb ODE45 19.tspan.y) yp = 5*(y-t^2).08.tspan. (e) >> [t.85832612842764 (b) Using ode45 is based on recognizing that the evaluation of the definite integral 218 .1) ans = 29. >> tspan = [0.y] = ode45(@dy1. (d) >> [t. >> [t.15 10 5 0 -5 0 1 2 3 4 -10 (c) function yp = dy(t.y] = ode23tb(@dy1. >> y0 = 0.y0).y0).5].y0).y] = ode23s(@dy1.0.5.9 (a) As in Example 17. the humps function can be integrated with the quad function as in >> format long >> quad(@humps.tspan.

>> disp([x.78356481821654 1.-9. function dy = humpsODE(x./((x-0.78683736423308 1.y] = ode45(@humpsODE.85832514287622 19.85525185285369 Thus. A function can be developed to compute the right-hand-side of this pair of ODEs for the case where g = 9.9) 2 + 0. the integral can be evaluated as >> [x.10 The nonlinear model can be expressed as the following set of ODEs.6.3). Then.6*sin(y(1))].81/0.0).y]) 0 0 0. dθ =v dt g dv = − sin θ dt l where v = the angular velocity.9). 219 .01) + 1.I= ∫ b a f ( x) dx is equivalent to solving the differential equation dy = f (x) dx for y(b) given the initial condition y(a) = 0.01 ( x − 0./((x-0.04 where y(0) = 0.3) + 0.6 m.00000000000000 29.y) dy = 1.[0 0.1e-8). Thus. Note that a better estimate can be obtained by using the odeset function to set a smaller relative tolerance as in >> options = odeset('RelTol'.0. >> disp([x. we must solve the following initial-value problem: dy 1 1 = + −6 2 dx ( x − 0. y) dy = [y(2).^2 + 0. we must first set up an M-file to evaluate the righthand side of the differential equation.5 1].y] = ode45(@humpsODE.50000000000000 21.50000000000000 21.81 and l = 0.^2+0.01% of the estimate obtained with the quad function.00000000000000 29. >> [x.[0 0.y]) 0 0 0.04) . the integral estimate is within 0.options). To do this with ode45. function dy = dpnon(t.5 1].

yl(:.[0 10]. Second.'linear') 220 .1). because the displacement is small.6*y(1)]. the solution and plot can be obtained for the case where θ(0) = π/8.tl. [tl yl] = ode45(@dplin.The linear model can be expressed as the following set of ODEs. plot(tn. dθ =v dt g dv =− θ dt l A function can be developed as.1). the solution and plot can be obtained as.'--') legend('nonlinear'. First.1).yn(:.yl(:.1).yn(:. the two solutions diverge as the computation progresses.'--') legend('nonlinear'.[pi/2 0]). the linear solution provides a decent approximation of the more physically realistic nonlinear case. For the larger initial displacement (θ(0) = π/8). function dy = dplin(t. Note that we only depict the displacement (θ or y(1)) in the plot >> >> >> >> [tn yn] = ode45(@dpnon.[pi/8 0]). y) dy = [y(2). Then.[pi/8 0]).[0 10].[pi/2 0]).'linear') You should notice two aspects of this plot.[0 10].tl. plot(tn.[0 10].81/0. >> >> >> >> [tn yn] = ode45(@dpnon.-9. [tl yl] = ode45(@dplin.

2555).026*(1-p/12000)*p. p) yp = 0.t. >> >> >> >> tspan = 1950:5:2000. 19.tspan.Because the linear approximation is only valid at small displacements. function yp = dpdt(t.'o') The sum of the squares of the residuals can be computed as 221 . there are now clear and significant discrepancies between the nonlinear and linear cases that are exacerbated as the solution progresses. The function ode45 can be used to integrate this equation and generate results corresponding to the dates for the measured population data. pdata = [2555 2780 3040 3346 3708 4087 4454 4850 5276 5686 6079]'.pdata. [t. A plot can also be generated of the solution and the data.p.p] = ode45(@dpdt. plot(t.11 A function can be developed to compute the right-hand-side of the ODE.

pdata).2365e+004 222 .>> SSR = sum((p .^2) SSR = 4.

0125 0.085355⎨ 1 ⎬ ⎪⎩0.71428571⎫⎪ ⎧⎪0.085355 = 11.75⎫⎪ ⎧⎪0.75⎪⎭ ⎪⎩0.025 0.75⎪⎭ Iteration 2: ⎡0. 223 . This can be done in MATLAB.0125⎤ ⎧⎪1⎫⎪ ⎧⎪0.0125⎤ ⎧⎪0.0625⎫⎪ ⎧⎪0.0375⎥⎦ ⎪⎩0.1⎨ 1 ⎬ ⎢⎣0.075⎫⎪ ⎧⎪0.71428571⎪⎭ εa = 0.2 (a) Minors: (2 − λ ) 3 −4 λ 4 8 3 − λ = − λ3 + 10λ2 + 101λ + 18 8 4 7 − λ − 2 10 7 − λ + 10 10 4 (b) The eigenvalues can be determined by finding the roots of the characteristic polynomial determined in (a).0125⎤ ⎧⎪0.0875 × 100% = 2.1 The matrix inverse can be evaluated and the power method expressed as ⎡0.71428571⎫⎪ 1 ⎢ 0.0125⎤ ⎢ 0.0875 − 0.71573.0375 0.70710678⎪⎭ Thus. the relative error falls to 0.0875 Iteration 3: ⎧⎪0. the smallest eigenvalue is 1/0.025 0.025 0.71428571⎪⎭ ⎪⎩0.0875⎨ ⎬ ⎢⎣0.CHAPTER 20 20.025 0.025 0.025 ⎥ ⎨1⎬ = ⎨ 0.085714⎨ ⎢⎣0.0125 0. 20.085714 − 0.1 × 100% = 14.025 0.025 0.1 ⎬ = 0.0625⎪⎭ ⎪⎩0.025 0.085714⎬ = 0.025 0.075⎪⎭ ⎪⎩0.29% 0. After 10 iterations.0375 0.0375 0.05 0.05 0.060714⎫⎪ 1 1 ⎢ 0.08% 0.025 ⎥ ⎨ ⎬ ⎬ = ⎨0.025 0.0125 0.0375 0.70710678⎫⎪ 0.025 ⎥ ⎨ 1 ⎬ = ⎨0.05 0.708333⎫⎪ ⎡0.025 0.025 ⎥ − λ[ I ] = 0 ⎢⎣0.00000884% with the result ⎧⎪0.0375⎥⎦ ⎪⎩0.060714⎪⎭ ⎪⎩0.085714 The iterations can be continued.05 0.0875⎬ = 0.0125 0.75⎫⎪ ⎢ 0.025 0.0375⎥⎦ ⎪⎩1⎪⎭ ⎪⎩0.0375⎥⎦ Iteration 1: ⎡0.708333⎪⎭ εa = 0.

2610 13.0000 Third iteration: >> x = A*x x = 13.2741 -6.5661 >> e = max(x) e = 224 . >> roots(a) ans = 16.5263 >> e = max(x) e = 15.0000 -10.7895 1.1815 (c) The power method for the highest eigenvalue can be implemented with MATLAB commands.0000]. >> x = [1 1 1]'.0926 -0.7368 0.0526 12.0000 -101.7898 1.10 4 5].8407 0.2632 15.0000 Second iteration: >> x = A*x x = 13.0949 16.0000 -18. >> A = [2 2 10.>> a = [1.5263 >> x = x/e x = 0.8 3 4. First iteration: >> x = A*x x = 14 15 19 >> e = max(x) e = 19 >> x = x/e x = 0.

5661 >> x = x/e x = 0. >> A = [2 2 10.6667 -5.0000 -0.0000 0.7905 1.0556 -0.1668 >> e = max(x) e = 16.8154 0. (d) The power method for the lowest eigenvalue can be implemented with MATLAB commands.2222 >> [e.1668 >> x = x/e x = 0.i] = max(abs(x)) e = 1 i = 2 >> x = x/x(i) x = -0.0000 Thus.0000 -0. >> AI = inv(A) AI = -0.1111 1.0000 0.2222 4.7902 1.3889 -1.2222 225 .8 3 4.6667 -1.7753 16.1819 12.5556 First iteration: >> x = AI*x x = 0.10 4 5].8005 0.16.790 1]. after four iterations. >> x = [1 1 1]'.3889 1.811 0.0000 0.0000 Fourth iteration: >> x = A*x x = 13.2741 with a corresponding eigenvector of [0. the result is converging on a highest eigenvalue of 16.

3328 1.i] = max(abs(x)) e = 5. after three iterations.7002 >> [e.3 MATLAB can be used to solve for the eigenvalues with the polynomial method. First.1268 Third iteration: >> x = AI*x x = 1.5085) = −0.5073 i = 2 >> x = x/x(i) x = -0.75 ⎢⎣ 1 . the estimate of the lowest eigenvalue is converging on the correct value of 1/(−5.0000 -0.0000 -0. 20.1271].5 1 0.8889 i = 2 >> x = x/x(i) x = -0.1271 Thus.1815 with an eigenvector of [−0.5073 0.4444 − λ 0.7778 0.Second iteration: >> x = AI*x x = 1. 7 3 ⎤ ⎧⎪ x1 ⎫⎪ ⎡ 4 − 9λ 8 − 4λ 2 ⎥⎨x2 ⎬ = 0 ⎢ 7 ⎢⎣ 3 2 1 − 2λ ⎥⎦ ⎪⎩ x3 ⎪⎭ Then.8402 -5. the matrix can be put into the proper form for an eigenvalue analysis by bringing all terms to the left-hand-side of the equation.7469 >> [e.i] = max(abs(x)) e = 5. each row can be divided by the coefficient of λ in that row.3333 ⎤ ⎧⎪ x1 ⎫⎪ 2−λ 0 .9599 -5.5 − λ ⎥⎦ ⎪⎩ x3 ⎪⎭ 226 .3341 1. ⎡0.3341 1 -0.5 ⎥ ⎨ x 2 ⎬ = 0 ⎢ 1.8889 0.

0610 (b) The power method can be used to determine the highest eigenvalue: >> A = [2/.5556 -2.3386 0.6871 The roots of this equation represent the eigenvalues.4 (a) MATLAB can be used to solve for the eigenvalues with the polynomial method.36 0 0.36] A = 5.MATLAB can then be used to determine the eigenvalues as the roots of the characteristic polynomial.7778 0 0 -2.36. >> A=[4/9 7/9 3/9.36 -1/. >> p = poly(A) p = 1. -1/.6694 297. >> e = roots(p) e = 10.36].0000 -22.36 0.36 2/. the matrix can be put into the proper form by dividing each row by 0.0000 -2.0501 7.5556 -2.2917 >> e=roots(p) e = 2.36 2/.3/2 2/2 1/2].36 1/.0 0 -1/.2500 0.7778 5.0 -1/.9444 -0.9954 -0.36.36 0 0.2222 162.7778 0 0 -2.36 2/.36 -1/. 0 -1/. First.36 2/.2723 3.7778 5.8388 1.2876 20. First iteration: >> x = A*x x = 227 .36 -1/.36 2/. >> x = [1 1 1 1]'. >> A = [2/.5556 Then.36 -1/.7778 5.7778 0 0 -2.36 0.0370 -428.5556 -2. the poly function can be used to generate the characteristic polynomial.36 2/.36.36 -1/.-1/.7/4 8/4 2/4. 0 0 -1/. >> p=poly(A) p = 1.

1667 6. it converges on the second highest eigenvalue of 7. Rather.0000 The process can be continued.5556 -2.9444 -4.5556 >> x = x/e x = 1.6180 −0.5556 >> e = max(x) e = 5.0000 -0. After 9 iterations.6000 -0.7778 >> x = x/e x = 1 0 0 1 Second iteration: >> x = A*x x = 5.1667 -4.5000 -0.7778 -2.5000 1.9444 >> e = max(x) e = 6.7778 >> e = max(x) e = 2.0000 -0.0000 Third iteration: >> x = A*x x = 6.7778 5. the method does not converge on the highest eigenvalue.6180 1]. 228 .2.6000 1.9444 >> x = x/e x = 1.2723 with a corresponding eigenvector of [1 −0.7778 0 0 2.

0 0 -1/.0000 1.0 -1/.2880 >> x = [1 1 1 1]'.1440 0.6000 >> e = max(x) e = 0.6667 Second iteration: >> x = AI*x x = 0.36].0000 0.7200 >> e = max(x) e = 1.2880 0. First iteration: >> x = AI*x x = 0.9450 229 .0800 0.-1/.1440 0.9600 0.(c) The power method can be used to determine the lowest eigenvalue by first determining the matrix inverse: >> A = [2/.9600 >> x = x/e x = 0. >> AI = inv(A) AI = 0.5850 0.1440 0.6667 1.36 -1/.0800 1.36 -1/.2160 0.6250 1.36.7200 1.0000 0.6000 0.0000 1.36 2/.36 0 0.36 1/.0800 >> x = x/e x = 0.0720 0.2880 0.9600 0.6250 Third iteration: >> x = AI*x x = 0.2880 0.2160 0.4320 0.2160 0.4320 0.0720 0.36 2/.36 0.1440 0.2160 0.36 2/.

20.9450 >> x = x/e x = 0.2913 0.2 X2 =0 1 X 1 + 0.50885⎬ ⎪⎩ ⎪⎭ 1 ⎧⎪0.10516 ⎬ ⎪⎩ ⎪⎭ 1 ⎧⎪− 0.450 -0.000 -0.380089 ⎫⎪ ⎨0.3395 0 0 0 0.6344 -0.6986.-0.746999 ⎬ ⎪⎩ ⎪⎭ 1 A graph can be made showing the three modes 230 . The corresponding eigenvectors are (normalizing so that the amplitude for the third floor is one).92075⎫⎪ ⎨− 0.225 X 2 + 0.0000 0.6190 The process can be continued.5725 0.200 0.7664 0 0.7307 -0.6190 1.6180 1 1 0.240 0.0569.24 − 0.9450 = 1.000.225 − ω 2 X 3 = 0 ( ) ( ) A MATLAB session can be conducted to evaluate the eigenvalues and eigenvectors as >> A = [0.5850 >> e = max(x) e = 0.693748 ⎫⎪ ⎨− 2.0610 with a corresponding eigenvector of [0. 0.420 -0.0569 Therefore.225 0.9450 0. the eigenvalues are 0.6180].3395 and 0.5879 0. ⎧⎪ 1. After 9 iterations.42 − ω 2 X 2 X3 = 0 − 0.d] = eig(A) v = -0.0. >> [v.6890 0.5 The parameters can be substituted into force balance equations to give (0.180.0.18 − 0.3471 d = 0. the method converges on the lowest eigenvalue of 1/0.6986 0 0 -0.45 − ω )X 2 − 0.0000 1.225].3506 0.

d] = eig(a) v = -0.7370 -0.2.5910 0. In addition. the system simplifies to ⎡1 − λ ⎢ −1 ⎢⎣ 0 −1 2−λ −1 0 ⎤ ⎧⎪ I 1 ⎫⎪ − 1 ⎥ ⎨I 2 ⎬ = 0 2 − λ ⎥⎦ ⎪⎩ I 3 ⎪⎭ where λ = LCω2.5910 0.001 1 1 − L3ω 2 I 3 sin(ωt ) + i3 − ( I 2 sin(ωt ) − I 3 sin(ωt )) = 0 0.1981 0 0 231 .5910 d = 0. The following MATLAB session can then be used to evaluate the eigenvalues and eigenvectors >> a = [1 -1 0.3280 0. the L’s and C’s are constant.3280 -0.6 As was done in Section 20. Therefore.3280 -0. assume that the solution is ij = Ij sin(ωt).0 -1 2] >> [v.7370 0.-1 2 -1. Therefore.001 0. the second derivative is d 2i j dt 2 = −ω 2 I j sin(ωt ) Substituting these relationships into the differential equations gives 1 ( I 1 sin(ωt ) − I 2 sin(ωt )) = 0 C1 1 1 − L2ω 2 I 2 sin(ωt ) + ( I 2 sin(ωt ) − I 3 sin(ωt )) − ( I 1 sin(ωt ) − I 2 sin(ωt )) = 0 0.-2 -1 0 1 2 Mode 1 -1 0 Mode 2 1 0 1 Mode 3 20.001 0.7370 -0.001 − L1ω 2 I 1 sin(ωt ) + All the sin(ωt) terms can be cancelled.

0000 d = 3.5278 0.d] = eig(kmw2) v = 0. we get the following matrix ⎡2k − m1ω 2 ⎢ −k ⎢ −k ⎢⎣ −k 2 k − m 2ω 2 −k ⎤⎧ X ⎫ −k ⎥⎪ 1 ⎪ −k ⎥⎨ X 2 ⎬ = 0 2 ⎪X ⎪ 2k − m3ω ⎥⎦ ⎩ 3 ⎭ Using MATLAB. >> [v. the eigenvalues are 0.6230 0.4450 ⎫ ⎪ ⎪ ⎪ LC ⎪ ⎪ 1.2*k].-k. >> k = 1. and d is a matrix with the corresponding eigenvalues on the diagonal.0000 0 0 0 0. Thus.2470 The matrix v consists of the system's three eigenvectors (arranged as columns).-k.-k. MATLAB computes that the eigenvalues are λ = 0.2*k. mω 1 = 0 ⇒ ω 1 = 0 (Hz) 1st mode of oscillation 2 mω 2 = 0 ⇒ ω 2 = 3 (Hz) 2nd mode 2 232 . 1.7 The force balances can be written as ⎡m1 ⎢0 ⎢0 ⎣ 0 m2 0 0 ⎤ ⎧ &x&1 ⎫ ⎡ 2k ⎪ ⎪ 0 ⎥ ⎨ &x&2 ⎬ + ⎢− k m3 ⎥⎦ ⎪⎩ &x&3 ⎪⎭ ⎢⎣− k −k 2k −k − k ⎤ ⎧⎪ x1 ⎫⎪ − k ⎥⎨x2 ⎬ = 0 2k ⎥⎦ ⎪⎩ x3 ⎪⎭ Assuming that the solution is xi = Xi sin(ωt).-k.5774 0 3. Setting these eigenvalues equal to mω 2 .0 0 1. 3.1456 -0.5774 0. and 3.8034 -0. and 3. These values in turn can be used to compute the natural frequencies for the system ⎧ 0.-k.1981.8019 ⎪ ⎪ LC ⎪ ⎩ ⎭ 20. the three frequencies can be obtained. >> kmw2 = [2*k.-k.2470.7686 0.0000 0 0 Therefore.2470 ⎪ ω =⎨ ⎬ ⎪ LC ⎪ ⎪ 1.5550.5774 0.5550 0 0 3.2757 -0.

-0.x(4).y] = ode45('dxdt'.t.'--') legend('x1'.1.mω 3 = 0 ⇒ ω 3 = 3 (Hz) 3rd mode 2 20. y0 = [1.0].0. [t.-5*(x(2)-x(1))-5*x(2)]. (a) x1 = x2 = 1 >> >> >> >> >> tspan = [0.10].y(:. x) dx = [x(3). >> y0=[1.tspan.10].0.6 >> tspan=[0. 233 .0].-5*x(1)+5*(x(2)-x(1)). x2 = –0.2).'x2') Because we have set the initial conditions consistent with one of the eigenvectors.y(:. the two masses oscillate in unison.6. dx1 = x3 dt dx 2 = x4 dt dx 3 = −5 x1 + 5( x 2 − x1 ) dt dx 4 = −5( x 2 − x1 ) − 5 x 2 dt An M-file can be set up to evaluate the right-hand side of these ODEs: function dx = dxdt(t. plot(t.1).8 The pair of second-order differential equations can be reexpressed as a system of four firstorder ODE’s. (b) x1 = 1.y0).

x = A*v. e = sign(x(i))*e.0001.y0). if ea <= es | iter >= maxit. e = 1. the motion involves the superposition of both modes. for i=1:n v(i)=1. 20.1).i] = max(abs(x)). v] = powmax(A) % [e.eold)/e) * 100. iter = iter + 1.9 function [e. end v = v'. v] = powmax(A): % uses the power method to find the highest eigenvalue and % the corresponding eigenvector % input: % A = matrix to be analyzed % output: % e = eigenvalue % v = eigenvector es = 0. while (1) eold = e.y(:. v = x/e. because the initial conditions do not correspond to one of the eigenvectors. [e. ea = abs((e . iter = 0.y(:. >> plot(t. n = size(A).y]=ode45('dxdt'. break. end end 234 .>> [t.'--') >> legend('x1'.tspan.t. maxit = 100.2).'x2') Now.

1815 v = -0. if ea <= es | iter >= maxit. n = size(A).i] = max(abs(x)). break. v] = powmin(A) % [e.1271 235 . 20. [e. Ai = inv(A).7903 1. e = sign(x(i))*e. v] = powmax(A) e = 16. Application to solve Prob.0001. end v = v'.3341 1. v = x/e.2. for i=1:n v(i)=1.eold)/e) * 100.10 4 5].0000 -0.Application to solve Prob. x = Ai*v. while (1) eold = e.8 3 4. iter = iter + 1./e. ea = abs((e . end end e = 1. v] = powmin(A) e = -0.10 function [e. >> A = [2 2 10. iter = 0. v] = powmin(A): % uses the power method to find the lowest eigenvalue and % the corresponding eigenvector % input: % A = matrix to be analyzed % output: % e = eigenvalue % v = eigenvector es = 0. maxit = 100.2. 20.0000 20. >> [e. >> [e. e = 1.8113 0.2741 v = 0.