### WATKINS - Chabotcollege.edu

Engineering 25
Chp3
Tutorial:
Prob 3.14
Solution
Bruce Mayer, PE
[email protected]
Engineering/Math/Physics 25: Computational Methods
1
Bruce Mayer, PE
[email protected] • ENGR-25_HW-01_Solution.ppt
P3.14 Water Reservoir Vol
Using estimates of rainfall, evaporation, and
water consumption, the town engineer
developed the following model of the water
volume in the reservoir as a function of time
where V is the water volume in liters, t is time
in days, and r is the town's consumption rate in
liters per day. Write two user-defined
functions. The first function should define
the function V(t) for use with the fzero
function. The second function should use
fzero to compute how long it will take for
the water volume to decrease to x percent of its
initial value of 109 L. The inputs to the second
function should be x and r. Test your functions
for the case where x = 50 percent and r = 107
L/day.
Engineering/Math/Physics 25: Computational Methods
2
Bruce Mayer, PE
[email protected] • ENGR-25_HW-01_Solution.ppt
A NearBy Reservoir
Engineering/Math/Physics 25: Computational Methods
3
Bruce Mayer, PE
[email protected] • ENGR-25_HW-01_Solution.ppt
A NearBy Reservoir
This 315-acre anglers oasis sits in the heart of Suburban Castro Valley but,
you'd never know it from your surroundings once inside the park. Miles of
parkland and trails make Chabot a haven for outdoor enthusiasts. Hikers can
enjoy scenic walks on the 280-acre Fairmont Ridge. Park trails are designed
for shared useage. Lake Chabot is well known among the running community.
The park hosts Half Marathons, 5K's and the Kids Fun Run. In fact, Trail
Runner magazine chose this setting as one of America's Most Scenic Races.
Engineering/Math/Physics 25: Computational Methods
4
Bruce Mayer, PE
[email protected] • ENGR-25_HW-01_Solution.ppt
Water Reservoir Vol
 Problem 3-14 appears to
have an inconsistency
• The fzero built-in function
operates on any SINGLE
variable function as described
in Tab 3.2-1 of the text book.
– In this case want to input a V(t),
function, NOT a V(t,x,r) function
to determine the %-decrease
time.
• The problem, however, says
that TWO parameters, x & r,
must also be sent to the V(t)
function before using fzero
Engineering/Math/Physics 25: Computational Methods
5
Bruce Mayer, PE
[email protected] • ENGR-25_HW-01_Solution.ppt
Use GLOBALS for x&r
 We can “work around” the
fzero single-varialbe
requirement for V(t) by
declaring x & r as GLOBAL
Variables as described on pg
124 of the Text
 Declaring x & r as globals in
BOTH the calling function
and the V(t) function gives
the single-Var function, V(t),
listing them in the V-function
argument
Engineering/Math/Physics 25: Computational Methods
6
Bruce Mayer, PE
[email protected] • ENGR-25_HW-01_Solution.ppt
Physical Analysis
 The Reservoir Volume vs t
Function
V t   10  10 1  e
9
8
 t 100
  rt
 Now need to find the time, td,
for the volume to decrease
TO x-percent of the initial
Volume for a given water
consumption rate, r
• i.e, Find td such that
V t d   V final  V initial  x / 100
Engineering/Math/Physics 25: Computational Methods
7
Bruce Mayer, PE
[email protected] • ENGR-25_HW-01_Solution.ppt

Physical Analysis
 Now need to define a
function for which zeros exist
 In this case define a
DIFFERENCE Function
 V t   V final  V t 
 Now ΔV will be ZERO when
t = td so that V(td) = Vfinal
 Thus the function to be
zeroed is the DIFFERENCE
between Vfinal (the Goal) and
V(t) (the Guess)
• Want: Vgoal − Vguess = 0
Engineering/Math/Physics 25: Computational Methods
8
Bruce Mayer, PE
[email protected] • ENGR-25_HW-01_Solution.ppt
Guess&Check Demo
 Make a Time Guess, tGuess
 Calc VGuess = V(tGuess)
 Calc % Full for the Guess
Guess% 
V t 


10  10 1  e
9
V init
8
10
 t 100
9
 Calc Difference
del  Goal%  Guess%
 Guess AGAIN
Engineering/Math/Physics 25: Computational Methods
9
Bruce Mayer, PE
[email protected] • ENGR-25_HW-01_Solution.ppt
  rt
Guess&Check Demo
 First Trial Run (Cmd Window)
>> r = 1e7
r =
10000000>>
>> VtoverVi = @(t) (1e9 + 1e8*(1 - exp(t/100)) - r*t)/1e9
VtoverVi =
@(t)(1e9+1e8*(1-exp(-t/100))-r*t)/1e9
>> Goal = 0.55
Goal =
0.5500
>> Guess31 = VtoverVi(31)
Guess31 =
0.7167
>> del31 = Goal - Guess31
del31 =
-0.1667
Engineering/Math/Physics 25: Computational Methods
10
Bruce Mayer, PE
[email protected] • ENGR-25_HW-01_Solution.ppt
Guess & Check Ans
>> P3_14_ReservoirVolume_1302
r =
10000000
VtoverVi =
@(t)(1e9+1e8*(1-exp(-t/100))-r*t)/1e9
Goal =
0.5500
Guess31 =
0.7167
del31 =
-0.1667
Guess62 =
0.4262
del62 =
0.1238
Guess47 =
0.5675
del47 =
-0.0175
Guess48 =
0.5581
del48 =
-0.0081
Guess49 =
0.5487
del49 =
0.0013
Engineering/Math/Physics 25: Computational Methods
11
Bruce Mayer, PE
[email protected] • ENGR-25_HW-01_Solution.ppt
Guess&Check .m-file
% Bruce Mayer, PE
% ENGR25 * 12Feb13
% Problem 3_14
% P3_14_ReservoirVolume_1302.m
r = 1e7 % consumption rate
% Create ANON fcn to return % of Initial Vol
VtoverVi = @(t) (1e9 + 1e8*(1 - exp(-t/100))
- r*t)/1e9
Goal = 0.55 % to 55% of initial Volume
Guess31 = VtoverVi(31)
del31 = Goal - Guess31
Guess62 = VtoverVi(62)
del62 = Goal - Guess62
Guess47 = VtoverVi(47)
del47 = Goal - Guess47
Guess48 = VtoverVi(48)
del48 = Goal - Guess48
Guess49 = VtoverVi(49)
del49 = Goal - Guess49
Engineering/Math/Physics 25: Computational Methods
12
Bruce Mayer, PE
[email protected] • ENGR-25_HW-01_Solution.ppt
MATLAB GamePlan
 Write the single variable
(var = t) function deltaV(t)
for use in fzero
parameters r & x as GLOBAL
variables rd & xd
 Write the calling function,
time_to_decrease(x,r),
that calls into action fzero
with deltaV as its argument
• The calling function sends rd &
xd to deltaV by way of the
GLOBAL declaration
Engineering/Math/Physics 25: Computational Methods
13
Bruce Mayer, PE
[email protected] • ENGR-25_HW-01_Solution.ppt
Structure Chart
 Note How GLOBALS ByPass
the Normal Communication
Path
Engineering/Math/Physics 25: Computational Methods
14
Bruce Mayer, PE
[email protected] • ENGR-25_HW-01_Solution.ppt
Fcn deltaV.m
function diffV = deltaV(t);
% Bruce Mayer, PE * 3Mar12
% ENGR25 * Problem 3-14
%
% Function to find Vfinal - V(t) where
%* Vfinal = 1e9*(x/100)
%** x = the percent OF the 1e9 starting vol
%* V(t) = 1e9 + 1e8(1-exp(-t/100) - r*t per eqn in
P3-14
%** r => water consumption rate
%** 1e8(1-exp(-t/100) => Rain Replenishment
function over 100 day
% time constant for the rainy season
%** 1e9 => Starting Volume at beginning of rainy
season
%
% This function is to be used in the fzero built-in
function
% fzero accepts ONLY SINGLE variable functions
%* Thus Parameters X & R MUST be passed into this
fcn as GLOBALS
%
global Rd Xd
V_of_t = 1e9 + 1e8*(1-exp(-t/100)) - Rd*t;
% Waterlevel dropping BY x-pct
Vfinal = 1e9*(Xd/100);
%
% calc DIFFERENCE between the final and V(t) values
diffV = Vfinal - V_of_t;
Engineering/Math/Physics 25: Computational Methods
15
Bruce Mayer, PE
[email protected] • ENGR-25_HW-01_Solution.ppt
time_to_decrease(x,r).m
function t_dec = time_to_decrease(x,r);
% Bruce Mayer, PE * 01Mar12
% ENGR25 * Problem 3-14
%
% Function to find: diffV = Vfinal - V(td) =
0
% calc diffV using Function deltaV
%
% Now function deltaV needs parameters x & r
passed into
% it as GLOBALS as discussed within deltaV.m
%* need to change the names of the Globals
so that they are not
%* confused with local variables X & R
global Rd Xd
Rd = r
Xd = x
%
% calc time to decrease stored volume by xpercent using
% fzero on diffV caluation using fcn deltaV
%* use general guess of 100 days [the rain
replenishment time-constant]
%* for the diffv(t_dec) = 0
t_dec = fzero('deltaV', 100)
Engineering/Math/Physics 25: Computational Methods
16
Bruce Mayer, PE
[email protected] • ENGR-25_HW-01_Solution.ppt
The Calling Program
% Bruce Mayer, PE
% ENGR25 * 17Sep12
% file = Prob3_14_1209.m
% UDF's:
%* time_to_decrease.m
%* deltaV.m
%
% Ask Town Engineer for Scenario-ParaMeter InPut
xi = input('Percent of Initial Storage, x = ');
ri = input('Consumption Rate in L/day, r = ');
%
% Call Into Action the solving function
td = time_to_decrease(xi,ri);
%
% Display Results
%
disp('for x = ')
disp(xi)
disp('for r = ')
disp(ri)
disp(' ')
disp('The time to Decrease in Days = ')
disp(td)
Engineering/Math/Physics 25: Computational Methods
17
Bruce Mayer, PE
[email protected] • ENGR-25_HW-01_Solution.ppt
Example Call
 User Inputs
• x = 50 & r = 1e7
Percent of Initial Storage, x = 50
Consumption Rate in L/day, r = 1e7
for x =
50
for r =
10000000
The time to Decrease in Days =
54.1832
 Takes 54.2 days to drop to
50% initial for use rate of
1e7 Liters per Day
Engineering/Math/Physics 25: Computational Methods
18
Bruce Mayer, PE
[email protected] • ENGR-25_HW-01_Solution.ppt
Cmd Window Session
 For x = 50%, and r = 1e7
liters per day
>> td50_1e7 = time_to_decrease(50,1e7)
Rd =
10000000
Xd =
50
t_dec =
54.1832
td50_1e7 =
54.1832
 Thus for a 1e7 liter/day
consumption rate, a 50%
decrease in volume takes
Engineering/Math/Physics 25: Computational Methods
19
Bruce Mayer, PE
[email protected] • ENGR-25_HW-01_Solution.ppt
Cmd Window Session
 For x = 27%, and r = 4e6
liters/day
>> td27_4e6 = time_to_decrease(27,4e6)
Rd =
4000000
Xd =
27
t_dec =
204.2576
td27_4e6 =
204.2576
 Thus for a 4e6 liter/day
consumption rate, a decrease
to 27% of the initial volume
Engineering/Math/Physics 25: Computational Methods
20
Bruce Mayer, PE
[email protected] • ENGR-25_HW-01_Solution.ppt
DeltaV Plot
 Anonymous fcn
• For x = 27%, and r = 4e6
liters/day
• dV = Goal – Guess
– Goal = 1e9*(27/100)
– Guess = (1e9 + 1e8*(1-exp(tg/100)) - 4e6*tg);
>> dV27_4e6 = @(tg) (1e9*(1-73/100 )) (1e9 + 1e8*(1-exp(-tg/100)) - 4e6*tg);
% Vfinal - Vguess
>> tplot = linspace(-350,350,700);
>> VolDiff = dV27_4e6(tplot);
>> plot(tplot, VolDiff, 'LineWidth',
3), grid, xlabel('t (days)'),
ylabel('DeltaV (L)'), title('P3-14:
Need to ZERO‘)
Engineering/Math/Physics 25: Computational Methods
21
Bruce Mayer, PE
[email protected] • ENGR-25_HW-01_Solution.ppt
DeltaV Plot
9
1.5
P3-14: Need to ZERO
x 10
DeltaV (L)
1
0.5
0
-0.5
-1
-400
-300
-200
-100
0
t (days
100
200
 Note that fzero can Return
ERRONEOUS (negative)
Results if Start-Pt is Off
Engineering/Math/Physics 25: Computational Methods
22
Bruce Mayer, PE
[email protected] • ENGR-25_HW-01_Solution.ppt
300
400
Erroneous result
 For x = 65%, and r = 1e6
liters/day
>> td65_1e6 = time_to_decrease(65,1e6)
Rd =
1000000
Xd =
65
t_dec =
-184.8166
td65_1e6 =
-184.8166
 For THIS SET of Parameter
fzero found a NEGTIVE
(erroneous Root)
Engineering/Math/Physics 25: Computational Methods
23
Bruce Mayer, PE
[email protected] • ENGR-25_HW-01_Solution.ppt
Erroneous DeltaV Plot
8
6
P3-14: Need to ZERO
x 10
5
4
DeltaV (L)
3
2
1
0
-1
-2
-3
-4
-400
-200
0
200
t (days
400
600
 Fzero found the negative root
• The can be fixed by changing
the starting point to 200
Engineering/Math/Physics 25: Computational Methods
24
Bruce Mayer, PE
[email protected] • ENGR-25_HW-01_Solution.ppt
800
Erroneous result
 For x = 65%, and r = 1e6
liters/day
• Change This Line in the
time_to_decrease code
t_dec = fzero('deltaV', 200)
 The new (Mathematically
Correct) result
>> td65_1e6 = time_to_decrease(65,1e6)
Rd =
1000000
Xd =
65
t_dec =
448.8765
td65_1e6 =
448.8765
Engineering/Math/Physics 25: Computational Methods
25
Bruce Mayer, PE
[email protected] • ENGR-25_HW-01_Solution.ppt
Erroneous Comment
 Even though 448.9 Days is
correct by the Equation, it is
NOT physically reasonable
 Since Weather is CYCLICLE
on a 365 day basis, anything
over a Year violates nature
and is thus NOT Applicable
• Always do a Reality Check on
the Results returned by ANY
computer program
• When in Doubt PLOT
Engineering/Math/Physics 25: Computational Methods
26
Bruce Mayer, PE
[email protected] • ENGR-25_HW-01_Solution.ppt
Engineering/Math/Physics 25: Computational Methods
27
Bruce Mayer, PE
[email protected] • ENGR-25_HW-01_Solution.ppt