21장수치미분bml.pusan.ac.kr/lecture/undergraduates/numanalysis/21... · 2016-03-15 · applied...

32
21장 수치미분 21.1 소개 및 배경 21.2 고정확도 미분 공식 21.3 Richardson 외삽법 21.4 부등간격의 미분 21.5 오차가 있는 데이터의 도함수와 적분 21.6 MATLAB을 이용한 수치미분

Upload: others

Post on 27-Feb-2020

4 views

Category:

Documents


0 download

TRANSCRIPT

21장 수치미분

21.1 소개 및 배경

21.2 고정확도 미분 공식

21.3 Richardson 외삽법

21.4 부등간격의 미분

21.5 오차가 있는 데이터의 도함수와 적분

21.6 MATLAB을 이용한 수치미분

Applied Numerical Methods 장 수치미분

21장 수치미분

자유 낙하하는 번지 점프하는 사람의 속도와 이를 적분하여 구한

낙하거리는 다음과 같다.

위 문제의 역을 고려해보자. 즉 낙하한 거리를 미분하여 번지 점프

하는 사람의 속도와 가속도를 구한다.

미분을 해석적으로 구할 수 없는 경우에는 어떻게 하나?

위치가 이산 값으로 주어질 경우에는 어떻게 미분하는가?

( )( ) dz tv tdt

=

= t

mgc

cgmtv d

dtanh)( ( ) ln cosh d

d

gcmz t tc m

=

2( ) sech dgca t g tm

=

2

2

( ) ( )( ) dv t d z ta tdt dt

= =

= t

mgc

cgmtv d

dtanh)(

21

Applied Numerical Methods 장 수치미분

21.1 소개 및 배경 (1/4)

미분이란 무엇인가?도함수 : 독립변수에대한종속변수의변화율

1차도함수 : 곡선의한 점에서접선의구배

( ) ( )i if x x f xyx x

+ ∆ −∆=

∆ ∆ 0

( ) ( )lim ( )i iix

f x x f xdy y f xdx x∆ →

+ ∆ − ′ ′= = =∆

차분 근사 도함수

21

Applied Numerical Methods 장 수치미분

21.1 소개 및 배경 (2/4)

2차도함수 : 구배가얼마나빨리변하는지의정도, 곡율

편도함수는한 개 이상의변수에의존하는 함수에대해 사용한다. 한 개의변수를고정시키고, 한 점에서함수의도함수를취한다.

0

( , ) ( , )limx

f f x x y f x yx x∆ →

∂ + ∆ −=

∂ ∆

0

( , ) ( , )limy

f f x y y f x yy y∆ →

∂ + ∆ −=

∂ ∆

2

2

d y d dydx dx dx

=

21

Applied Numerical Methods 장 수치미분

21.1 소개 및 배경 (3/4)

공학과 과학에서의 미분Fourier의 열전도 법칙 : 고온 영역에서 저온 영역으로의 열전달을 정량화함.

여기서, q = 열플럭스(W/m2), k = 열전도계수[W/(m·K)]

T = 온도(K), x = 길이(m)

dTq kdx

= −

21

Applied Numerical Methods 장 수치미분

21.1 소개 및 배경 (4/4)

<공학과 과학에서 널리 사용되는 1차원 구성 법칙>

법칙 방정식 물리분야 구배 플럭스 비례상수

Fourier 법칙

열전도 온도 열플럭스 열전도계수

Fick 법칙

물질 확산 농도 질량 플럭스 확산계수

D’Arcy 법칙

다공질 매체를통과하는 유동

수두 유동 플럭스 수력 전도계수

Ohm 법칙

전류 전압 전류 플럭스 전기 전도계수

Newton 점성법칙

유체 속도 전단 응력 동점성계수

Hooke 법칙

탄성 변형 응력 탄성계수

dVJdx

σ= −

dcJ Ddx

= −

dTq kdx

= −

dhq kdx

= −

dudx

τ µ= −

LEL

σ ∆=

21

Applied Numerical Methods 장 수치미분

21.2 고정확도 미분 공식 (1/5)

4장에서 Taylor series expansion을 이용하여 도함수에 대한 유한차분 근사를 유도하였다. 1차 및 고차 도함수에 대한 전향, 후향, 중심유한차분 근사를 소개하였고, 이들 추정값의 오차는 최대 O(h2)이었다.

정확도의 수준은 사용하는 Taylor series의 항의 개수에 따른다.

예를 들면,

다시 쓰면,

2차 이상의 도함수 항을 무시하면, 전향차분 공식은 다음과 같다(4장).

21

( )( ) ( ) ( )2!

ii i i

f xf x f x f x h h+

′′′= + + +

21( ) ( ) ( )( ) ( )2!

i i ii

f x f x f xf x h O hh

+ ′′−′ = − +

1( ) ( )( ) ( )i ii

f x f xf x O hh

+ −′ = +

(21.13)

21

Applied Numerical Methods 장 수치미분

21.2 고정확도 미분 공식 (2/5)

2차 도함수에 대한 전향차분 근사

식 (21.13)에 대입하면,

다시 정리하면,

2차 도함수를 고려함으로써 정확도를 O(h2)으로 향상시켰다.

21 2 12

( ) ( ) ( ) 2 ( ) ( )( ) ( )2

i i i i ii

f x f x f x f x f xf x h O hh h

+ + +− − +′ = − +

2 12

( ) 2 ( ) ( )( ) ( )i i ii

f x f x f xf x O hh

+ +− +′′ = +

22 1( ) 4 ( ) 3 ( )( ) ( )2

i i ii

f x f x f xf x O hh

+ +− + −′ = +

21

Applied Numerical Methods 장 수치미분

21.2 고정확도 미분 공식 (3/5)

Forward Finite-Difference

21

Applied Numerical Methods 장 수치미분

21.2 고정확도 미분 공식 (4/5)

Backward Finite-Difference

21

Applied Numerical Methods 장 수치미분

21.2 고정확도 미분 공식 (5/5)

Centered Finite-Difference

21

Applied Numerical Methods 장 수치미분

예제 21.1 (1/3)

Q. 4장에서 다음 함수의 도함수를 유한차분과 간격 크기

h=0.25를 이용하여 x=0.5에서 구하였다.

그 결과는 다음 표와 같다. 여기서 오차는 정해 f'(0.5)=

-0.9125에 기초한다.

그림 21.3-그림 21.5의 고정확도 공식을 사용하여 다시

계산하라.

4 3 2( ) 0.1 0.15 0.5 0.25 1.2f x x x x x= − − − − +

후향 O(h) 중심 O(h2) 전향 O(h)

추정값 -0.714 -0.934 -1.155

εt21.7% -2.4% -26.5%

21

Applied Numerical Methods 장 수치미분

예제 21.1 (2/3)

풀이) 필요한 데이터는 다음과 같다.

2 2

1 1

1 1

2 2

0 ( ) 1.20.25 ( ) 1.1035156

0.5 ( ) 0.9250.75 ( ) 0.63632811 ( ) 0.2

i i

i i

i i

i i

i i

x f xx f xx f xx f xx f x

− −

− −

+ +

+ +

= =

= == =

= =

= =

t0.2 4(0.6363281) 3(0.925)(0.5) 0.859375 =5.82 %

2(0.25)f ε− + −′ = = −

O(h2)의 전향 차분은 다음과 같이 계산된다(그림 21.3)

O(h2)의 후향 차분은 다음과 같이 계산된다(그림 21.4)

t3(0.925) 4(1.1035156) 1.2(0.5) 0.878125 =3.77 %

2(0.25)f ε− +′ = = −

21

Applied Numerical Methods 장 수치미분

예제 21.1 (3/3)

O(h4)의 중심 차분은 다음과 같이 계산된다(그림 21.5)

t0.2 8(0.6363281) 8(1.1035156) 1.2(0.5) 0.9125 =0 %

12(0.25)f ε− + − +′ = = −

note : 전향과 후향 차분의 오차는 4장의 결과에 비해 상당히정확하다. 그리고 중심 차분은 정해와 같다. 이는 Taylorseries에 기초한 중심 차분 공식이 데이터 점들을 지나는4차 다항식과 같기 때문이다.

21

Applied Numerical Methods 장 수치미분

21.3 Richardson 외삽법 (1/2)

유한 차분을 사용할 때 도함수 추정값을 향상시키는 두 가지

방법

- 간격 크기(h)의 축소

- 더 많은 점을 포함하는 고차 공식의 사용

Richardson 외삽법은 두 개의 저차의 도함수 추정값을 이용하여 고차 정확도의 추정값을 계산할 수 있게 한다.

18.2.1절에서 Richardson 외삽법은 다음과 같은 공식을

이용하여 향상된 적분 추정값을 제공하였다(식 18.4).

2 2 121 2

1( ) [ ( )]( / ) 1

I I h I h hh h

= + −−

21

Applied Numerical Methods 장 수치미분

21.3 Richardson 외삽법 (2/2)

위 식은 컴퓨터 알고리듬을 쓰기 쉽게 편의상 h2=h1/2을사용하여 표현하는 것이 일반적이다.

도함수에 대해서도 유사하게 나타낼 수 있다.

O(h2)의 중심 차분근사에 이 공식을 사용하면, O(h4)의도함수 추정값을 구할 수 있다.

2 14 1( ) ( )3 3

I I h I h= −

2 14 1( ) ( )3 3

D D h D h= −

21

Applied Numerical Methods 장 수치미분

예제 21.2

Q. 예제 21.1의 함수와 간격 h1=0.5, h2=0.25를 사용하여

x=0.5에서의 1차 도함수를 구하라. 그리고 Richardson 외삽법

을 사용하여 향상된 추정값을 구하라. 정해는 -0.9125이다.

풀이) 중심 차분으로 1차 도함수를 계산하면 다음과 같다.

Richardson 외삽법을 이용한 개선된 추정값

→ 고려하는 함수가 4차 다항식이므로 정확한 값을 도출한다.

4 3 2( ) 0.1 0.15 0.5 0.25 1.2f x x x x x= − − − − +

t

t

0.2 1.2(0.5) 1.0 = 9.6%1

0.6363281 1.103516(0.25) 0.934375 = 2.4%0.5

D

D

ε

ε

−= = − −

−= = − −

4 1( 0.934375) ( 1) 0.9125 3 3

D = − − − = −

21

Applied Numerical Methods 장 수치미분

21.4 부등간격 데이터에 대한 도함수

실험 또는 현장에서 획득하는 데이터는 부등간격으로 배열된다.

부등간격 데이터의 도함수를 계산하는 한 가지 방법은 다항식 보간을 수행한 후 도함수를 구하는 것이다.

예로서, 세 개의 점을 지나는 2차의 Lagrange 다항식을 구하고, 이 다항식의 도함수를 구하면 다음과 같다.

장점세 점으로 주어진 구간 내의 어떤 점에서도 도함수를 구할 수 있다.

주어진 점들이 등간격으로 분포되지 않아도 된다.

도함수 값이 중심 차분값의 정확도와 같다. 특히 등간격일 때 x=x1에서,

′ f x( )= f x0( ) 2x − x1 − x2

x0 − x1( ) x0 − x2( )+ f x1( ) 2x − x0 − x2

x1 − x0( ) x1 − x2( )+ f x2( ) 2x − x0 − x1

x2 − x0( ) x2 − x1( )

( ) 22 01

( ) ( ) ( ) (4.25)2

f x f xf x O hh

−′ = + 식

21

Applied Numerical Methods 장 수치미분

예제 21.3 (1/2)

Q. 땅 속의 온도 구배에 대한 측정값은 그림과 같다. 흙과 공기의 경계에서의

열플럭스는 Fourier 법칙에 따라 다음과 같이 계산된다.

여기서 q(x)=열플럭스 (W/m2), k=흙의 열전도계수(=0.5 W/(m·K), T=온도(K),

z=경계면으로부터의 땅 속 깊이

수치미분을 사용하여 흙과 공기의 경계에서의 온도 구배를 구하고, 이를

이용하여 땅 속으로의 열플럭스를 계산하라.

0

( 0)z

dTq z kdz =

= = −

21

Applied Numerical Methods 장 수치미분

예제 21.3 (2/2)

풀이) 식 (21.21)을 사용하여 흙과 공기의 경계에서 도함수를

구하면,

이를 이용하여 열 플럭스를 구하면,

( ) ( )( ) ( )( )

( )( )

2(0) 0.0125 0.0375 2(0) 0 0.03750 13.5 120 0.0125 0 0.0375 0.0125 0 0.0125 0.0375

2(0) 0 0.012510 1440 1440 133.333 133.333 /0.0375 0 0.0375 0.0125

f

K m

− − − −′ = +− − − −

− −+ = − + − = −

− −

2( 0) 0.5 133.333 66.667

W W Wq zm K m m

= = − − =

21

Applied Numerical Methods 장 수치미분

21.5 오차를 가지는 데이터에 대한 도함수와 적분

실험 데이터의 미분에 관련된 문제점은 데이터에 포함된 오차를증폭시키는 것이며, 반면에 수치적분은 데이터의 오차를 완화시킨다.

오차를 가지는 데이터에 대해서 도함수를 결정하는 방법은 최소제곱 회귀분석을 사용하여 데이터에 매끄럽고 미분 가능한 함수를 접합한 후, 그 함수의 도함수를 구하는 것이다.

데이터에 포함된 작은 오차가 수치미분을 통해 얼마나 증폭되는지를나타내는 그림: (a) 오차가 없는 데이터, (b) 곡선 (a)의 수치미분 결과, (c) 조금 수정된 데이터, 그리고 (d) 증가된 변동을 분명히 보여주는 곡선 (c)의 수치미분 결과. 대조적으로 반대 연산인 적분[곡선(d) 아래의 면적을 취함으로써 (d)에서 (c)로 이동함]은 오차를 줄이거나 완화시킨다.

21

Applied Numerical Methods 장 수치미분

21.6 편도함수

일차원 편도함수는 도함수와 같은 방법으로 계산된다.

고차 도함수를 구하기 위해서 두 개 이상의 변수에 대한함수를 미분할 수도 있다. 그 결과를 혼합 편도함수라칭한다.

( , ) ( , )2

( , ) ( , )2

f f x x y f x x yx xf f x y y f x y yy y

∂ + ∆ − − ∆=

∂ ∆∂ + ∆ − − ∆

=∂ ∆

2 ( , ) ( , )

2

f fx x y x x yf f y y

x y x y x

∂ ∂+ ∆ − − ∆

∂ ∂ ∂ ∂ ∂= = ∂ ∂ ∂ ∂ ∆

2 ( , ) ( , ) ( , ) ( , )4

f f x x y y f x x y y f x x y y f x x y yx y x y

∂ + ∆ + ∆ − + ∆ − ∆ − − ∆ + ∆ + − ∆ − ∆=

∂ ∂ ∆ ∆

21

Applied Numerical Methods 장 수치미분

21.7 MATLAB을 이용한 수치미분 (1/3)

MATLAB 함수: diff

1차 도함수의 유한차분 근사값을 계산하는데

사용된다.

yi = diff(xi)

xi = n개의 요소를 가지는 1차원 벡터

yi = n-1 개의 요소를 가지는 1차원 벡터

xi 벡터 내 인접한 요소 두 개 값의 차이

21

Applied Numerical Methods 장 수치미분

예제 21.4 (diff을 사용한 미분) (1/4)

Q. MATLAB 함수 diff를 사용하여 x=0에서 0.8까지 다음 함수를

미분하라.

f(x)=0.2+25x-200x2+675x3-900x4+400x5

그리고 정해는 f'(x)=25-400x+2025x2-3600x3+2000x4이다.

풀이) 먼저 f(x)를 무명함수로 나타낸다.

>> f = @(x) 0.2+25*x-200*x.^2+675*x.^3-900*x.^4+400*x.^5;

>> x = 0 : 0.1 : 0.8 ;

>> y = f(x) ;

21

Applied Numerical Methods 장 수치미분

예제 21.4 (diff을 사용한 미분) (2/4)

>> diff(x)

ans =

Columns 1 through 5

0.1000 0.1000 0.1000 0.1000 0.1000

Columns 6 through 8

0.1000 0.1000 0.1000

x 벡터 내 인접한 요소 두 개 값의 차이를 구한다.

도함수의 제차분 근사값을 구한다.

>> d=diff(y)./diff(x) 또는 등간격이므로 d=diff(f(x))/0.1;

d =

Columns 1 through 5

10.8900 -0.0100 3.1900 8.4900 8.6900

Columns 6 through 8

1.3900 -11.0100 -21.3100

21

Applied Numerical Methods 장 수치미분

예제 21.4 (diff을 사용한 미분) (3/4)

>> n=length(x);

>> xm=(x(1:n-1)+x(2:n))./2;

벡터 d의 도함수는 각 구간의 중점에서의 값이므로 중점에 대한 x 값을 구한다.

도함수의 해석값을 구한다.

>> xa=0: .01 : .8 ;

>> ya=25-400*xa+3*675*xa.^2-4*900*xa.^3+5*400*xa.^4;

>> xplot(xm, d, 'o', xa, ya)

수치해와 해석해를 그린다.

21

Applied Numerical Methods 장 수치미분

예제 21.4 (diff을 사용한 미분) (4/4)

정확한 도함수 값(실선)과 MATLAB의 diff 함수를 사용해서 계산한 수치결과(원)의 비교.

21

Applied Numerical Methods 장 수치미분

21.7 MATLAB을 이용한 수치미분 (2/3)

MATLAB 함수: gradient

함수 gradient는 차분을 계산하여 반환한다. 그러나 반환되는 차분은 주어진 값 사이의 구간에서보다는, 그 값에서의 도함수를 구하게 된다.

만일 벡터가 등간격으로 주어진 데이터를 나타낸다면, 다음 구문은 간격으로 나누어 계산한 도함수 값을 반환한다.

fx = gradient(f)

f = 원소의 수가 n인 1차원 벡터

fx = f에 기초하여 계산된 n 개의 차분을 포함하는 벡터이다.

fx = gradient(f, h) h= 데이터 점들 사이의 간격

21

Applied Numerical Methods 장 수치미분

예제 21.5 (gradient를 사용한 미분) (1/3)

Q. MATLAB 함수 gradient를 사용하여 예제 21.4의 함수를

미분하라.

풀이) 예제 21.4와 같이 독립변수와 종속변수의 등간격 값을

생성한다.

>> f = @(x) 0.2+25*x-200*x.^2+675*x.^3-900*x.^4+400*x.^5;

>> x = 0 : 0.1 : 0.8 ;

>> y = f(x) ;

21

Applied Numerical Methods 장 수치미분

예제 21.4 (gradient를 사용한 미분) (2/3)

>> dy=gradient(y, 0.1)

dy =

Columns 1 through 5

10.8900 5.4400 1.5900 5.8400 8.5900

Columns 6 through 8

5.0400 -4.8100 -16.1600 -21.3100

gradient 함수를 이용하여 도함수를 구한다.

>> xa=0: .01 : .8 ;

>> ya=25-400*xa+3*675*xa.^2-4*900*xa.^3+5*400*xa.^4;

>> xplot(x, dy, 'o', xa, ya)

수치해와 해석해를 그린다.

21

Applied Numerical Methods 장 수치미분

예제 21.4 (gradient를 사용한 미분) (3/3)

정확한 도함수 값(실선)과 MATLAB의 gradient 함수를 사용해서 계산한 수치 결과(원)의 비교.

결과는 예제 21.4에서diff 함수를 사용해서얻은 것 보다 정확하지못하다. 이는 diff(0.1)을 사용할 때에 비해두 배가 큰 구간에서gradient(0.2)가 실행되기 때문이다.

21

Applied Numerical Methods 장 수치미분

21.7 MATLAB을 이용한 수치미분 (3/3)

gradient 함수는 일차원 벡터뿐만 아니라, 행렬의 편도함수를 구하는 데에도 적합하다. 그 예로 2차원 벡터 f에 대해 함수

는 다음과 같이 사용된다.

[fx, fy] = gradient(f, h)

fx = (열)방향의 차이

fy = (행)방향의 차이

h = 점들 사이의 간격, 만약 h가 생략되면 두 방향에서점들 사이의 간격은 모두 1로 가정된다.

21