University of Washington AMATH 301 Winter 2015 Homework 4

University of Washington
AMATH 301 Winter 2015
Instructor: Dr. King-Fai Li
Homework 4
Due: Friday Feb 27, 2015, 5 pm
Problem 1. First-order ordinary differential equations (ODEs)
Given the initial-value problem:
dy 2  2 yt
 2
,
dt
t 1
with
y  t  0  1 ,
we are to estimate the value of y  t  1 .
(a) Integrate the differential equation to t  1 using the forward Euler’s method with a time step
of h  0.1 . Save the resultant values  y  t  0  y  t  0.1  y  t  1  as a column
vector in A1.dat using the “save –ascii” command.
T
(b) Integrate the differential equation to t  1 using the 4th order Runge-Kutta method with a time
step of h  0.1 . Save the resultant values  y  t  0  y  t  0.1  y  t  1  as a column
vector in A2.dat using the “save –ascii” command.
T
(c) Find y  t  1 using the Matlab function ode45 with tspan=[0;1] and default settings
otherwise. Save the output of t and y  t  , in that order, as a 2-column matrix in A3.dat
using the “save –ascii” command. Note: If tspan has two elements only, then the
number of elements in the output t is automatically determined.
Problem 2. System of First-Order ODEs and Boundary-Value Problems
Let V represent the electrostatic potential between two concentric metal spheres of radii R1 and R2
(R1 < R2). The potential of the inner sphere is kept constant at V1 volts, and the potential of the
outer sphere is earthed to 0 volt. The potential in the region between the two spheres is governed
by Laplace’s equation, which, in this particular application, reduces to
d 2V 2 dV

 0,
dr 2 r dr
R1  r  R2 ,
V  R1   V1 ,
and
V  R2   0 .
(#)
Suppose R1 = 2 inches, R2 = 5 inches, and V1 = 110 volts. The purpose is to find V  r  for the inner
region between R1  r  R2 that satisfies the boundary conditions at R1 and R2. The system (#) is
called a boundary-value problem, which is different from the initial-value problems discussed in
dV  R1 
is specified instead of V  R2  . The ODE solvers in Matlab
the Video Lectures, where
dr
cannot handle boundary value problems. Below the shooting method will be used.
To start with, rephrase the above problem into an initial-value problem:
d 2V 2 dV

 0,
dr 2 r dr
R1  r  R2 ,
V  R1   V1 ,
and
dV
 R1    .
dr
(##)
where  is a constant to be determined such that the solution satisfies V  R2   0 . Define a vector
V 
 Y1  
Y     dV  . Then (##) can be transformed into a system of two first-order ODEs:

Y2  
 dr 
 Y 
d  Y1   2 
,
 2
dr Y2    Y2 
 r 
R1  r  R2 ,
Y1  R1   V1 ,
and
Y2  R1    .
(###)
In Matlab, (###) is equivalent to defining a function handle ode=@(r,Y)[ … ; … ];, where
dV
.
Y(1)  V and Y(2) 
dr
(a) Use ode45 to solve the system (###) with   100 volts/inch. The output Y in the
statement [r Y]=ode45(ode,…) has two columns: Y(:,1) corresponding to V  r  and
dV
 r  . Save the outputs of r and V  r  , in that order, as a 2dr
column matrix in A4.dat using the “save –ascii” command. Hint: V  r  R2  should
be negative.
Y(:,2) corresponding to
(b) Use ode45 to solve the system (###) with   90 volts/inch. Save the outputs of r and
V  r  , in that order, as a 2-column matrix in A5.dat using the “save –ascii” command.
Hint: V  r  R2  should be positive.
(c) The results obtained above suggest that the solution for  should lie between the interval
 100, 90 .
Use ode45 to calculate V  R2   Y(end,1) for   100, 99, , 90
 100 V  R2 

 100


 99 V  R2   99 
volts/inch. Save 
 as a 2-column matrix in A6.dat using the “save




 90 V R
 2   90 

–ascii” command.
(d) The final step is to estimate the solution for  using linear interpolation. Use interp1 to
T
finish this task. Treat V  R2   100 V  R2   99  V  R2   90  as x and [-100:-90]’


as y. Estimate the value of y when x=0 using y0=interp1(…). Save y0 in A7.dat using
the “save –ascii” command.
Problem 3. Stiff Systems
C. W. Gear proposed in 1971 a simple scalar example of stiffness:
dy
dG
   y  G  t   
,
dt
dt
  0,
dG
 1 , and
dt
where G  t  is a smooth, slowly varying external force. Let   41 , G  t   t ,
y  t  0   1 . We will integrate the system from t  0 to t  1 .
(a) Integrate the differential equation to t  1 using the forward Euler’s method with a time step
of h  0.05 . Save the resultant values  y  t  0  y  t  0.05  y  t  1  as a column
vector in A8.dat using the “save –ascii” command.
Lesson: The time series oscillates and amplifies because of the stiffness. A sufficiently small
h would make the amplification and oscillation disappear but then a lot of integration time
steps will be required.
T
(b) Integrate the differential equation to t  1 using the backward (implicit) Euler’s method with
a time step of h  0.05 . Save the resultant values  y  t  0  y  t  0.05  y  t  1  as
a column vector in A9.dat using the “save –ascii” command. Hint: Use fzero.
T
(c) Use ode23tb (implicit Trapezoidal Rule–Backward Difference) to solve the system with
tspan=[0;1] and default settings otherwise. Save the outputs of t and y  t  , in that order,
as a 2-column matrix in A10.dat using the “save –ascii” command. Hint: Number of
time steps < 50. Lesson: Just for fun, you can try ode45. The number of time steps taken
would be > 150 because ode45 should not be used for stiff systems.
Hint: Your solutions for (a) and (b) should look like
Problem 4. Lorenz model and Lyaponov constant
The Lorenz 1963 model for atmospheric convection is given by
dx
   y  x
dt
dy
 x  z  y
dt
dz
 xy   z
dt
  10
with
8
.
3
  28

In Matlab, define a function handle lorenz=@(t,Y)[ … ; … ; … ];, where Y(1)  x ,
Y(2)  y , and Y(3)  z .
(a) Use ode45 to solve the Lorenz model at t  0,0.01, 0.02,, 24.99, 25 with initial conditions
x  t  0   2 , y  t  0   3 , z  t  0   14 . Denote the corresponding outputs as t , xa  t  ,
ya  t  , and za  t  . Save t , xa  t  , ya  t  , and za  t  , in that order, as a 4-column matrix in
A11.dat using the “save –ascii” command. Hint: Define tspan=[0:0.01:25]. If
tspan has more than two elements, then the output t is the same as tspan. The appended
matrix [t Y] is what you need. Your solution should look like
plot3(Y(:,1),Y(:,2),Y(:,3)); view(2);
(b) To show the chaotic behavior of the system, one can integrate the Lorenz model again with
some tiny different initial conditions. Repeat (a) except z  t  0   14  10 9 . Denote the
corresponding outputs as t , xb  t  , yb  t  , and zb  t  . Save t , xb  t  , yb  t  , and zb  t  , in
that order, as a 4-column matrix in A12.dat using the “save –ascii” command. Note:
The output of t in (a) and (b) should be the same if the same tspan is set.
(c) The solutions  xa  t  , ya  t  , za  t   and  xb  t  , yb  t  , zb  t   will diverge away from each
other exponentially with time until a maximum distance is reached. Define the distance as
  t    xa  t   xb  t     ya  t   yb  t     za  t   zb  t   . Thus,   t   p2 exp  p1t  ,
where p1 is a Lyapunov exponent. Fit ln   t  with a straight line for 0  t  25 using
2
2
2
2
p=polyfit(…). The fitted slope is p1 . Save p as a row vector in A13.dat using the
“save –ascii” command. Note: p1 is the largest Lyapunov exponent of the Lorenz model,
which is close to 0.9. Your solution should look like
semilogy(t,Delta);
Note: After t = 25, ln   t  will level off because the distance cannot go beyond the size of the
stable orbit. In other words, one of the Lyapunov exponents must be zero.