30
ACSL, POSTECH 1 MATLAB 입입 CHAPTER 8 Numerical Calculus and Differential Equations

MATLAB 입문 CHAPTER 8 Numerical Calculus and Differential Equations

  • Upload
    daire

  • View
    51

  • Download
    0

Embed Size (px)

DESCRIPTION

MATLAB 입문 CHAPTER 8 Numerical Calculus and Differential Equations. Numerical Methods for Differential Equations. The Euler Method Consider the equation (8.5-1) r(t) : a known function From the definition of derivative, - PowerPoint PPT Presentation

Citation preview

Page 1: MATLAB  입문 CHAPTER 8        Numerical Calculus and Differential Equations

ACSL, POSTECH 1

MATLAB 입문

CHAPTER 8 Numerical Calculus and Differential Equations

Page 2: MATLAB  입문 CHAPTER 8        Numerical Calculus and Differential Equations

Acsl, PostechMATLAB 입문 : Chapter 8. Numerical Calculus and Differential Equations

2

Numerical Methods for Differential Equations

The Euler Method Consider the equation

(8.5-1) r(t) : a known function

From the definition of derivative,

( is small enough)

(8.5-2)

Use (8.5-2) to replace (8.5-1) by the following approximation:

(8.5-3)

ytrdt

dy)(

t

tytty

dt

dy

t

)()(lim

0

t

t

tytty

dt

dy

)()(

)()()()(

tytrt

tytty

ttytrtytty )()()()(

Page 3: MATLAB  입문 CHAPTER 8        Numerical Calculus and Differential Equations

Acsl, PostechMATLAB 입문 : Chapter 8. Numerical Calculus and Differential Equations

3

Numerical Methods for Differential Equations

Assume that the right side of (8.5-1) remains constant over the time interval . Then equation (8.5-3) can be written in more convenient form as

follows:

(8.5-4) , where

: step size

The Euler method for the general first-order equation is

(8.5-5)

The accuracy of the Euler method can be improved by using a smaller step size. However, very small step sizes require longer runtimes and can result in a large accumulated error because of round-off effects.

),( ttt

ttytrtyty kkkk )()()()( 1 ttt kk 1

t

),(.

ytfy

)](,[)()( 1 kkkk tyttftyty

Page 4: MATLAB  입문 CHAPTER 8        Numerical Calculus and Differential Equations

Acsl, PostechMATLAB 입문 : Chapter 8. Numerical Calculus and Differential Equations

Euler method for the free response of dy/dt = –10y, y(0) = 2

r= -10;

deltaT = 0.01 ; % step size

t=[0:deltaT:0.5]; % our vector of time values

y(1)=2; % initial value at t=0

for k=1: length(t)-1 % for every value in t vector

y(k+1) = y(k) + r*y(k)*deltaT;

end

y_true = 2*exp(-10*t);

plot(t,y,'o',t,y_true), xlabel('t'), ylabel('y');

4

Page 5: MATLAB  입문 CHAPTER 8        Numerical Calculus and Differential Equations

Euler method solution for the free response of dy/dt –10y, y(0) 2. Figure 8.5–1

8-198-19

Page 6: MATLAB  입문 CHAPTER 8        Numerical Calculus and Differential Equations

Euler method solution of dy/dt sin t, y(0) 0. Figure 8.5–2

8-208-20 More? See pages 490-492.

Page 7: MATLAB  입문 CHAPTER 8        Numerical Calculus and Differential Equations

Acsl, PostechMATLAB 입문 : Chapter 8. Numerical Calculus and Differential Equations

7

Numerical Methods for Differential Equations

The Predictor-Corrector Method The Euler method can have a serious deficiency in problems where the variables

are rapidly changing because the method assumes the variables are constant over time interval .

(8.5-7)

(8.5-8)

Suppose instead we use the average of the right side of (8.5-7) on the interval

.

(8.5-9) , where (8.5-10)

t

),( ytfdt

dy

)](,[)()( 1 kkkk tyttftyty

),( 1kk tt

)(2

)()( 11

kkkk fft

tyty )](,[ kkk tytff

Page 8: MATLAB  입문 CHAPTER 8        Numerical Calculus and Differential Equations

Acsl, PostechMATLAB 입문 : Chapter 8. Numerical Calculus and Differential Equations

8

Numerical Methods for Differential Equations

Let

Euler predictor: (8.5-11)

Trapezoidal corrector: (8.5-12)

This algorithm is sometimes called the modified Euler method. However, note that any algorithm can be tried as a predictor or a corrector.

For purposes of comparison with the Runge-Kutta methods, we can express the modifided Euler method as

(8.5-13) g1 is deltaY given by f(tk,yk)

(8.5-14) g2 is deltaY given by f(tk+1,yk+1)

(8.5-15)

)(),(, 11 kkkk tyytyyth

),(1 kkkk ythfyy

)],(),([2 111 kkkkkk ytfytfh

yy

)(2

1

),(

),(

211

12

1

ggyy

gyhthfg

ythfg

kk

kk

kk

Page 9: MATLAB  입문 CHAPTER 8        Numerical Calculus and Differential Equations

Acsl, PostechMATLAB 입문 : Chapter 8. Numerical Calculus and Differential Equations

Modified Euler solution of dy/dt = –10y, y(0) = 2

r= -10; deltaT = 0.01 ; % same step size as before

y(1)=2;

t=[0:deltaT:0.5]; % our vector of time values

for k=1:length(t)-1

g1 = deltaT*r*y(k); % estimate of deltaY at t(k),y(k)

g2 = deltaT*r*(y(k) + g1); % est of deltaY at t(k+1),y(k+1)

y(k+1) = y(k) + 0.5*(g1 + g2);

end

y_true = 2*exp(-10*t);

plot(t,y,'o',t,y_true), xlabel('t'), ylabel('y');

9

Page 10: MATLAB  입문 CHAPTER 8        Numerical Calculus and Differential Equations

Modified Euler solution of dy/dt –10y, y(0) 2. Figure 8.5–3

8-218-21

Page 11: MATLAB  입문 CHAPTER 8        Numerical Calculus and Differential Equations

Modified Euler solution of dy/dt sin t, y(0) 0. Figure 8.5–4

8-228-22 More? See pages 493-496.

Page 12: MATLAB  입문 CHAPTER 8        Numerical Calculus and Differential Equations

Acsl, PostechMATLAB 입문 : Chapter 8. Numerical Calculus and Differential Equations

12

Numerical Methods for Differential Equations

Runge-Kutta Methods The second-order Runge-Kutta methods:

(8.5-17) , where : constant weighting factors

(8.5-18)

(8.5-19)

To duplicate the Taylor series through the h2 term, these coefficients must satisfy the following:

(8.5-19)

(8.5-19)

(8.5-19)

22111 gwgwyy kk

),(

),(

2

1

kkk

kk

hfyhthfg

ythfg

21,ww

2

12

1

1

2

1

21

w

w

ww

Page 13: MATLAB  입문 CHAPTER 8        Numerical Calculus and Differential Equations

Acsl, PostechMATLAB 입문 : Chapter 8. Numerical Calculus and Differential Equations

13

Numerical Methods for Differential Equations

The fourth-order Runge-Kutta methods:

(8.5-23)

(8.5-24)

Apply Simpson’s rule for integration

443322111 gwgwgwgwyy kk

])(,[

])(,[

),(

),(

1333332334

1222223

112

1

gggyhthfg

ggyhthfg

gyhthfg

ythfg

kk

kk

kk

kk

0

1

21

21

31

61

3

33

2

21

32

41

ww

ww

Page 14: MATLAB  입문 CHAPTER 8        Numerical Calculus and Differential Equations

Acsl, PostechMATLAB 입문 : Chapter 8. Numerical Calculus and Differential Equations

14

Numerical Methods for Differential Equations

MATLAB ODE Solvers ode23 and ode45 MATLAB provides functions, called solvers, that implement Runge-Kutta methods

with variable step size. The ode23 function uses a combination of second- and third-order Runge-Kutta

methods, whereas ode45 uses a combination of fourth- and fifth-order methods.

<Table 8.5-1> ODE solvers

Solver name Description

ode23 Nonstiff, low-order solver.

ode45 Nonstiff, medium-order solver.

ode113 Nonstiff, variable-order solver.

ode23s Stiff, low-order solver.

ode23t Moderately stiff, trapezoidal-rule solver.

ode23tb Stiff, low-order solver.

ode15s Stiff, variable-order solver.

Page 15: MATLAB  입문 CHAPTER 8        Numerical Calculus and Differential Equations

Acsl, PostechMATLAB 입문 : Chapter 8. Numerical Calculus and Differential Equations

15

Stiff?

Stiff Differential Equations A stiff differential equation is one whose response changes rapidly over a time

scale that is short compared to the time scale over which we are interested in the solution.

A small step size is needed to solve for the rapid changes, but many steps are needed to obtain the solution over the longer time interval, and thus a large error might accumulate.

The four solvers specifically designed to handle stiff equations: ode15s (a variable-order method), ode23s (a low-order method), ode23tb (another low-order method), ode23t (a trapezoidal method).

Page 16: MATLAB  입문 CHAPTER 8        Numerical Calculus and Differential Equations

Acsl, PostechMATLAB 입문 : Chapter 8. Numerical Calculus and Differential Equations

16

Numerical Methods for Differential Equations

Solver Syntax <Table 8.5-2> Basic syntax of ODE solvers

Command Description

[t, y] = ode23( ‘ydot’, tspan, y0) Solves the vector differential equation specified

in function file ydot, whose inputs must be t and y and

whose output must be a column vector representing

; that is, . The number of rows in this column

vector must equal the order of the equation. The vector

tspan contains the starting and ending values of the

independent variable t, and optionally, any intermediate

values of t where the solution is desired. The vector y0

contains . The function file must have two input

arguments t and y even for equations where is not

a function of t. The syntax is identical for the other

solvers.

),(.

ytfy

dtdy

),(.

ytfy

)( 0ty),( ytf

Page 17: MATLAB  입문 CHAPTER 8        Numerical Calculus and Differential Equations

Acsl, PostechMATLAB 입문 : Chapter 8. Numerical Calculus and Differential Equations

Lets try these on the problem we've been solving

17

Page 18: MATLAB  입문 CHAPTER 8        Numerical Calculus and Differential Equations

Acsl, PostechMATLAB 입문 : Chapter 8. Numerical Calculus and Differential Equations

18

Numerical Methods for Differential Equations

<example> Response of an RC Circuit

(RC=0.1s, v(0)=0V, y(0)=2V)

)(tvydt

dyRC

R

c yv

-

+

yy 10.

0 0.05 0.1 0.15 0.2 0.25 0.3 0.35 0.40

0.2

0.4

0.6

0.8

1

1.2

1.4

1.6

1.8

2

Time(s)

Capacitor

Voltage

numerical solution

analytical solution

Page 19: MATLAB  입문 CHAPTER 8        Numerical Calculus and Differential Equations

Acsl, PostechMATLAB 입문 : Chapter 8. Numerical Calculus and Differential Equations

19

Numerical Methods for Differential Equations

Effect of Step Size The spacing used by ode23 is smaller than that used by ode45 because ode45

has less truncation error than ode23 and thus can use a larger step size. ode23 is sometimes more useful for plotting the solution because it often gives a

smoother curve.

Numerical Methods and Linear Equations It is sometimes more convenient to use a numerical method to find the solution. Examples of such situations are when the forcing function is a complicated

function or when the order of the differential equation is higher than two.

Use of Global Parameters The global x y z command allows all functions and files using that command to

share the values of the variables x, y, and z.

Page 20: MATLAB  입문 CHAPTER 8        Numerical Calculus and Differential Equations

Acsl, PostechMATLAB 입문 : Chapter 8. Numerical Calculus and Differential Equations

20

Page 21: MATLAB  입문 CHAPTER 8        Numerical Calculus and Differential Equations

Acsl, PostechMATLAB 입문 : Chapter 8. Numerical Calculus and Differential Equations

21

Extension to Higher-Order Equations

The Cauchy form or the state-variable form Consider the second-order equation

(8.6-1)

(8.6-2)

If , , then

)(475...

tfyyy ...

5

7

5

4)(

5

1yytfy

yx 1.

2 yx

21

.

2

2

.

1

5

7

5

4)(

5

1xxtfx

xx

The Cauchy form

or state-variable form

Page 22: MATLAB  입문 CHAPTER 8        Numerical Calculus and Differential Equations

Acsl, PostechMATLAB 입문 : Chapter 8. Numerical Calculus and Differential Equations

22

Extension to Higher-Order Equations<example> Solve (8.6-1) for with the initial conditions .

( Suppose that and use ode45.)

%Define the function

function xdot=example1(t,x)

xdot(1)=x(2);

xdot(2)=(1/5) * (sin(t) - 4*x(1) - 7*x(2));

xdot = [xdot(1) ; xdot(2)];

%then, use it:

[t, x] = ode45('example1',[0,6],[3,9]);

plot(t,x);

60 t 9)0(,3)0(.

yy)sin()( ttf

xdot(1)

xdot(2)

x(1)

x(2)

.

1x.2x

1x

2x

The initial condition for the vector x.

0 1 2 3 4 5 6-4

-2

0

2

4

6

8

10

The time interval of interest

Page 23: MATLAB  입문 CHAPTER 8        Numerical Calculus and Differential Equations

Acsl, PostechMATLAB 입문 : Chapter 8. Numerical Calculus and Differential Equations

23

Extension to Higher-Order Equations

Matrix Methods

< a mass and spring with viscous surface friction >

y

f(t)m

k

c

)(...

tfkyycym

2

.

1 xx

21

.

2 )(1

xm

cx

m

ktf

mx

( Letting , )yx 1.

2 yx

)(1010

2

1.

2

.

1 tfmx

x

m

c

m

kx

x

(Matrix form))(

.

tf

m

c

m

k10

m

10

2

1

x

x

(Compact form)

(8.6-6)

(8.6-7)

Page 24: MATLAB  입문 CHAPTER 8        Numerical Calculus and Differential Equations

Acsl, PostechMATLAB 입문 : Chapter 8. Numerical Calculus and Differential Equations

24

Page 25: MATLAB  입문 CHAPTER 8        Numerical Calculus and Differential Equations

Acsl, PostechMATLAB 입문 : Chapter 8. Numerical Calculus and Differential Equations

25

Page 26: MATLAB  입문 CHAPTER 8        Numerical Calculus and Differential Equations

The following is extra credit (2 pts)

26

Page 27: MATLAB  입문 CHAPTER 8        Numerical Calculus and Differential Equations

Acsl, PostechMATLAB 입문 : Chapter 8. Numerical Calculus and Differential Equations

27

Extension to Higher-Order Equations

Characteristic Roots from the eig Function

Substituting ,

Cancel the terms

Its roots are s = -6.7321 and s = -3.2679.

21

.

1 3 xxx

21

.

2 7xxx (8.6-8)

(8.6-8)

ststst

ststst

eAeAesA

eAeAesA

212

211

7

3

steAtx 11 )( steAtx 22 )(

ste

0)7(

0)3(

21

21

AsA

AAs02210

71

13 2

sss

s

A nonzero solution will exist for A1 and A2 if and only if the deteminant is zero

Page 28: MATLAB  입문 CHAPTER 8        Numerical Calculus and Differential Equations

Acsl, PostechMATLAB 입문 : Chapter 8. Numerical Calculus and Differential Equations

28

Extension to Higher-Order Equations

MATLAB provides the eig function to compute the characteristic roots. Its syntax is eig(A)

<example> The matrix A for the equations (8.6-8) and (8.6-9) is

To find the time constants, which are the negative reciprocals of the real parts of the roots, you type tau = -1./real (r). The time constants are 0.1485 and 0.3060.

71

13

Page 29: MATLAB  입문 CHAPTER 8        Numerical Calculus and Differential Equations

Acsl, PostechMATLAB 입문 : Chapter 8. Numerical Calculus and Differential Equations

29

Extension to Higher-Order Equations

Programming Detailed Forcing Functions< An armature-controlled dc motor>

v

R L

I

+

-

wKe

iKT Tw

cw

i

cwiKdt

dwI

tvwKRidt

diL

T

e

)(

)(0

1

2

1.

2

.

1 tvLx

x

I

c

I

KL

K

L

R

x

x

T

e

▪ Apply Kirchhoff’s voltage low and Newton’s low

(8.6-10)

(8.6-11)

( matrix form )

: motor’s current , : rotational velocityi w

L: inductance, R: resistance, I: inertia, : torque constant, : back emf constant,

c: viscous damping constant, : applied voltage

TK eK

)(tv

Letting wxix 21 ,

Page 30: MATLAB  입문 CHAPTER 8        Numerical Calculus and Differential Equations

Acsl, PostechMATLAB 입문 : Chapter 8. Numerical Calculus and Differential Equations

30