6.1 개요 - pusan national...

78
파트 6 상미분방정식 6.1 개요 6.2 파트의 구성

Upload: others

Post on 28-Jan-2020

1 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

파트 6 상미분방정식

6.1 개요

6.2 파트의 구성

Page 2: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

6.1 개요(1/4)

공학과 과학에서 상미분방정식을 유도하고 해를 구하는 과정.

22 :

Page 3: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

6.1 개요(2/4)

번지 점프하는 사람의 속도 변화율을 기술하는 미분방정식

미분방정식의 분류

- 상미분방정식 : 한 개의 독립변수

편미분방정식 : 두 개 이상의 독립변수

- 2차 방정식 : 2차 도함수를 포함

- n차 방정식 : n차 도함수를 포함

여기서 v = 종속변수

t = 독립변수

2dcdv g vdt m

= −

2

2 0d x dxm c kxdt dt

+ + =

22 :

Page 4: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

6.1 개요(3/4)

고차 미분방정식 → 1차 방정식계로 변환

-종속변수의 1차 도함수를 새로운 변수로 정의한다.

-식(PT6.3)과 식(PT6.4) 를 식(PT6.2) 에 대입하면,

-따라서 최종 1차 방정식계는 다음과 같다.

식(PT6.2)

식(PT6.3), 식(PT6.4)

dx vdtdv c kv xdt m m

=

= − −

2

2 0d x dxm c kxdt dt

+ + =

0dvm cv kxdt

+ + =

2

2

dv, then t

dx d xvdt d dt

= =

22 :

Page 5: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

6.1 개요(4/4)

n차 미분방정식의 유일 해를 구하기 위해서는 n개의 조건이 필요하다.

초기값 문제 : 같은 독립변수 값에서(예를 들면 x=0 또는t=0 에서) 모든 조건이 부여됨

경계값 문제 : 다른 독립변수 값에서 조건들이 부여됨

22 :

Page 6: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

6.2 파트의 구성

22장 : 초기값 문제

23장 : 적응식 방법과 강성시스템

24장 : 경계값 문제

22 :

Page 7: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

22장 초기값 문제

22.1 개요22.2 Euler법22.3 Euler법의 개선22.4 Runge-Kutta법22.5 연립방정식

Page 8: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

22장 초기값 문제 (1/2)

번지 점프하는 사람의 자유낙하 속도를 구하는 문제로 돌아가자.

여기서 sign(x) = sgn(x) = 시그넘 함수

떨어지는 경우→ sign(v)=1 → 음의 항력(위쪽)

올라가는 경우→ sign(v)=–1 → 양의 항력(아래쪽)

점프 줄이 늘어날 때 위 방향으로 작용하는 추가의 힘을 고려

근사화하는데 Hooke의 법칙을 사용

줄이 늘어나거나 줄어들 때 발생하는 마찰로 인한 감쇠력

2)(sign vmc

vgdtdv d−=

22 :

Page 9: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

22장 초기값 문제 (2/2)

( x > L인 경우에만 성립)

vmγLx

mkv

mc

vgdtdv d −−−−= )()(sign 2

여기서 v = 속도 (m/s)

t = 시간 (s)

g = 중력가속도 = 9.81 m/s2

cd = 항력 계수 (kg/m)

m = 질량 (kg)

k = 줄의 스프링상수 (N/m)

x = 출발지점으로부터 아래로 측정한 거리 (m)

L = 늘어나지 않은 줄의 길이 (m)

γ = 감쇠계수 (N⋅s/m)

vdtdx

=

22 :

Page 10: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

22.1 개요

상미분방정식의 일반적인 형태:

1장에서 소개된 단일단계법 (또는 Runge-Kutta법):

이것을 수학적으로 표현하면

어떻게 기울기를 추정하는가?

→ 미분방정식을 사용하여 ti에서의 1차 도함수의 형태로 추정

),( ytfdtdy

=

크기간격기울기값이전값새로운 ×+=

hyy ii φ+=+1여기서 φ = 기울기 = 증분함수

→ 이전 값 yi에서 새로운 값 yi+1을 구하기 위해거리 h 에 대해 적용

→ 다단계법: 이전의 여러 점에서의 정보를 사용

22 :

Page 11: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

22.2 Euler법 (1/8)

1차 도함수가 곧 ti에서의 기울기 추정값

이 식을 대입하면

Euler법 (또는 Euler-Cauchy법 또는 점-기울기 법)

),( ii ytf=φ

hytfyy iiii ),(1 +=+

22 :

Page 12: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

예제 22.1 (Euler법) (1/4)

Q. Euler법을 이용하여 y' = 4e0.8t – 0.5y를

t = 0에서 4까지 간격 크기를 1로 놓고 적분하라.

초기 조건은 t = 0 에서 y = 2이다.

참고로 엄밀해를 해석적으로 구하면 다음과 같다.

ttt eeey 5.05.08.0 2)(3.1

4 −− +−=

22 :

Page 13: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

예제 22.1 (Euler법) (2/4)

풀이)

첫 번째 단계에 대해

초기조건은 y(0) = 2이므로 t = 0에서 기울기는

t = 1에서의 정해:

백분율 상대오차:

)1)(2,0()0()1( fyy +=

3)2(5.04)2,0( 0 =−= ef 5)1(32)1( =+=y

19463.62)(3.1

4 )1(5.0)1(5.0)1(8.0 =+−= −− eeey

%28.19%10019463.6

519463.6=×

−=ε t

22 :

Page 14: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

예제 22.1 (Euler법) (3/4)

두 번째 단계에 대해

t = 2에서의 정해: 14.84392

백분율 상대오차: 23.19%

40216.11)1)](5(5.04[5

)1)(5,1()1()2()1(8.0 =−+=

+=

efyy

t ytrue yEuler (%)01234

2.000006.19463

14.8439233.6771775.33896

2.000005.0000011.4021625.5132156.84931

19.2823.1924.2424.54

22 :

Page 15: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

예제 22.1 (Euler법) (4/4)

정해와 Euler법을 사용한 수치 해의 비교(y' = 4e0.8t – 0.5y의 초기조건은 y(0) = 2이고,t = 0에서 4까지 간격 크기를 1로 놓음)

22 :

Page 16: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

여기서 h = ti+1 – ti

= 나머지 항

22.2 Euler법 (2/8)

Euler법에 대한 오차해석 절단오차

- y의 값을 근사적으로 구하는 기법에서 자연스럽게 발생

- 전체 절단오차=국부 절단오차(한 단계에 대해)+전파 절단오차(모든 단계에 대해)

반올림오차- 계산기의 사용에서 유한 자리의 유효숫자를 취함으로써 발생

Euler법은 점 (ti, yi)부근에서의 Taylor 급수 전개

nn

nii

iii Rhn

yh

yhyyy +++

′′+′+=+ !!2

)(2

1

1)1(

)!1()( +

+

= nn

n hn

yR

22 :

Page 17: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

22.2 Euler법 (3/8)

또 다른 형태로는

Euler법에서는

: 국부 절단오차의 정확한 표현

충분히 작은 h에 대해서

또는

: 국부 절단오차의 근사적 표현

)(!

),(!2

),(),( 1

)1(2

1+

+ +++′

++= nniin

iiiiii hOh

nytf

hytf

hytfyy

hytfyy iiii ),(1 +=+

)(!2

),( 12 +++′

= niit hOh

ytfE

2

!2),(

hytf

E iia

′= )( 2hOEa =

여기서 O(hn+1) = 국부 절단오차 ∝ 간격 크기의 (n+1)거듭제곱

22 :

Page 18: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

22.2 Euler법 (4/8)

전체오차는 O(h)로 간격 크기에 비례한다는 것을

증명할 수도 있다.

전체오차는 h를 작게 하면 줄어든다.

미분방정식이 해가 선형인 경우는 정해를 산출한다.

→ Euler법은 1차 방법

22 :

Page 19: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

22.2 Euler법 (5/8)

Euler법의 안정성

절단오차는 간격의 크기에 의존하며, 이는 Taylor 급수에 기초하여 예측할 수 있음 → 정확도

오차가 기하급수적으로 증가하면 수치해는 불안정함

안정성 : 미분방정식, 수치기법과 간격 크기에 의존

- 확대인자 : g = 1-ah

- 만약 |g|>1 (즉 만약 h > 2/a), 해는 무한대로 커진다

- Euler법은 조건부로 안정함(conditionally stable)

-0 0 (0) atdy ay with y y y y e

dt= − = ⇒ =

1 1 (1 )ii i i i

dyy y h y y ahdt+ += + ⇒ = −Euler 법 :

22 :

Page 20: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

22.2 Euler법 (6/8)

수치기법에 무관하게 오차가 항상 증가하는 상미분방정식:

- 불량조건(ill-conditioned)

부정확성과 안정성은 별개의 특성이다.

- 부정확한 방법도 안정성 있는 방법일 수 있다.

22 :

Page 21: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

22.2 Euler법 (7/8)

[Euler법을 적용하는 M-파일 ]

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

% eulode: Euler ODE solver

% [t,y] = Eulode(dydt, tspan, y0, h, p1, p2, …)

% uses Euler's method to integrate an ODE

% input:

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

% tspan = [ti,tf] where ti and tf = initial and final

% values of independent variable

% y0 = initial value of dependent variable

% h = step size

% p1, p2, … = additional parameters used by dydt

22 :

Page 22: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

22.2 Euler법 (7/8)

[Euler법을 적용하는 M-파일 ]

% output:

% t = vector of independent variable

% y= vector of solution for dependent variable

if nargin<4, error(‘at least4 input arguments required’), end

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

If ~(tf>ti), error(‘upper limit must be greater than lower’), end

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

% if necessary, add an additional value of t

% so that range goes from t = ti to tf

22 :

Page 23: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

22.2 Euler법 (7/8)

[Euler법을 적용하는 M-파일 ]

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), varargin{:}) * (t(i+1) - t(i));

end

22 :

Page 24: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

22.2 Euler법 (8/8)

>> dydt = @(t,y) 4*exp(0.8*t)-0.5*y ;

>> [t,y] = eulode(dydt, [0 4], 2, 1);

>> disp([t,y])

0 2.0000

1.0000 5.0000

2.0000 11.4022

3.0000 25.5132

4.0000 56.8493

22 :

Page 25: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

22.3 Euler법의 개선 (1/8)

Euler법에서 발생하는 오차의 근본적인 출처

- 시작점에서의 도함수를 간격 전체에 적용

Heun법

간격 전체 기울기의 추정값을 개선하는 방법

- 간격의 두 끝점, 즉 시작점과 끝점에서의 도함수를 이용

예측자-수정자 방법이라고도 함

22 :

Page 26: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

22.3 Euler법의 개선 (2/8)

Heun법의 그래픽 표현. (a) 예측자와 (b) 수정자

22 :

Page 27: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

22.3 Euler법의 개선 (3/8)

간격의 시작점에서의 기울기:

선형적으로 외삽:

→ 표준 Euler법에서의 해

→ Heun법에서는 중간 예측 결과

의 계산을 위한 예측자 방정식

간격 전체의 평균 기울기:

: 수정자 방정식

),( iii ytfy =′

hytfyy iiii ),(01 +=+

),( 0111 +++ =′ iii ytfy

2),(),( 0

11 +++=′ iiii ytfytf

y hytfytf

yy iiiiii 2

),(),( 011

1++

+

++=

22 :

Page 28: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

22.3 Euler법의 개선 (4/8)

Heun법을 간략하게 정리하면

예측자

수정자

수정자의 수렴에 대한 종료 판정:

hytfyy iimii ),(0

1 +=+

),,2,1 ( 2

),(),( 111

1 mjhytfytfyyj

iimiim

ij

i =+

+=−++

+

%1001

111 ×

−=ε

+

−++

ji

ji

ji

a yyy

개선된 결과를 얻기 위한 Heun법 수정자의 그래픽 표현

22 :

Page 29: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

예제 22.2 (Heun법) (1/4)

Q. 반복적인 Heun법을 이용하여 y' = 4e0.8t – 0.5y 를

t = 0 에서 4까지 간격 크기를 1로 놓고 적분하라.

초기 조건은 t = 0 에서 y = 2이다.

수정자의 반복을 끝내기 위한 수렴기준을 0.00001%로

잡아라.

22 :

Page 30: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

예제 22.2 (Heun법) (2/4)

풀이)

(t0, y0):

예측자: → 19.28%의 백분율 상대오차 (Euler법)

수정자: →-8.18%의 백분율 상대오차

추정 오차:

3)2(5.04 00 =−=′ ey

5)1(3201 =+=y

402164.6)5(5.04),( )1(8.00111 =−==′ eyxfy

701082.42402164.63

=+

=′y

701082.6)1(701082.4211 =+=y

%39.25%100701082.6

5701082.6=×

−=εa

22 :

Page 31: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

예제 22.2 (Heun법) (3/4)

수정자:

추정 오차:

수정자:

추정 오차:

275811.612

)701082.6(5.0432)1(8.0

21 =

−++=

ey

%776.6%100275811.6

701082.6275811.6=×

−=εa

0.8(1)31

3 4 0.5(6.275811)2 1 6.3821292

ey + −= + =

%666.1%100382129.6

275811.6382129.6=×

−=aε

22 :

Page 32: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

예제 22.2 (Heun법) (4/4)

반복없음 반복있음

t ytrue yEuler (%) yHeun (%) yHeun (%)

01234

2.000006.19463

14.8439233.6771775.33896

2.000005.00000

11.4021625.5132156.84931

19.2823.1924.2424.51

2.000006.70108

16.3197837.1992583.33777

8.189.94

10.4610.62

2.000006.36087

15.3022434.7432877.73510

2.683.093.173.18

y' = 4e0.8t – 0.5y의 적분에서 정해와 수치해의 비교. 초기 조건은 t = 0에서

y = 2이고, Euler법과 Heun법에서 간격 크기를 1로 놓고 수치해를 계산하였으며, Heun법에서는 수정자 반복이 없는 경우와 있는 경우를 모두 수행하였음.

tε tε tε

22 :

Page 33: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

22.3 Euler법의 개선 (5/8)

Heun법의 국부 오차

수정 단계를 거친 결과는

↔사다리꼴과 유사!!

상미분방정식:

변수 분리하여 풀면

또는

htftf

yy iiii 2

)()( 11

++

++= 2

)()()( bfafabI +−=

)(tfdtdy

=

∫∫++

=11

)(i

i

i

i

t

t

y

ydttfdy

∫+

+ =−1

1 )(i

i

t

tii dttfyy ∫+

+ +=1

1 )(i

i

t

tii dttfyy

22 :

Page 34: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

22.3 Euler법의 개선 (6/8)

사다리꼴 공식을 적용하면

Heun 법은 바로 사다리꼴 공식이기 때문에 국부 절단오차

: 2차 방법

국부 오차 = O(h3) 그리고 전체 오차 = O(h2)

htftf

dttf iit

t

i

i 2)()(

)( 11 ++ +=∫ h

tftfyy ii

ii 2)()( 1

1+

+

++=

3

12)( hfEtξ′′

−=

22 :

Page 35: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

22.3 Euler법의 개선 (7/8)

중점법

중점법의 그래픽 표현. (a) 예측자와 (b) 수정자.

22 :

Page 36: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

22.3 Euler법의 개선 (8/8)

간격의 중점에서의 y 값을 예측하기 위하여 Euler법을 사용한다.

이렇게 예측한 값으로 중점에서의 기울기를 구한다.

이 평균 기울기를 전체 간격에 적용하면

중점법은 Newton-Cotes 개구간 적분공식과 연관이 있다.

따라서

2),(2/1

hytfyy iiii +=+

),( 2/12/12/1 +++ =′ iii ytfy

hytfyy iiii ),( 2/12/11 +++ +=

)()()( 1xfabdxxfb

a−≅∫ )()( 2/1

1

+≅∫+

i

t

tthfdttfi

i

∫+

+ +=1

1 )(i

i

t

tii dttfyyhytfyy iiii ),( 2/12/11 +++ +=

22 :

Page 37: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

22.4 Runge-Kutta법 (1/14)

고차 도함수를 구하지 않고도 Taylor 급수 방법이가지는 정확도를 가짐

일반적인 형식:

1차 RK법: n = 1인 경우 ⇒ Euler법

여기서:증분함수(간격 전체를 대표하는 기울기)

a's = 상수

: 순환적 관계

p's, q's = 상수

hyy ii φ+=+1

nnkakaka +++=φ 2211

),(

),(),(

),(

11,122,111,11

22212123

11112

1

hkqhkqhkqyhptfk

hkqhkqyhptfkhkqyhptfk

ytfk

nnnnninin

ii

ii

ii

−−−−−− +++++=

+++=++=

=

22 :

Page 38: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

여기서

22.4 Runge-Kutta법 (2/14)

2차 Runge-Kutta법

2차 표현은 다음과 같다.

상수 a1, a2, p1 그리고 q11를 결정하기 위하여 2차

Taylor 급수와 같다고 놓는다.

따라서 는

와 같아야 한다.

hkakayy ii )( 22111 ++=+),(1 ii ytfk =

),( 11112 hkqyhptfk ii ++=

21 !2

),(),( h

ytfhytfyy ii

iiii′

++=+

!2),(

2

1h

dtdy

yf

tfhytfyy iiii

∂∂

+∂∂

++=+

hkakayy ii )( 22111 ++=+

여기서 dtdy

yytf

tytfytf ii ∂

∂+

∂∂

=′ ),(),(),(

22 :

Page 39: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

22.4 Runge-Kutta법 (3/14)

2변수 함수의 Taylor 급수 전개는

k2는 다음에서 유도하면

따라서

정리하면

+∂∂

+∂∂

+=++ygs

tgrytgsyrtg ),(),(

)(),(),( 211111111 hO

yfhkq

tfhpytfhkqyhptf iiii +

∂∂

+∂∂

+=++

)(),(),(),( 32112

212211 hO

yfytfhqa

tfhpaythfaythfayy iiiiiiii +

∂∂

+∂∂

+++=+

[ ] )(),(),(),( 3211212211 hOh

yfytfqa

tfpahytfaytfayy iiiiiiii +

∂∂

+∂∂

+++=+

22 :

Page 40: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

22.4 Runge-Kutta법 (4/14)

두 식의 계수를 비교하면

→ 4개의 미지 상수에 대한 3개의

방정식 "부정인 경우"

a2의 값을 배정 → 그리고

2차 RK법은 a2의 배정에 따라 무한히 많은 종류가 있다.

2/12/11

112

12

21

===+

qapa

aa

21 1 aa −=2

111 21a

qp ==

22 :

Page 41: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

22.4 Runge-Kutta법 (5/14)

반복이 없는 Heun법(a2 = 1/2)a2 = 1/2 → a1 = 1/2 그리고 p1 = q11 = 1

⇒ Heun법에서 수정자의 반복이 없는 경우에 해당

중점법a2 = 1 → a1 = 0 그리고 p1 = q11 = 1/2

hkkyy ii

++=+ 211 2

121 여기서 ),(1 ii ytfk =

),( 12 hkyhtfk ii ++=

hkyy ii 21 +=+ 여기서

:간격의 시작에서의 기울기

:간격의 끝에서의 기울기

),(1 ii ytfk =

)2/,2/( 12 hkyhtfk ii ++=

22 :

Page 42: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

22.4 Runge-Kutta법 (6/14)

Ralston법2차 RK 알고리즘에서 절단오차가 최소인 경우

a2 = 2/3 → a1 = 1/3 그리고 p1 = q11 = 3/4

hkkyy ii

++=+ 211 3

231

여기서 ),(1 ii ytfk =

++= hkyhtfk ii 12 4

3,43

22 :

Page 43: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

22.4 Runge-Kutta법 (7/14)

전형적인 4차 Runge-Kutta법가장 보편적으로 사용되는 4차 RK법

무한히 많은 종류 중에서 가장 흔히 사용되는 방법

Simpson 1/3 공식과 유사함

간격에 대한 평균 기울기를 개선하기 위해 여러 기울기값을 추정→ Heun법과 유사

여기서

( )hkkkkyy ii 43211 2261

++++=+

),(1 ii ytfk =

++= hkyhtfk ii 12 2

1,21

++= hkyhtfk ii 23 2

1,21

( )hkyhtfk ii 34 , ++=

22 :

Page 44: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

22.4 Runge-Kutta법 (8/14)

4차 RK법을 구성하는 기울기 추정값의 그래픽 표현.

22 :

Page 45: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

예제 22.3 (전형적인 4차 RK법) (1/2)

Q. 전형적인 4차 RK법을 이용하여 를

t = 0에서 1까지 간격 크기를 1로 놓고 적분하라. 초기 조건은 y(0) = 2이다.

풀이)

간격의 시작점에서의 기울기

중점에서의 기울기

중점에서의 또 다른 기울기

yey t 5.04 8.0 −=′

3)2(5.04)2,0( )0(8.01 =−== efk

5.3)5.0(32)5.0( =+=y217299.4)5.3(5.04)5.3,5.0( )5.0(8.0

2 =−== efk

108649.4)5.0(217299.42)5.0( =+=y

912974.3)108649.4(5.04)108649.4,5.0( )5.0(8.03 =−== efk

22 :

Page 46: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

예제 22.3 (전형적인 4차 RK법) (2/2)

간격의 끝에서의 기울기

평균 기울기

수치 해

정해 6.194631에 비해 εt = 0.103%의 오차를 갖는

비교적 좋은 해를 산출하였다.

912974.5)0.1(912974.32)0.1( =+=y0.8(0.5)

4 (1.0, 5.912974) 4 0.5 (5.912974) 5.945677k f e= = − =

[ ] 201037.4945677.5)912974.3(2)217299.4(2361

=+++=φ

(1.0) 2 4.201037 (1.0) 6.201037y = + =

22 :

Page 47: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

22.4 Runge-Kutta법 (9/14)

Butcher의 5차 Runge-Kutta법

Boole법과 유사 (표 17.2 참조):

전체 절단오차는 크기가 O(h5)이다.

4차 RK 법에 비해 정확하나 계산량에서 비효율적 (6개 함수 값을 계산)

hkkkkkyy ii )73212327(901

654311 +++++=+

여기서 ),(1 ii ytfk =

++= hkyhtfk ii 12 4

1,41

+++= hkhkyhtfk ii 213 8

181,

41

+−+= hkhkyhtfk ii 324 2

1,21

+++= hkhkyhtfk ii 415 16

9163,

43

+−++−+= hkhkhkhkhkyhtfk ii 543216 7

87

127

1272

73,

90)(7)(32)(12)(32)(7)( 43210 xfxfxfxfxfab ++++

22 :

Page 48: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

22.4 Runge-Kutta법 (10/14)

[2차 Runge-Kutta법]

function [x, u] = RK2_M(f, a, b, u0, n)

h = (b-a)/n; hh=h/2;

x = (a+h: h: b);

k1 = feval (f, a, u0);

k2 = feval (f, a+hh, u0+hh*k1);

u(1) = u0 + k2*h;

for i = 1 : n-1

k1 = feval (f, x(i), u(i));

k2 = feval (f, x(i)+hh, u(i)+hh*k1);

u(i+1) = u(i) + k2*h;

end

x=[a x]; u=[u0 u]; plot(x, u)

22 :

Page 49: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

22.4 Runge-Kutta법 (11/14)

[내장함수]

function yp = f1(t,y)

yp = 4*exp(0.8*t) - 0.5*y;

22 :

Page 50: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

22.4 Runge-Kutta법 (12/14)

>> [t, u] = RK2_M('f1', 0, 4, 2, 4)

t =

0 1 2 3 4

u =

Columns 1 through 5

2.0000 6.2173 14.9407 33.9412 75.9686

22 :

Page 51: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

22.4 Runge-Kutta법 (13/14)

[4차 Runge-Kutta법]

function [x, u] = RK4_C(f, a, b, u0, n)

h = (b-a)/n; hh=h/2;

x = (a+h: h: b);

k1 = feval (f, a, u0);

k2 = feval (f, a+hh, u0+k1*hh);

k3 = feval (f, a+hh, u0+k2*hh);

k4 = feval (f, a+h, u0+k3*h);

u(1) = u0 + (k1+2*k2+2*k3+k4)*h/6;

22 :

Page 52: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

22.4 Runge-Kutta법 (13/14)

[4차 Runge-Kutta법]

for i = 1 : n-1

k1 = feval (f, x(i), u(i));

k2 = feval (f, x(i)+hh, u(i)+k1*hh);

k3 = feval (f, x(i)+hh, u(i)+k2*hh);

k4 = feval (f, x(i)+h, u(i)+k3*h);

u(i+1) = u(i) + (k1+2*k2+2*k3+k4)*h/6;

end

x=[a x]; u=[u0 u]; plot(x, u)

22 :

Page 53: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

22.4 Runge-Kutta법 (14/14)

>> [t, u] = RK4_C('f1', 0, 4, 2, 4)

t =

0 1 2 3 4

u =

Columns 1 through 5

2.0000 6.2010 14.8625 33.7213 75.4392

22 :

Page 54: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

22.5 연립방정식 (1/10)

실제 공학에서는 여러 상미분방정식을 동시에 풀어야 한다.

( n 개의 초기 조건이 필요)

번지점프를 하는 사람의 속도와 위치를 결정하는 문제를

다루어 보자.

초기 조건: x(0) = v(0) = 0

),,,,(

),,,,(

),,,,(

21

2122

2111

nnn

n

n

yyytfdt

dy

yyytfdt

dy

yyytfdtdy

=

=

=

vdtdx

=

2vmc

gdtdv d−=

22 :

Page 55: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

예제 22.4 (Euler법을 이용한 연립 ODE 풀이) (1/3)

Q. 자유낙하 할 때의 속도와 위치를 Euler법으로 풀어라. 초기 조건을 t = 0일 때, x = v = 0로 가정하고, 간격 크기를 2s로 하여 t = 10s까지 적분을 수행하라. 예제 1.1에서와 같이 중력가속도는 9.81 m/s2, 사람의질량은 68.1 kg, 항력계수는 0.25 kg/m로 놓는다.

속도에 대한 해석 해는 다음과 같다.

위치에 대한 해석 해는 다음과 같다.

해석 해를 이용하여 수치 해의 상대오차를 계산하라.

= t

mgc

cgmtv d

d

tanh)(

= t

mgc

cmtx d

d

coshln)(

22 :

Page 56: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

예제 22.4 (Euler법을 이용한 연립 ODE 풀이) (2/3)

풀이)

t = 0에서의 기울기:

Euler법 ( t = 2 s) 해석 해 백분율 상대 오차

x(2) = 19.16629 100%

v(2) = 18.72919 4.756%

Euler법 ( t = 4 s)

0=dtdx

81.9)0(1.68

25.081.9 2 =−=dtdv

0)2(00 =+=x62.19)2(81.90 =+=v

24.39)2(62.190 =+=x

20.2519.62 9.81 (19.62) (2)68.1

36.41368

v = + −

=

22 :

Page 57: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

예제 22.4 (Euler법을 이용한 연립 ODE 풀이) (3/3)

간격 크기가 커서 결과가 정확하지 않다.

두 번째 반복을 수행하기까지 xEuler는 0으로 계산된다.

간격 크기를 줄이면 결과를 개선시킬 수 있다.

고차 방법을 사용하면 상대적으로 큰 간격에 대해서도 좋은 결과를얻을 수 있다.

t xtrue vtrue xEuler vEuler εt(x) εt(v)

02468

10

019.166371.9304

147.9462237.5104334.1782

018.729233.111842.076246.957549.4214

00

39.2400112.0674204.6640305.0244

019.620036.413746.298350.180251.3123

100.0045.4524.2513.83

8.72

4.769.97

10.036.863.83

22 :

Page 58: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

22.5 연립방정식 (2/10)

Runge-Kutta 법

고차 RK법은 연립방정식의 해를 구하는데 적용할 수 있다.

기울기를 구하는데 주의해야 한다.

간격의 시작점에서 모든 변수에 대해 기울기( k1's )를 결정한다.

의 결과를 이용하여 간격의 중점에서의 기울기( k2's )를

예측한다.

중점에서의 새로운 기울기(k3's)를 예측한다.

간격의 끝점에서의 기울기(k4's)를 예측한다.

모든 k가 증분함수에서 합성되어 간격 끝에서의 함수 값이

결정된다.

22 :

Page 59: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

예제 22.5 (4차 RK법을 이용한 연립 상미분방정식의 풀이) (1/4)

Q. 예제 22.4에서 다루었던 문제의 해를 4차 RK법으로 구하라.

풀이)상미분방정식을 다음과 같이 표시한다.

간격의 시작점에서 x와 v에 대한 기울기를 계산한다.

vvxtfdtdx

== ),,(1

22 ),,( v

mc

gvxtfdtdv d−==

0)0,0,0(11,1 == fk

81.9)0(1.68

25.081.9)0,0,0( 222,1 =−== fk

여기서 ki,j는 j번째 종속변수의 i번째 k값이다.

22 :

Page 60: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

예제 22.5 (4차 RK법을 이용한 연립 상미분방정식의 풀이) (2/4)

간격의 중점에서 x와 v의 첫 번째 값을 구한다.

간격의 중점에서 x와 v에 대한 기울기를 계산한다.

간격의 중점에서 x와 v의 두 번째 값을 구한다.

02200

2)0()1( 1,1 =+=+=

hkxx

81.92281.90

2)0()1( 2,1 =+=+=

hkvv

8100.9)81.9,0,1(11,2 == fk

4567.9)81.9,0,1(22,2 == fk

8100.9228100.90

2)0()1( 1,2 =+=+=

hkxx

4567.9224567.90

2)0()1( 2,2 =+=+=

hkvv

22 :

Page 61: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

예제 22.5 (4차 RK법을 이용한 연립 상미분방정식의 풀이) (3/4)

간격의 중점에서 x와 v에 대한 기울기를 다시 계산한다.

간격의 끝점에서 x와 v의 값을 구한다.

간격의 끝점에서 x와 v의 기울기를 계산한다.

4567.9)4567.9,8100.9,1(11,3 == fk

4817.9)4567.9,8100.9,1(22,3 == fk

9134.18)2(4567.90)0()2( 1,3 =+=+= hkxx

9634.18)2(4817.90)0()2( 2,3 =+=+= hkvv

9634.18)9634.18,9134.18,2(11,4 == fk

4898.8)9634.18,9134.18,2(22,4 == fk

22 :

Page 62: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

예제 22.5 (4차 RK법을 이용한 연립 상미분방정식의 풀이) (4/4)

위에서 구한 k를 합하여 최종적으로 x와 v의 값을 구한다.

Euler법으로 얻은 결과와는 대조적으로 4차 RK법으로 구한

예측한 값은 정해에 매우 가깝다.

1656.192]9634.18)4567.98100.9(20[610)2( =++++=x

7256.182]4898.8)4817.94567.9(28100.9[610)2( =++++=v

t xtrue vtrue xRK4 vRK4 εt(x) εt(v)

02468

10

019.166371.9304

147.9642237.5104334.1782

018.729233.111842.076246.957549.4214

019.165671.9311

147.9521237.5104334.1626

018.725633.099542.054746.934549.4207

0.0040.0010.0040.0000.005

0.0190.0370.0510.0490.038

22 :

Page 63: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

22.5 연립방정식 (3/10)

[연립 ODE에 Rk4법을 적용하는 M-파일 ]

function [tp,yp] = rk4sys(dydt,tspan,y0,h,varargin)

% rk4sys: fourth-order Runge-Kutta for a system of ODEs

% [t,y] = rk4sys(dydt,tspan,y0,h,p1,p2,...): integrates a

% system of ODEs with fourth-order RK method

% input:

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

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

% generated at interval of h, or

% = [t0 t1 ... tf]; specific times where solution output

% y0 = initial values of dependent variables

% h = step size

% p1,p2,... = additional parameters used by dydt

22 :

Page 64: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

22.5 연립방정식 (4/10)

[연립 ODE에 Rk4법을 적용하는 M-파일 ]

% output:

% tp = vector of independent variable

% yp = vector of solution for dependent variables

if nargin<4,error('at least 4 input arguments required'),end

if any(diff(tspan)<=0),error('tspan not ascending order'), end

n = length(tspan);

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

if n == 2

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

if t(n)<tf

t(n+1) = tf;

22 :

Page 65: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

22.5 연립방정식 (5/10)

[연립 ODE에 Rk4법을 적용하는 M-파일 ]

n = n+1;

end

else

t = tspan;

end

tt = ti; y(1,:) = y0;

np = 1; tp(np) = tt; yp(np,:) = y(1,:);

i=1;

while(1)

tend = t(np+1);

hh = t(np+1) - t(np);

if hh>h,hh = h;end

22 :

Page 66: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

22.5 연립방정식 (6/10)

[연립 ODE에 Rk4법을 적용하는 M-파일 ]

while(1)

if tt+hh>tend,hh = tend-tt;end

k1 = dydt(tt,y(i,:),varargin{:})';

ymid = y(i,:) + k1.*hh./2;

k2 = dydt(tt+hh/2,ymid,varargin{:})';

ymid = y(i,:) + k2*hh/2;

k3 = dydt(tt+hh/2,ymid,varargin{:})';

yend = y(i,:) + k3*hh;

k4 = dydt(tt+hh,yend,varargin{:})';

phi = (k1+2*(k2+k3)+k4)/6;

y(i+1,:) = y(i,:) + phi*hh;

tt = tt+hh;

22 :

Page 67: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

22.5 연립방정식 (7/10)

[연립 ODE에 Rk4법을 적용하는 M-파일 ]

i=i+1;

if tt>=tend,break,end

end

np = np+1; tp(np) = tt; yp(np,:) = y(i,:);

if tt>=tf,break,end

end

22 :

Page 68: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

22.5 연립방정식 (8/10)

[내장함수]

function dy = dydtsys(t,y)

dy = [y(2); 9.81-0.25/68.1*y(2)^2];

22 :

Page 69: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

22.5 연립방정식 (9/10)

>> [t y] = rk4sys(@dydtsys, [0 10], [0 0], 2);

>> disp ([t’ y(:, 1) y(:, 2)])

0 0 0

2.0000 19.1656 18.7256

4.0000 71.9311 33.0995

6.0000 147.9521 42.0547

8.0000 237.5104 46.9345

10.0000 334.1626 49.4027

22 :

Page 70: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

22.5 연립방정식 (10/10)

>> tspan=[0 6 10] ;

>> [t y] = rk4sys(@dydtsys, tspan, [0 0], 2);

>> disp ([t’ y(:, 1) y(:, 2)])

0 0 0

6.0000 147.9521 42.0547

10.0000 334.1626 49.4027

22 :

Page 71: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

부록 (비선형진자의 미분방정식의 해) (1/6)

질량 m, 길이 L, 감쇠계수 c인 비선형진자의 운동을 살펴보자.

윗 식에서 c/(mL) = 0.3, g/L = 1, a = π/2, b = 0 인 경우

b(0)y' a,y(0)0siny Lg'y" ===++ y

mLc

siny '3.0y"0siny '3.0y"

−−==++

yy

0)0((0)y' ,2/u(0)y(0)),,(sin3.0'

),,(''

====

=−−===

≡≡

vvuxguvv

vuxfvuyvyu

π

22 :

Page 72: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

부록 (비선형진자의 미분방정식의 해) (2/6)

[2nd ODE-Euler법]

function [x, u, v] =Euler_sys2(f, g, a, b, u0, v0, n)

h = (b-a)/n;

x = (a+h: h: b);

u(1) = u0 + h*feval(f, a, u0, v0);

v(1) = v0 + h*feval(g, a, u0, v0);

for i = 2 : n

u(i) = u(i-1) + h*feval(f, x(i-1), u(i-1), v(i-1));

v(i)= v(i-1) + h*feval(g, x(i-1), u(i-1), v(i-1));

end

x=[a x]; u=[u0 u]; v=[v0 v];

plot(x, u)

22 :

Page 73: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

부록 (비선형진자의 미분방정식의 해) (3/6)

[내장함수]

function t = f(x,u,v)

t = v;

function t = g(x, u, v)

t = -0.3*v - sin(u);

22 :

Page 74: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

부록 (비선형진자의 미분방정식의 해) (4/6)

>> u0=pi/2; v0=0; a=0; b=15; n=100;

>> [x, u, v] = Euler_sys2('f','g', a, b, u0, v0, n)

x =

...

Columns 96 through 101

14.2500 14.4000 14.5500 14.7000 14.8500 15.0000

u =

...

Columns 96 through 101

0.3432 0.2920 0.2356 0.1752 0.1123 0.0483

v =

...

Columns 96 through 101

-0.3411 -0.3763 -0.4025 -0.4194 -0.4267 -0.4243

22 :

Page 75: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

부록 (비선형진자의 미분방정식의 해) (4/6)

>> u0=pi/2; v0=0; a=0; b=15; n=100;

>> [x, u, v] = Euler_sys2('f','g', a, b, u0, v0, n)

x =

...

Columns 96 through 101

14.2500 14.4000 14.5500 14.7000 14.8500 15.0000

u =

...

Columns 96 through 101

0.3432 0.2920 0.2356 0.1752 0.1123 0.0483

v =

...

Columns 96 through 101

-0.3411 -0.3763 -0.4025 -0.4194 -0.4267 -0.4243

22 :

Page 76: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

부록 (비선형진자의 미분방정식의 해) (5/6)

[2nd ODE-RK2법]

function [x, u, v] = RK2_sys(f, g, a, b, u0, v0, n)

h = (b-a)/n; hh=h/2;

x = (a+h: h: b);

k1 = h*feval (f, a, u0, v0); m1 = h*feval (g, a, u0, v0);

k2 = h*feval (f, a+hh, u0+0.5*k1, v0+0.5*m1);

m2 = h*feval (g, a+hh, u0+0.5*k1, v0+0.5*m1);

u(1) = u0 + k2; v(1) = v0 + m2;

for i = 1 : n-1

k1 = h*feval (f, x(i), u(i), v(i));

m1 = h*feval (g, x(i), u(i), v(i));

22 :

Page 77: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

부록 (비선형진자의 미분방정식의 해) (5/6)

[2nd ODE-RK2법]

k2 = h*feval (f, x(i)+hh, u(i)+0.5*k1, v(i)+0.5*m1);

m2 = h*feval (g, x(i)+hh, u(i)+0.5*k1, v(i)+0.5*m1);

u(i+1) = u(i) + k2;

v(i+1) = v(i) + m2;

end

x=[a x]; u=[u0 u]; v=[v0 v]; plot(x, u)

22 :

Page 78: 6.1 개요 - Pusan National Universitybml.pusan.ac.kr/Lecture/Undergraduates/NumAnalysis/22_InitialValue.pdf · Applied Numerical Methods 장상미분방정식초기값문제 6.1

Applied Numerical Methods 장 상미분방정식 초기값 문제

부록 (비선형진자의 미분방정식의 해) (6/6)

>> n=20;[x2, u2, v] = RK2_sys('f','g',a,b,u0,v0,n);

>> n=50;[x5, u5, v] = RK2_sys('f','g',a,b,u0,v0,n);

>> n=200;[x20, u20, v] = RK2_sys('f','g',a,b,u0,v0,n);

>> plot(x2, u2, x5, u5, x20, u20)

22 :