ordinary differential equations (ode)tanvirahmed.buet.ac.bd/ce 206/ce206_ode.pdf · 2016-02-29 ·...

23
Ordinary Differential Equations (ODE)

Upload: others

Post on 16-Aug-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Ordinary Differential Equations (ODE)tanvirahmed.buet.ac.bd/CE 206/CE206_ODE.pdf · 2016-02-29 · 0 2 4 6 8 10 12 0 10 20 30 40 50 60 t (sec) Exercise: Euler’s method CE 206: Engg

Ordinary Differential Equations (ODE)

Page 2: Ordinary Differential Equations (ODE)tanvirahmed.buet.ac.bd/CE 206/CE206_ODE.pdf · 2016-02-29 · 0 2 4 6 8 10 12 0 10 20 30 40 50 60 t (sec) Exercise: Euler’s method CE 206: Engg

CE 206: Engg. Computation Sessional Dr. Tanvir Ahmed

Why study Differential Equations?

Many physical phenomena are best formulated mathematically in terms of their rate of change.

Motion of a swinging pendulum

0sin2

2

l

g

dt

d

Bungee-jumper Equation

dv

dt g

cd

mv2

Page 3: Ordinary Differential Equations (ODE)tanvirahmed.buet.ac.bd/CE 206/CE206_ODE.pdf · 2016-02-29 · 0 2 4 6 8 10 12 0 10 20 30 40 50 60 t (sec) Exercise: Euler’s method CE 206: Engg

Euler’s Method

The first derivative provides a direct estimate of the slope at ti:

dy

dt ti

f ti, yi

Euler method uses that estimate as the increment function:

f ti, yi

yi1 yi f ti , yi h

CE 206: Engg. Computation Sessional Dr. Tanvir Ahmed

Page 4: Ordinary Differential Equations (ODE)tanvirahmed.buet.ac.bd/CE 206/CE206_ODE.pdf · 2016-02-29 · 0 2 4 6 8 10 12 0 10 20 30 40 50 60 t (sec) Exercise: Euler’s method CE 206: Engg

MATLAB Code: Euler’s Method

CE 206: Engg. Computation Sessional Dr. Tanvir Ahmed

function [t,y] = eulode(tspan,y0,h)

% input: dydt = name of the M-file that evaluates the ODE

% tspan = [ti, tf], ti and tf limits of independent variable

% y0 = initial value of dependent variable h = step size

% output:y = solution vector

if nargin<3,error(‘less than 3 input arguments'),end

ti = tspan(1); tf = tspan(2);

t = (ti:h:tf)'; n = length(t);

% if necessary, add an additional value of t

% so that range goes from t = ti to tf

if t(n)<tf

t(n+1) = tf; n = n+1;

end

y = y0*ones(n,1); %preallocate y to improve efficiency

for i = 1:n-1 %implement Euler's method

y(i+1) = y(i) + dydt(t(i),y(i))*(t(i+1)-t(i));

end

hytfyy iiii ,1

Page 5: Ordinary Differential Equations (ODE)tanvirahmed.buet.ac.bd/CE 206/CE206_ODE.pdf · 2016-02-29 · 0 2 4 6 8 10 12 0 10 20 30 40 50 60 t (sec) Exercise: Euler’s method CE 206: Engg

0 2 4 6 8 10 120

10

20

30

40

50

60

t (sec)

v (

m/s

)

Exercise: Euler’s method

CE 206: Engg. Computation Sessional Dr. Tanvir Ahmed

2vm

cg

dt

dv d

Solve the bungee jumper problem using Euler’s method (use a step size of 2 s). Compare the results with the analytical solution

Given, g = 9.81 m/s2, cd = 0.25 kg/m, m = 68.1 kg

t

m

gc

c

gmtv d

d

tanh)(

Analytical solution:

Page 6: Ordinary Differential Equations (ODE)tanvirahmed.buet.ac.bd/CE 206/CE206_ODE.pdf · 2016-02-29 · 0 2 4 6 8 10 12 0 10 20 30 40 50 60 t (sec) Exercise: Euler’s method CE 206: Engg

Heun’s Method

hytfytf

yy

hytfyy

iiiiii

iiii

2

),(),(

),(

0

111

0

1

Predictor:

Corrector:

CE 206: Engg. Computation Sessional Dr. Tanvir Ahmed

Exercise: Modify eulode.m to implement Heun’s method. Solve the same bungee-jumper problem.

Page 7: Ordinary Differential Equations (ODE)tanvirahmed.buet.ac.bd/CE 206/CE206_ODE.pdf · 2016-02-29 · 0 2 4 6 8 10 12 0 10 20 30 40 50 60 t (sec) Exercise: Euler’s method CE 206: Engg

4th order Runge-Kutta method

yi1 yi 1

6k1 2k2 2k3 k4 h

k1 f ti , yi

k2 f ti 1

2h, yi

1

2k1h

k3 f ti 1

2h, yi

1

2k2h

k4 f ti h, yi k3h

where

CE 206: Engg. Computation Sessional Dr. Tanvir Ahmed

Page 8: Ordinary Differential Equations (ODE)tanvirahmed.buet.ac.bd/CE 206/CE206_ODE.pdf · 2016-02-29 · 0 2 4 6 8 10 12 0 10 20 30 40 50 60 t (sec) Exercise: Euler’s method CE 206: Engg

MATLAB Code: Runge-Kutta Method

CE 206: Engg. Computation Sessional Dr. Tanvir Ahmed

function [tp,yp] = rk4(tspan,y0,h)

% input: dydt = name of the M-file that evaluates the ODEs

% tspan = [ti, tf]; initial and final times

% y0 = initial values of dependent variables

% h = step size

% output: tp = vector of independent variable

% yp = vector of solution for dependent variables

if nargin<3,error(‘3 input arguments required'), end

ti = tspan(1); tf = tspan(2);

tp = (ti:h:tf)'; n = length(tp);

% if necessary, add an additional value of t

% so that range goes from tp = ti to tf

if tp(n)<tf

tp(n+1) = tf; n = n+1;

end

Page 9: Ordinary Differential Equations (ODE)tanvirahmed.buet.ac.bd/CE 206/CE206_ODE.pdf · 2016-02-29 · 0 2 4 6 8 10 12 0 10 20 30 40 50 60 t (sec) Exercise: Euler’s method CE 206: Engg

MATLAB Code: Runge-Kutta Method

CE 206: Engg. Computation Sessional Dr. Tanvir Ahmed

y = y0*ones(n,1); %preallocate y to improve efficiency

for i = 1:n-1 %implement RK method

hh = tp(i+1)-tp(i); tt = tp(i); yy = yp(i);

k1 = dydt(tt,yy);

k2 = dydt(tt + hh/2, yy + 0.5*k1*hh);

k3 = dydt(tt + hh/2, yy + 0.5*k2*hh);

k4 = dydt(tt + hh, yy + k3*hh);

yp(i+1) = yy + hh*(k1 + 2*k2 + 2*k3 + k4)/6;

end

Page 10: Ordinary Differential Equations (ODE)tanvirahmed.buet.ac.bd/CE 206/CE206_ODE.pdf · 2016-02-29 · 0 2 4 6 8 10 12 0 10 20 30 40 50 60 t (sec) Exercise: Euler’s method CE 206: Engg

Practice Problem

CE 206: Engg. Computation Sessional Dr. Tanvir Ahmed

yytdt

dy5.13

Solve the following initial value problem over the interval from t = 0 to 2 where y(0) = 1. Display all your results in the same graph

(a) Analytically(b) Euler’s method with h = 0.5 and h = 0.25(c) Heun’s method with h = 0.5(d) 4th order RK method with h = 0.5

Page 11: Ordinary Differential Equations (ODE)tanvirahmed.buet.ac.bd/CE 206/CE206_ODE.pdf · 2016-02-29 · 0 2 4 6 8 10 12 0 10 20 30 40 50 60 t (sec) Exercise: Euler’s method CE 206: Engg

MATLAB’s common ODE solvers

CE 206: Engg. Computation Sessional Dr. Tanvir Ahmed

MATLAB’s ode23 function uses second- and third-order RK functions to solve the ODE and adjust step sizes.

MATLAB’s ode45 function uses fourth- and fifth-order RK functions to solve the ODE and adjust step sizes. This is recommended as the first function to use to solve a problem.

MATLAB’s ode113 function is a multistep solver useful for computationally intensive ODE functions.

Page 12: Ordinary Differential Equations (ODE)tanvirahmed.buet.ac.bd/CE 206/CE206_ODE.pdf · 2016-02-29 · 0 2 4 6 8 10 12 0 10 20 30 40 50 60 t (sec) Exercise: Euler’s method CE 206: Engg

Example of ODE solver: ode45

CE 206: Engg. Computation Sessional Dr. Tanvir Ahmed

The functions are generally called in the same way

[t, y] = ode45(odefun, tspan, y0)

y: solution array, where each column represents one of the variables and each row corresponds to a time in the t vectorodefun: function returning a column vector of the right-hand-sides of the ODEstspan: time over which to solve the system

If tspan has two entries, the results are reported for those times as well as several intermediate times based on the steps taken by the algorithmIf tspan has more than two entries, the results are reported only for those specific times

y0: vector of initial values

Page 13: Ordinary Differential Equations (ODE)tanvirahmed.buet.ac.bd/CE 206/CE206_ODE.pdf · 2016-02-29 · 0 2 4 6 8 10 12 0 10 20 30 40 50 60 t (sec) Exercise: Euler’s method CE 206: Engg

Solving a system of ODE using ode45

CE 206: Engg. Computation Sessional Dr. Tanvir Ahmed

function yp = predprey(t, y)

yp = [1.2*y(1)-0.6*y(1)*y(2);…

-0.8*y(2)+0.3*y(1)*y(2)];

tspan = [0 20];

y0 = [2, 1];

[t, y] = ode45(@predprey, tspan, y0);

figure(1); plot(t,y);

figure(2); plot(y(:,1),y(:,2));

dy1

dt1.2y1 0.6y1y2

dy2

dt 0.8y2 0.3y1y2

with y1(0)=2 and y2(0)=1 for 20 seconds

Predator-prey problem

Solve

predprey.m file

Page 14: Ordinary Differential Equations (ODE)tanvirahmed.buet.ac.bd/CE 206/CE206_ODE.pdf · 2016-02-29 · 0 2 4 6 8 10 12 0 10 20 30 40 50 60 t (sec) Exercise: Euler’s method CE 206: Engg

Example using ode45

CE 206: Engg. Computation Sessional Dr. Tanvir Ahmed

dy1

dt1.2y1 0.6y1y2

dy2

dt 0.8y2 0.3y1y2

with y1(0)=2 and y2(0)=1 for 20 seconds

Predator-prey problem

Solve

Page 15: Ordinary Differential Equations (ODE)tanvirahmed.buet.ac.bd/CE 206/CE206_ODE.pdf · 2016-02-29 · 0 2 4 6 8 10 12 0 10 20 30 40 50 60 t (sec) Exercise: Euler’s method CE 206: Engg

Practice Problem: motion of a pendulum

CE 206: Engg. Computation Sessional Dr. Tanvir Ahmed

If l = 2 ft, g = 32.2 ft/s2 and θ0 = π/4, Solve for θ from t = 0 to 1.6 s using(a) Euler’s method with h = 0.05(b) Using ode45 function with h = 0.05(c) Plot your results and compare with the analytical solution

0sin2

2

l

g

dt

d

t

l

gt cos)( 0

Analytical solution (assuming θ = sinθ):

0sin2

2

l

g

dt

d

sinl

g

dt

dv

vdt

d

@t = 0, v = 0

@t = 0, θ0 = π/4

Page 16: Ordinary Differential Equations (ODE)tanvirahmed.buet.ac.bd/CE 206/CE206_ODE.pdf · 2016-02-29 · 0 2 4 6 8 10 12 0 10 20 30 40 50 60 t (sec) Exercise: Euler’s method CE 206: Engg

the boundary-value problem is converted into an equivalent initial-value problem.

Generally, the equivalent system will not have sufficient initial conditions -A guess is made for any undefined values.- The guesses are changed until the final solution satisfies all the B.C.

For linear ODEs, only two “shots” are required - the proper initial condition can be obtained as a linear interpolation of the two guesses.

CE 206: Engg. Comp. Sessional Dr. Tanvir Ahmed

Boundary value problem: the shooting method

TThdx

dz

zdx

dT

TThdx

Td0

2

2

Page 17: Ordinary Differential Equations (ODE)tanvirahmed.buet.ac.bd/CE 206/CE206_ODE.pdf · 2016-02-29 · 0 2 4 6 8 10 12 0 10 20 30 40 50 60 t (sec) Exercise: Euler’s method CE 206: Engg

Problem: shooting method

CE 206: Engg. Computation Sessional Dr. Tanvir Ahmed

Solve

with σ’=2.7x10-9 K-3 m-2, L=10 m, h’=0.05 m-2, T=200 K, T(0) = 300 K, and T(10) = 400 K.

First - break into two equations:

d2T

dx2 h T T T

4 T 4 0

TTdx

dz

zdx

dT

TTTThdx

Td

99

44

2

2

106.1107.220005.0

0

Page 18: Ordinary Differential Equations (ODE)tanvirahmed.buet.ac.bd/CE 206/CE206_ODE.pdf · 2016-02-29 · 0 2 4 6 8 10 12 0 10 20 30 40 50 60 t (sec) Exercise: Euler’s method CE 206: Engg

Problem: shooting method

CE 206: Engg. Computation Sessional Dr. Tanvir Ahmed

Code for derivatives:function dy=dydxn(x,y)

dy=[y(2);…

-0.05*(200-y(1))-2.7e-9*(1.6e9-y(1)^4)];

Code for residual:function r=res(za)

[x,y]=ode45(@dydxn, [0 10], [300 za]);

r=y(length(x),1)-400;

Code for finding root of residual:fzero(@res, -50)

Code for solving system: [x,y]=ode45(@dydxn, [0 10], [300 fzero(@res, -50) ]);

Page 19: Ordinary Differential Equations (ODE)tanvirahmed.buet.ac.bd/CE 206/CE206_ODE.pdf · 2016-02-29 · 0 2 4 6 8 10 12 0 10 20 30 40 50 60 t (sec) Exercise: Euler’s method CE 206: Engg

Practice Problem: shooting method

CE 206: Engg. Computation Sessional Dr. Tanvir Ahmed

If E = 30000 ksi, I = 800 in4, w = 1 kip/ft, L = 10 ft, solve for the deflection of the beam using the shooting method and compare the numerical results with the analytical solution

22

2

2

2 wxwLx

dx

ydEI

The basic differential equation of the elastic curve for a uniformly loaded beam is given as

EI

xwL

EI

wx

EI

wLxy

242412

343

Page 20: Ordinary Differential Equations (ODE)tanvirahmed.buet.ac.bd/CE 206/CE206_ODE.pdf · 2016-02-29 · 0 2 4 6 8 10 12 0 10 20 30 40 50 60 t (sec) Exercise: Euler’s method CE 206: Engg

finite differences are substituted for the derivatives in the original equation

CE 206: Engg. Comp. Sessional Dr. Tanvir Ahmed

Numerical solution: finite difference

d2T

dx2 h T T 0

d2T

dx2

Ti1 2Ti Ti1

x2

Ti1 2Ti Ti1

x2 h T Ti 0

Ti1 2 h x2 Ti Ti1 h x2T

Page 21: Ordinary Differential Equations (ODE)tanvirahmed.buet.ac.bd/CE 206/CE206_ODE.pdf · 2016-02-29 · 0 2 4 6 8 10 12 0 10 20 30 40 50 60 t (sec) Exercise: Euler’s method CE 206: Engg

The linear differential equation is transformed into a set of simultaneous algebraic equations.

Since T0 and Tn are known (Drichlet boundary conditions), they will be on the right-hand-side of the linear algebra system

CE 206: Engg. Comp. Sessional Dr. Tanvir Ahmed

Numerical solution: finite difference

2 h x2 1

1 2 h x2 1

1 2 h x2

T1T2

Tn1

h x2T T0h x2T

h x2T Tn

Page 22: Ordinary Differential Equations (ODE)tanvirahmed.buet.ac.bd/CE 206/CE206_ODE.pdf · 2016-02-29 · 0 2 4 6 8 10 12 0 10 20 30 40 50 60 t (sec) Exercise: Euler’s method CE 206: Engg

If there is a derivative boundary condition (Neumann B.C.), the centered difference equation is solved at the point and rewriting the system equation accordingly.For a Neumann condition at T0 point:

CE 206: Engg. Comp. Sessional Dr. Tanvir Ahmed

Numerical solution: finite difference

dT

dx 0

T1 T1

2x T1 T1 2x

dT

dx 0

T1 2 h x2 T0 T1 h x2T

T1 2xdT

dx 0

2 h x2 T0 T1 h x2T

2 h x2 T0 2T1 h x2T 2xdT

dx 0

Page 23: Ordinary Differential Equations (ODE)tanvirahmed.buet.ac.bd/CE 206/CE206_ODE.pdf · 2016-02-29 · 0 2 4 6 8 10 12 0 10 20 30 40 50 60 t (sec) Exercise: Euler’s method CE 206: Engg

Practice Problem: Finite difference

CE 206: Engg. Computation Sessional Dr. Tanvir Ahmed

Over the range 0 ≤ r ≤ 1, with boundary conditions

01

2

2

Sdr

dT

rdr

Td

Solve the nondimensionalized ODE using finite difference methods that describe the temperature distribution in a circular rod with internal heat source S

1)1( rT 00

rdr

dT

For S = 1, 10 and 20 K/m2 plot the temperature versus radius