본문 바로가기

Library/Numerical Analysis

Integral and Simpson's Rule

어떤 함수가 주어졌고, 이 함수의 특정 구간에서의 정적분 값을 알고 싶다고 하자. 만약 함수의 방정식을 알고 있다면 함수의 적분 근사식을 얻어내어 그것을 계산하면 되지만, 여기서 적분을 구하고자 할 때 주어진 것은 이산적인 함수값 뿐이다. 따라서, 함수값을 가지고 이 넓이를 계산한다는 것은, 결국 이 함수값을 지나는 적절한 곡선의 방정식을 구해서 두 함수값 사이의 넓이를 구하는 것이라 할 수 있다.

이 넓이의 정확성은, 주어진 함수값을 지나는 선이 실제 함수와 얼마나 적절한지 여부에 달려 있다. 가장 단순하게, 이 넓이를 이루는 도형이 매우 작은 직사각형이라 가정할 수 있다. 그리고, 넓이는 증분 h와 함수값 f를 곱하고, 이들을 더해서 구할 수 있다. 이 방법을 가장 단순한, 1차 근사식이라 한다.

이것보다 조금 나은 방법으로, 만약 근접한 두 함수값을 알 수 있다면 이들을 연결한 직선으로부터 이들의 넓이는 사다리꼴이라 생각할 수 있으며, 인접한 두 함수값의 적분값은 이 넓이를 구하는 것으로 얻을 수 있다. 이 방법을 2차 근사식이라 하자. 차수가 결코 다항식의 차수를 의미하는 것이 아니다.

이것을 식으로 표현하면 다음과 같다.


넓이 A(i) = h / 2 * (f(i) + f(i + 1))이라 정의하면,

전체 넓이 A = h / 2 * {(f(0) + f(1)) + (f(1) + f(2)) + (f(2) + f(3)) + .... + (f(n - 1) + f(n))}

즉, h * (f(0) / 2 + SIGMA(from 1 to n -1)(f(i)) + f(n) / 2)


하지만, 인접한 두 함수값을 지나는 직선은 결코 원래 주어진 함수가 직선이 아닌 이상 오차를 무시할 수 없으며, 이 직선은 사실 보다 높은 차수의 식으로 근사하고, 함수 사이의 사이값을 매우 작게 유지한다면 이것은 좀 더 실제 적분값에 가까울 것이다. 이 방법이 3차, 4차 이상의 근사식을 의미하는데, 원하는 정밀도에 따라 선택한다.

만약 두 함수값을 지나는 직선이 아닌 2차식, 3차식 이상의 함수를 구하고자 한다면 그만큼 많은 계산이 필요하지만, 분명히 직선보다 차수가 높은 함수의 방정식이 보다 정확한 넓이를 계산할 수 있을 것이다.

두 함수값을 연결하는 함수의 방정식으로, 2차 이상의 함수로 넓이를 구한다고 해보자. 함수값을 계산하기 위해서는 이 2차식을 구성하는 계수를 알아야 한다. 그러나, 실제로는 계수를 구하지 않고도 애초에 주어진 이산적인 함수값만 가지고도 두 함수값 사이의 넓이를 구할 수 있다.

두 함수값을 연결하는 함수의 방정식을 2차식으로 사용하기로 하고, 함수 f(x) = ax^2 + bx + c가 주어졌을 때, x + h와 x - h 사이의 정적분을 계산한다면, 다음과 같다.

{a / 3 * (x + h)^3 + b / 2 * (x + h)^2 + c * (x + h)} - {a / 3 * (x - h)^3 + b / 2 * (x - h)^2 + c * (x - h)}

이 식을 정리하면,

h / 3 * {a(x - h)^2 + b(x - h) + c + 4ax^2 +4bx + 4c + (a + h)^2 + b(x + h) + c},

즉, h / 3 * (f(i) + 4f(i + 1) + f(i + 2))이며, 2차식의 계수를 구할 필요없이, 주어진 함수값만 가지고도 두 이산적인 함수값 사이의 넓이를 구할 수 있다. 마찬가지로, 3차식으로 두 함수값 사이의 넓이를 구하고자 한다면 동일한 방법으로 전개하여 원래 주어진 함수값으로 표시할 수 있는 형태의 식을 얻어서 정리하면 된다. 이 방법을 Simpson's Rule이라 한다.

함수값만 주어졌을 때, Simpson's Rule은 정적분을 구할 수 있는 강력하고 단순한, 효과적인 방법이다.