Ch21. Numerical Differentiation - Chibum Lee...21.4 부등간격데이터에대한도함수...
Transcript of Ch21. Numerical Differentiation - Chibum Lee...21.4 부등간격데이터에대한도함수...
수치해석수치해석Numerical AnalysisNumerical Analysis
161009161009
Ch21. Numerical Ch21. Numerical Ch21. Numerical Ch21. Numerical DifferentiationDifferentiation
� 미분
• 도함수 : 독립변수에 대한 종속변수의 변화율
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차 도함수 : 곡선의 한 점에서 접선의 구배
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∆ →
∂ + ∆ −=
∂ ∆
� 정확도의 수준은 사용하는 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
+ +− + −′ = +
21.221.221.221.2 고정확도 미분 공식 (2/4)
Forward Finite-Difference
Numerical AnalysisNumerical Analysis
21.221.221.221.2 고정확도 미분 공식 (3/4)
Backward Finite-Difference
Numerical AnalysisNumerical Analysis
21.221.221.221.2 고정확도 미분 공식 (4/4)
Centered Finite-Difference
Numerical AnalysisNumerical Analysis
� 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%
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 ε
− +′ = = −
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 −−
+=
• 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)
� 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 = − − − = −
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
−′ = + 식
� 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=경계면으로부터의 땅 속 깊이
수치미분을 사용하여 흙과 공기의 경계에서의 온도 구배를 구
하고, 이를 이용하여 땅 속으로의 열플럭스를 계산하라.
예제 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
= = − − =
이를 이용하여 열 플럭스를 구하면,
21.5 오차를 가지는 데이터에 대한 도함수와 적분
� 실험 데이터의 미분에 관련된 문제점은 데이터에 포함된 오차를
증폭시키는 것이며, 반면에 수치적분은 데이터의 오차를 완화시
킨다.
� 오차를 가지는 데이터에 대해서 도함수를 결정하는 방법은 최소
제곱 회귀분석을 사용하여 데이터에 매끄럽고 미분 가능한 함수
를 접합한 후, 그 함수의 도함수를 구하는 것이다.
Numerical AnalysisNumerical Analysis
데이터에 포함된 작은 오차가수 치 미 분 을 통 해 얼 마 나증폭되는지를 나타내는 그림:(a) 오차가 없는 데이터 , (b)곡선 (a)의 수치미분 결과, (c)조금 수정된 데이터, 그리고 (d)증가된 변동을 분명히 보여주는곡선 (c)의 수치미 분 결과 .대 조 적 으 로 반 대 연 산 인적분[곡선 (d) 아래의 면적을취 함 으 로 써 (d)에 서 (c)로이동함 ]은 오차를 줄이거나완화시킨다.
� 일차원 편도함수는 도함수와 같은 방법으로 계산.
• 고차 도함수를 구하기 위해서 두 개 이상의 변수에 대한 함수를 미
분할 수도 있다. 그 결과를 혼합 편도함수라 칭한다.
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
∂ + ∆ + ∆ − + ∆ − ∆ − − ∆ + ∆ + − ∆ − ∆=
∂ ∂ ∆ ∆
� 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 개의 차분을 포함하는 벡터
예제 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 값을 구한다.
도함수의 해석값을 구한다.
수치해와 해석해를 그린다.
예제 21.4 (diff을 사용한 미분) (4/4)
Numerical AnalysisNumerical Analysis
정확한 도함수 값(실선)과 MATLAB의 diff 함수를 사용해서 계산한 수치결과(원)의 비교.
예제 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 함수를 이용하여 도함수를 구한다.
수치해와 해석해를 그린다.
예제 21.4 (diff을 사용한 미분) (2/2)
결과는 예제 21.4에서diff 함수를 사용해서얻은 것 보다 정확하지못하다. 이는diff(0.1)을 사용할
Numerical AnalysisNumerical Analysis
정확한 도함수 값(실선)과 MATLAB의 gradient함수를 사용해서 계산한 수치 결과(원)의 비교.
diff(0.1)을 사용할때에 비해 두 배가 큰구간에서gradient(0.2)가실행되기 때문이다.