1. General procedure to obtain first difference derivatives
이전에 한 논의에 이어서, taylor table을 만드는 과정에 대해서 알아보고자 합니다.
일단 한 예시를 보고 그것을 확장할 수 있습니다.
ex) f′j를 fj,fj+1,fj+2를 이용해 구하고자 합니다.
최종적으로 f′j+a0fj+a1fj+1+a2fj+2=θ(hp), where h=Δx=xj+1−xj=xj+2−xj+1
의 형태로 나타냄으로써 f′j를 fj,fj+1,fj+2에 대해서 표현하고, 그 때 발생하는 오차의 maximum order of accuracy는 p입니다.
이렇게 만들려면 이전 글에서 작성했던 것처럼 taylor expansion으로 fj,fj+1,fj+2를 fj의 미분에 대해서 표현해야합니다.
아래 그림은 이를 정리한 것입니다.

위 그림의 첫번째 행은 fj부터 일차미분, 이차미분... 차수를 늘려가면서 미분한 것입니다.
그리고 첫번째 열은 f′j,a0fj,a1fj+1,a2fj+2이고 이 각각의 값에 대해 taylor expansion한 결과가 두번째 열부터 나와있습니다.
두번째 행부터 마지막 행까지 더하면
f′j+a0fj+a1fj+1+a2fj+2=
(a0+a1+a2)fj+(1+a1h+2a2h)f′j+(a1h22!+a2(2h)22!)f″j+(a1h33!+a2(2h)33!)f‴j+⋯(∗)
우리는 이 식의 우변에서 order가 maximum으로 만들게 하고 싶기 때문에
a0+a1+a2=0
1+a1h+2a2h=0
a1h22!+a2(2h)22!=0
으로 설정하겠습니다. 이 세 개의 식을 연립방정식으로 풀면 위 식을 만족하는 a0,a1,a2를 구할 수 있습니다.
식을 세 개로 잡은 이유는 위 식에서 미지수가 3개이기 때문에 최대 3개의 식을 사용할 수 있기 때문입니다.
이렇게 하면 (∗)식을 다음과 같이 만들 수 있습니다.
f′j+a0fj+a1fj+1+a2fj+2=(a1h33!+a2(2h)33!)f‴j+⋯
참고로 위 연립방정식을 풀면 a0=32h,a1=−2h,a2=12h가 나옵니다.
a0,a1,a2를 알기 때문에 (a1h33!+a2(2h)33!)≠0인 것도 알 수 있습니다.
f′j=−a0fj−a1fj+1−a2fj+2+θ(h2)=−3fj+4fj+1−fj+22h+θ(h2)
즉 f′j를 numerical differentiation으로 세 개의 forward항을 썼을 때 maximum order of accuracy는 2입니다.
따라서 이 방법은 2nd order forward finite differentiation for f′j
이와 같은 방법으로 다양한 scheme의 differentiation을 진행할 수 있습니다. (여기서 scheme은 order와 방향이 다른 finite differentiation을 말합니다.)
왜 다양한 scheme이 필요할까요?
error term의 characteristics이 달라서 problem에 따라 적절한 방법을 사용합니다.
또한 항을 늘릴수록 order가 커지니까 좋아보일 수 있지만 항을 늘릴 때 문제가 발생할 수도 있습니다.

2nd order central scheme을 사용할 때는 나의 위치가 j=1일 때 j-1과 j+1을 사용하므로 boundary condition을 필요로 합니다.
4th order로 만들기 위해서는 j-2, j-1, j, j+1, j+2 까지 현재 위치를 중심으로 양 옆에 2개의 포인트가 필요합니다. 그러나 이때는 j=0, j=1에서 값을 구할 수 없는 neigborhood가 존재한다는 문제가 있기 때문에 위치가 최소 j=2가 되어야하며, 또 5개의 element로 계산을 해야하기 때문에 computational cost가 늘어난다는 문제가 있습니다.
2. Pade scheme
이 문제를 해결하기 위해 Pade approximation을 사용할 수 있습니다.
계산비용도 적고, 현재 위치를 기준으로 양 옆에 있는 neigborhood만 사용합니다.
neigborhood의 derivative를 사용함으로써 효율을 높이고, order도 줄일 수 있습니다.
fj+1,fj−1,fj,f′j+1,f′j−1를 사용해서 f′j를 구하는 것이 목표입니다.
f′j+b1f′j+1+b−1f′j−1+a1fj+1+a0fj+a−1fj−1=θ

다음 그림에서 미지수는 5개(a0,a1,a−1,b1,b−1)이므로 두 번째 열부터 여섯 번째 열까지 모두 총 합이 0이 되도록 설정함으로써 order를 4로 만들 수 있습니다.
a0=0,a1=−−34h,a−1=34h,b1=14,b−1=14
위에서 구한 것이 4th order Pade scheme입니다.
General procedure for obtaining f_{j}f_{j}
위에서 구한 Pade scheme을 이용해서 f 전체의 derivatives를 구하려고 합니다.
f′j−1+4f′j+f′j+1=−3h(fj−1−fj+1)+θ(h4)
{j=1f′0+4f′1+f′2=−3h(f0−f2)j=2f′1+4f′2+f′3=−3h(f1−f3)⋮j=n−1f′n−2+4f′n−1+f′n=−3h(fn−2−fn)
(4101410141⋱0)(f′1f′2⋮f′n−1)=−3h(RHS1−f′0RHS2⋮RHSn−1−f′n)
TDMA는 계산하는데 θ(n1)의 operation cost가 든다. 즉, 전체 포인트에서 함수 미분값을 구하는 데 계산 cost가 매우 적게 듭니다.
함수의 미분값을 사용해서 finite differentiation을 시도했을 뿐인데 계산cost가 적으면서도 order of accuracy가 증가하는 결과를 얻을 수 있었습니다.
그런데 이 방법을 쓸 때는 f′0,f′n−1을 알아야 한다. 이 경우에는 f′0의 order of accuracy가 third order보다는 높아야 합니다. 따라서 맨 끝의 두 미분 값을 구할 때는 항을 4개 잡아서 finite 방법으로 구할 수 있습니다.
f′0라면 j=0, 1, 2, 3을 사용하는 forward 방식이고,
f′n−1하면 j=n, n-1, n-2, n-3을 사용하는 backward 방식입니다.
finite deferentiation은 여기까지하고 다음에는 error의 특성을 modified wave number와 연결지어서 정리하겠습니다.
'수치해석 Numerical Analysis' 카테고리의 다른 글
[수치해석] Numerical integration (1) - Mid point rule, Trapezoidal rule (0) | 2021.03.28 |
---|---|
[수치해석] Error characteristics/Modified wave number (0) | 2021.03.27 |
[수치해석] Numerical differentiation (1) (0) | 2021.03.19 |
[수치해석] interpolation (2) - Spline interpolation (0) | 2021.03.12 |
[수치해석] Interpolation (1) - Polynomial interpolation (0) | 2021.03.12 |