Ch21. Numerical Differentiation - Chibum Lee...21.4 부등간격데이터에대한도함수...

22
수치해석 수치해석 Numerical Analysis Numerical Analysis 161009 161009 Ch21. Numerical Ch21. Numerical Differentiation Differentiation

Transcript of Ch21. Numerical Differentiation - Chibum Lee...21.4 부등간격데이터에대한도함수...

Page 1: Ch21. Numerical Differentiation - Chibum Lee...21.4 부등간격데이터에대한도함수 부등간격데이터의도함수를계산하는한가지방법은다 항식보간을수행한후도함수를구하는것

수치해석수치해석Numerical AnalysisNumerical Analysis

161009161009

Ch21. Numerical Ch21. Numerical Ch21. Numerical Ch21. Numerical DifferentiationDifferentiation

Page 2: Ch21. Numerical Differentiation - Chibum Lee...21.4 부등간격데이터에대한도함수 부등간격데이터의도함수를계산하는한가지방법은다 항식보간을수행한후도함수를구하는것

� 미분

• 도함수 : 독립변수에 대한 종속변수의 변화율

21.1 21.1 21.1 21.1 소개소개소개소개 및및및및 배경배경배경배경 (1/2)(1/2)(1/2)(1/2)

( ) ( )i if x x f xy

x x

+ ∆ −∆=

∆ ∆

차분 근사 도함수

0

( ) ( )lim ( )i i

ix

f x x f xdyy f x

dx x∆ →

+ ∆ −′ ′= = =

Numerical AnalysisNumerical Analysis

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

Page 3: Ch21. Numerical Differentiation - Chibum Lee...21.4 부등간격데이터에대한도함수 부등간격데이터의도함수를계산하는한가지방법은다 항식보간을수행한후도함수를구하는것

21.1 21.1 21.1 21.1 소개소개소개소개 및및및및 배경배경배경배경 (2/2)(2/2)(2/2)(2/2)

2

2

d y d dy

dx dx dx

=

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

• 편도함수는 한 개 이상의 변수에 의존하는 함수에 대해 사용한다.

Numerical AnalysisNumerical Analysis

0

( , ) ( , )limy

f f x y y f x y

y y∆ →

∂ + ∆ −=

∂ ∆

• 편도함수는 한 개 이상의 변수에 의존하는 함수에 대해 사용한다.

한 개의 변수를 고정시키고, 한 점에서 함수의 도함수를 취한다.

0

( , ) ( , )limx

f f x x y f x y

x x∆ →

∂ + ∆ −=

∂ ∆

Page 4: Ch21. Numerical Differentiation - Chibum Lee...21.4 부등간격데이터에대한도함수 부등간격데이터의도함수를계산하는한가지방법은다 항식보간을수행한후도함수를구하는것

� 정확도의 수준은 사용하는 Taylor series의 항의 개수에 비례.

• 예를 들면,

• 다시 쓰면,

� 전향차분 공식 (2차 이상의 도함수 항을 무시)

21.221.221.221.2 고정확도 미분 공식 (1/4)

( ) ( )f x f x+ −′ = +

21( ) ( ) ( )( ) ( )

2!

i i ii

f x f x f xf x h O h

h

+ ′′−′ = − +

2

1

( )( ) ( ) ( )

2!

ii i i

f xf x f x f x h h+

′′′= + + +L

Numerical AnalysisNumerical Analysis

� 더 정확한 공식은?• 2차 도함수에 대한 전향차분 근사

• 위식에 대입하면,

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

1( ) ( )( ) ( )i ii

f x f xf x O h

h

+ −′ = +

2 1

2

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

f x f x f xf x O h

h

+ +− +′′ = +

22 1( ) 4 ( ) 3 ( )

( ) ( )2

i i ii

f x f x f xf x O h

h

+ +− + −′ = +

Page 5: Ch21. Numerical Differentiation - Chibum Lee...21.4 부등간격데이터에대한도함수 부등간격데이터의도함수를계산하는한가지방법은다 항식보간을수행한후도함수를구하는것

21.221.221.221.2 고정확도 미분 공식 (2/4)

Forward Finite-Difference

Numerical AnalysisNumerical Analysis

Page 6: Ch21. Numerical Differentiation - Chibum Lee...21.4 부등간격데이터에대한도함수 부등간격데이터의도함수를계산하는한가지방법은다 항식보간을수행한후도함수를구하는것

21.221.221.221.2 고정확도 미분 공식 (3/4)

Backward Finite-Difference

Numerical AnalysisNumerical Analysis

Page 7: Ch21. Numerical Differentiation - Chibum Lee...21.4 부등간격데이터에대한도함수 부등간격데이터의도함수를계산하는한가지방법은다 항식보간을수행한후도함수를구하는것

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

Centered Finite-Difference

Numerical AnalysisNumerical Analysis

Page 8: Ch21. Numerical Differentiation - Chibum Lee...21.4 부등간격데이터에대한도함수 부등간격데이터의도함수를계산하는한가지방법은다 항식보간을수행한후도함수를구하는것

� Q. 예제 4.4에서 다음 함수의 도함수를 유한차분과 간격

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

그 결과는 다음 표와 같다.

예제 21.1 (1/2)

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

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

Numerical AnalysisNumerical Analysis

여기서 오차는 정해 f'(0.5)= -0.9125에 기초한다.

고정확도 공식을 사용하여 다시 계산하라.

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

추정값 -0.714 -0.934 -1.155

εt 21.7% -2.4% -26.5%

Page 9: Ch21. Numerical Differentiation - Chibum Lee...21.4 부등간격데이터에대한도함수 부등간격데이터의도함수를계산하는한가지방법은다 항식보간을수행한후도함수를구하는것

Sol) 필요한 데이터

O(h2)의 전향 차분

예제 21.1 (2/2)

2 2

1 1

1 1

2 2

0 ( ) 1.2

0.25 ( ) 1.1035156

0.5 ( ) 0.925

0.75 ( ) 0.6363281

1 ( ) 0.2

i i

i i

i i

i i

i i

x f x

x f x

x f x

x f x

x f x

− −

− −

+ +

+ +

= =

= =

= =

= =

= =

0.2 4(0.6363281) 3(0.925)− + −

Numerical AnalysisNumerical Analysis

O(h2)의 후향 차분

O(h4)의 중심 차분

t

0.2 4(0.6363281) 3(0.925)(0.5) 0.859375 =5.82 %

2(0.25)f ε

− + −′ = = −

t

0.2 8(0.6363281) 8(1.1035156) 1.2(0.5) 0.9125 =0 %

12(0.25)f ε

− + − +′ = = −

t

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

2(0.25)f ε

− +′ = = −

Page 10: Ch21. Numerical Differentiation - Chibum Lee...21.4 부등간격데이터에대한도함수 부등간격데이터의도함수를계산하는한가지방법은다 항식보간을수행한후도함수를구하는것

21.3 Richardson 외삽법 (1/2)

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

방법

-간격 크기(h)의 축소

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

� Richardson 외삽법

Numerical AnalysisNumerical Analysis

� Richardson 외삽법

• 두 개의 저차의 도함수 추정값을 이용하여 고차 정확도의 추정값을 계산할

수 있게 한다.

• 18장의 Richardson 외삽법은 다음과 같은 공식을 이용하여 향상된 적분 추

정값을 제공

• 편의상 h2=h1/2을 이용하면,

2 1

4 1( ) ( )

3 3I I h I h= −

)]()([1)/(

1)( 122

21

2 hIhIhh

hII −−

+=

Page 11: Ch21. Numerical Differentiation - Chibum Lee...21.4 부등간격데이터에대한도함수 부등간격데이터의도함수를계산하는한가지방법은다 항식보간을수행한후도함수를구하는것

• O(h2)의 중심 차분근사에 이 공식을 사용하면, O(h4)의 도함수 추정

값을 구할 수 있다.

• O(h4)의 중심 차분근사에 이 공식을 사용하면, O(h6)의 도함수 추정

값을 구할 수 있다.

21.3 Richardson 외삽법 (2/2)

2 1

4 1( ) ( )

3 3D D h D h= −

Numerical AnalysisNumerical Analysis

• O(h6)의 중심 차분근사에 이 공식을 사용하면, O(h8)의 도함수 추정

값을 구할 수 있다.

D =16

15D(h2 )−

1

15D(h1)

D =64

63D(h2 )−

1

63D(h1)

Page 12: Ch21. Numerical Differentiation - Chibum Lee...21.4 부등간격데이터에대한도함수 부등간격데이터의도함수를계산하는한가지방법은다 항식보간을수행한후도함수를구하는것

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

여 x=0.5에서의 1차 도함수를 구하라. 그리고

Richardson 외삽법을 사용하여 향상된 추정값을 구하라.

정해는 -0.9125이다.

Sol)

예제 21.2

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

Numerical AnalysisNumerical Analysis

Sol)

중심 차분으로 1차 도함수를 계산하면

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

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

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 3D = − − − = −

Page 13: Ch21. Numerical Differentiation - Chibum Lee...21.4 부등간격데이터에대한도함수 부등간격데이터의도함수를계산하는한가지방법은다 항식보간을수행한후도함수를구하는것

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

� 부등간격 데이터의 도함수를 계산하는 한 가지 방법은 다

항식 보간을 수행한 후 도함수를 구하는 것이다.

• 예로서, 세 개의 점을 지나는 2차의 Lagrange 다항식을 구하고, 이 다항식

의 도함수를 구하면 다음과 같다.

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

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

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

Numerical AnalysisNumerical Analysis

• 장점

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

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

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

( ) 22 01

( ) ( )( ) (4.25)

2

f x f xf x O h

h

−′ = + 식

Page 14: Ch21. Numerical Differentiation - Chibum Lee...21.4 부등간격데이터에대한도함수 부등간격데이터의도함수를계산하는한가지방법은다 항식보간을수행한후도함수를구하는것

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

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

예제 21.3 (1/2)

0

( 0)z

dTq z k

dz =

= = −

Numerical AnalysisNumerical Analysis

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

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

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

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

Page 15: Ch21. Numerical Differentiation - Chibum Lee...21.4 부등간격데이터에대한도함수 부등간격데이터의도함수를계산하는한가지방법은다 항식보간을수행한후도함수를구하는것

예제 21.3 (2/2)

Sol) 흙과 공기의 경계에서 도함수를 구하면,

( )( )( ) ( ) ( )

( )( )

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

0 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

− − − −′ = +

− − − −

− −+ = − + − = −

− −

Numerical AnalysisNumerical Analysis

2( 0) 0.5 133.333 66.667

W W Wq z

m K m m

= = − − =

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

Page 16: Ch21. Numerical Differentiation - Chibum Lee...21.4 부등간격데이터에대한도함수 부등간격데이터의도함수를계산하는한가지방법은다 항식보간을수행한후도함수를구하는것

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

� 실험 데이터의 미분에 관련된 문제점은 데이터에 포함된 오차를

증폭시키는 것이며, 반면에 수치적분은 데이터의 오차를 완화시

킨다.

� 오차를 가지는 데이터에 대해서 도함수를 결정하는 방법은 최소

제곱 회귀분석을 사용하여 데이터에 매끄럽고 미분 가능한 함수

를 접합한 후, 그 함수의 도함수를 구하는 것이다.

Numerical AnalysisNumerical Analysis

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

Page 17: Ch21. Numerical Differentiation - Chibum Lee...21.4 부등간격데이터에대한도함수 부등간격데이터의도함수를계산하는한가지방법은다 항식보간을수행한후도함수를구하는것

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

• 고차 도함수를 구하기 위해서 두 개 이상의 변수에 대한 함수를 미

분할 수도 있다. 그 결과를 혼합 편도함수라 칭한다.

21.6 편도함수

( , ) ( , )

2

( , ) ( , )

2

f f x x y f x x y

x x

f f x y y f x y y

y y

∂ + ∆ − − ∆=

∂ ∆∂ + ∆ − − ∆

=∂ ∆

Numerical AnalysisNumerical Analysis

분할 수도 있다. 그 결과를 혼합 편도함수라 칭한다.

2( , ) ( , )

2

f fx x y x x y

f 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 y

x y x y

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

∂ ∂ ∆ ∆

Page 18: Ch21. Numerical Differentiation - Chibum Lee...21.4 부등간격데이터에대한도함수 부등간격데이터의도함수를계산하는한가지방법은다 항식보간을수행한후도함수를구하는것

� yi = diff(xi)

• diff(y)./diff(x): 1차 도함수의 유한차분 근사값을 계산하는데 사용.

� fx = gradient(f)

21.7 MATLAB을 이용한 수치미분

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

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

Numerical AnalysisNumerical Analysis

� fx = gradient(f)

• 첫번째 점은 전향차분, 마지막 점은 후향차분, 그 사이점들은 중심

차분을 이용하여 계산

• 편미방도 계산 가능

f = 원소의 수가 n인 1차원 벡터fx = f에 기초하여 계산된 n 개의 차분을 포함하는 벡터

Page 19: Ch21. Numerical Differentiation - Chibum Lee...21.4 부등간격데이터에대한도함수 부등간격데이터의도함수를계산하는한가지방법은다 항식보간을수행한후도함수를구하는것

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

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

분하라.

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

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

Sol).

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

Numerical AnalysisNumerical Analysis

>> x = 0 : 0.1 : 0.8 ;>> y = f(x) ;>> diff(x)ans =

0.1000 0.1000 0.1000 0.1000 0.1000 0.1000 0.1000 0.1000>>d=diff(y)./diff(x) % d=diff(f(x))/0.1; d =

10.8900 -0.0100 3.1900 8.4900 8.6900 1.3900 -11.0100 -21.3100>> n=length(x);>> xm=(x(1:n-1)+x(2:n))./2;>> 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)

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

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

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

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

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

Page 20: Ch21. Numerical Differentiation - Chibum Lee...21.4 부등간격데이터에대한도함수 부등간격데이터의도함수를계산하는한가지방법은다 항식보간을수행한후도함수를구하는것

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

Numerical AnalysisNumerical Analysis

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

Page 21: Ch21. Numerical Differentiation - Chibum Lee...21.4 부등간격데이터에대한도함수 부등간격데이터의도함수를계산하는한가지방법은다 항식보간을수행한후도함수를구하는것

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

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

를 미분하라.

Sol)

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

Numerical AnalysisNumerical Analysis

>> x = 0 : 0.1 : 0.8 ;>> y = f(x) ;>> dy=gradient(y, 0.1)dy =

Columns 1 through 510.8900 5.4400 1.5900 5.8400 8.5900

Columns 6 through 85.0400 -4.8100 -16.1600 -21.3100

>> 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)

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

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

Page 22: Ch21. Numerical Differentiation - Chibum Lee...21.4 부등간격데이터에대한도함수 부등간격데이터의도함수를계산하는한가지방법은다 항식보간을수행한후도함수를구하는것

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

결과는 예제 21.4에서diff 함수를 사용해서얻은 것 보다 정확하지못하다. 이는diff(0.1)을 사용할

Numerical AnalysisNumerical Analysis

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

diff(0.1)을 사용할때에 비해 두 배가 큰구간에서gradient(0.2)가실행되기 때문이다.