컴퓨터공학/수치해석

[수치해석] Ch4_2. Truncation Errors and the Tayor Series

NIMHO 2022. 10. 14. 00:32
728x90

복습하기 위해 학부 수업 내용을 필기한 내용입니다.
이해를 제대로 하지 못하고 정리한 경우 틀린 내용이 있을 수 있습니다.
그러한 부분에 대해서는 알려주시면 정말 감사하겠습니다.

Taylor Series

도함수 평균값 정리는 함수 f(x)와 그 첫 번째 도함수가 xi에서 xi+1까지의 구간에서 연속된다면,

f(xi)와 f(xi+1)를 연결하는 선과 평행한 f'(ξ)로 지정된 기울기를 갖는 함수 위에 적어도 하나의 점이 존재한다.

도함수 근사치의 오차는 단계 크기에 비례해야 한다.
단계 크기를 절반으로 줄이면 도함수의 오차를 절반으로 줄일 수 있을 것이다.

 

차이가 줄어들수록 차이가 줄어들 것이다. 
또한 충분히 작은 h 값에서 오차는 h^2에 비례해야 한다. 
즉, 오차가 절반으로 줄어들면 오차는 4분의 1로 나누어진다.

first forward difference
first backward difference
centered difference

truncation error는 h의 순서였던 forward 및 backward 근사치와 대조적으로 h^2의 순서이다. 
결과적으로, 테일러급수 분석은 centered difference가 도함수를 더 정확하게 표현한다는 실용적인 정보를 산출한다.

 

 

두 단계 크기 모두 centered difference 근사가 forward 또는 backward differences보다 더 정확하다.

Taylor 시리즈 분석에 의하면 스텝 크기를 절반으로 줄이면 forward, backward differences의 오차가 절반으로 줄어들고

centered difference의 오차가 4분의 1로 줄어든다.

 

first-order approximation가 아닌 second-order approximation에서도 똑같다.

forward와 backward는 O(h)에 영향을, centered는 O(h^2)에 영향을 받는다.

 

총 수치 오류는 truncation 오류와 round-off 오류의 합계이다.
일반적으로 round-off 오류를 최소화하는 유일한 방법은 컴퓨터의 중요한 숫자 수를 늘리는 것이다.
또한, round-off 오차가 subtractive cancellation 또는 분석에서 계산 수의 증가로 인해 증가할 것이라는 점에 주목했다.

subtractive cancellation이란? (뺄셈의 무효화)
0.7621 * 10^3 - 0.7620 * 10^3 = 0.0001 * 10^3 = 0.1 * 10^6
원래는 0.1*** 이런 숫자가 되어야 하는데, 비슷한 두 개의 값을 빼면서 이런 문제가 발생한다.
이것을 뺄셈의 무효화라고 한다.

 

반면에, 아래 예는 단계 크기를 줄임으로써 truncation 오차를 줄일 수 있음을 입증했다. 
스텝 크기가 감소하면 subtractive cancellation 또는 계산의 증가로 이어질 수 있으므로 round-off 오류가 증가함에 따라 truncation 오류가 감소한다.

전체 오류의 한 성분을 줄이는 전략은 다른 성분을 증가시킨다는 딜레마에 직면하게 된다.

 

f(x) = -0.1 * x^4 - 0.15 * x^3 - 0.5 * x^2 - 0.25 * x + 1.2

step size를 1부터 시작해 10으로 나누면서 여러 단계를 진행하였다.

단계를 작게 할수록 truncation 오류는 줄어들지만 round-off 오류는 늘어나서

true error는 어느 순간에 다시 증가하는 것을 볼 수 있다. 

대부분 수치 방법과 관련된 정확한 오류를 알지 못한다.

모든 문제에 대해 수치 오류를 평가하는 체계적이고 일반적인 접근 방식은 없다.

일관된 법(식)이 없기 때문에, 문제에 따라서 다 다르게 적용해야 한다.

또한 계산의 오류에 대한 추정치를 어느 정도 수용해야 한다.

 

일관된 방식은 없지만 아주 비슷한 숫자를 빼는 것은 최대한 피해야 한다.


때때로 subtractive cancellation을 피하기 위해 문제를 재 정렬하거나 재 포맷할 수 있다. 
숫자를 더하고 뺄 때는 숫자를 정렬하고 가장 작은 숫자로 먼저 작업하는 것이 가장 좋다. 

728x90