자, 이제 본격적으로 삼각함수를 가지고 놀아 보자.
[ Intro : Harmonics ]
위 삼각함수들의 공통점은 무엇일까? 바로 2π를 주기로 같은 값을 계속 가진다는 것이다. 좌표평면에서 이 함수들을 동시에 그려보면 아래와 같은 그림이 된다. 마치 현악기의 현이 떨릴 때처럼, 똑같은 주기를 가지는 여러 삼각함수들의 배열을 볼 수 있다.
실제로 바이올린이나 기타와 같은 현악기에서 위 그림처럼 현을 뚱기면 조화로운 음들을 들을 수 있어서, 음악에서는 이것을Harmonics라고 한다. 음악 이외에도 우리는 이런 함수들을 가지고 놀랍도록 많은 일을 할 수 있다.
이런 함수들을 이용해서 다른 모든 함수들을 나타낼 수 있다면 어떨까?
[ 코사인 함수들의 합으로 나타내기 ]
앞에서는 현악기와 비슷한 느낌을 내기 위해 사인함수를 이용했지만, 실제로는 기술적인 이점으로 인해 코사인 함수가 더 자주 사용된다. 자꾸 귀찮게 스크롤시켜서 미안하지만, 몇 가지 코사인함수의 Harmonics도 그래프로 확인해보자.
0~5의 n에 대해, 의 그래프를 그려 보았다. 더 큰 n에 대해서도 어떤 그래프가 그려질 지 쉽게 예상할 수 있을 것이다.
만약 형태의 함수들을 합해서 다른 함수를 만든다면, 이들도 코사인함수들의 법칙을 그대로 갖고 있을 것이다. 즉 y축에 대하여 대칭이다. 형태의 함수는 모두 2π를 주기로 같은 값이 반복될 것이다.
들의 합으로 나타낸 함수 f(x)가 있는데, [0, π]에서만 그 값을 알았다고 하자. 이미 f(x)가 y축에 대해 대칭인 것을 알고 있으므로, [-π, 0]에서도 그 값을 알 수 있다. f(x)의 값이 2π를 주기로 반복된다는 것을 알고, [-π, π]에서 f(x)의 값을 알고 있으므로, 모든 x에 대해서 f(x)의 값을 알 수 있다. 다시 말하면, 들의 합으로 나타낸 함수는 [0, π]에서만 그 값을 알면 나머지 모든 구간에 대한 f(x)의 값도 알 수 있다는 것이다. 이를 그림으로 나타내면 아래와 같다.
[0, π] 에서만 값을 알고 있는 함수
y축으로 대칭시킨 모습
주기가 2π임을 감안하여 모든 x에 대해서 그래프를 완성한 모습
자, 의 합으로 나타낸 함수는 [0, π] 구간에서의 정보만 있으면 함수 전체를 알 수 있다는 것을 확인했다. 그렇다면 이건 어떨까?
[0, π]에서 정의된 함수는 들의 합으로 나타낼 수 있다!
그렇다. 여러분이 아무리 이상한 함수를 생각하더라도(불연속점이 유한개이면), [0, π] 구간에만 있으면, 이 함수는 의 합으로 나타낼 수 있다. 첫 번째 예를 보자.
이 식이 한번에 와 닿지 않으면, 곰곰이 생각해 보자.
'복잡한 식이 나와버렸다. 우선 여러 항으로 이루어져 있는 것이 보인다. 게다가 '…'이 붙어 있다. 아마 무한히 많은 항들로 이루어져 있나 보다. 각 항별로 나누어서 생각해 보면, 처음에 나온 을 제외한 다른 모두 cos함수와 함께 있다. 음, 코사인 함수 안에 들어가 있는 숫자는 x, 3x, 5x, 7x들, 전부 앞 페이지에서 본 함수들이군. 코사인 왼쪽에 곱해져 있는 숫자들은 뭐지? +와 –가 반복되면서 점점 작아지고 있는데 …'
http://talent.kaist.ac.kr/bbs/data/board_photo/cosine.gif
항이 많아질수록 그래프가 어떤 값에 점점 가까워진다는 것을 느낄 수 있다. 사실 위에서 저렇게 복잡하게 정의한 식은 아래와 같이 간단한 함수로 '수렴'한다.
이 함수를 앞에서와 마찬가지의 방법으로 모든 x에 대해 정의되도록 확장한 그래프를 그리면 다음과 같을 것이다. 바로 그 '수렴'하던 그래프이다.
불연속적인 직선들의 그래프가 나왔다. 삼각함수들은 전부 연속적이고 구불구불하고 연속적인데, 무한히 많은 삼각함수들의 합이 수렴하는 그래프는 신기하게도 직선인데다가 불연속적이기까지 하다. 이것을 코사인 함수들로 이루어진 무한급수라는 뜻에서 "코사인 급수", 또는 처음 만든 사람의 이름을 붙여서 "푸리에 코사인 급수"라고 한다.
"[0, π]에서 정의된 어떤 함수"가 있었고, 그것을 "꼴의 함수들의 합"으로 나타냈다. cos함수에 곱해진 각 계수를 으로 나타내면, 지금까지 한 것은 아래의 두 가지 사이의 관계를 구한 것이었다.
즉, 지금까지 한 것은 바로 "함수 f"와 "무한수열 " 사이의 '대응'을 구한 것이었다.
-
f를 알면 들을 알 수 있다.
f를 바탕으로 계산할 수 있음 – 자세한 방법은 부록 참고 -
들을 알면 f도 알 수 있다.
cos함수들과 각각의 을 곱해서 더하면 함수의 값을 얻을 수 있다.
f와 은 이처럼 특별한 관계에 있다. 이들은 서로간에 언제든지 다른 쪽으로 변환할 수 있고, 둘 중의 하나만 주어져도 나머지 하나를 완전히 알 수 있는, 서로가 서로의 그림자와 같은 존재이다. 수학에서는 이러한 관계를 가진 한 쌍을 변환쌍(transform pair)라고 하고, 둘 중 하나를 바탕으로 다른 것을 알아내는 것을 변환(transform)이라고 한다.
이러한 '변환'의 개념은 주파수 영역에서의 이미지프로세싱의 핵심적인 역할을 한다. 다음 장에서는 좀더 정보반스러운 경우에 대해 알아 보자.
[ 연습문제 2 ]
ftp://ftp.peda.com/grafeq32.exe 에서 GrafEQ라는 프로그램의 체험판을 다운받을 수 있다. 이 프로그램은 주어진 방정식의 그래프를 신속정확하게 그려 준다.
문제 1~3에 대해, 위의 캡쳐에서처럼 처음 5개의 항을 입력해서 그래프를 그려 보자. 각각 어떤 함수의 코사인 급수인지 확인하고, 프로그램 화면을 캡쳐하여 제출하시오. 문제 2, 3을 풀 때는 문제 1에서처럼 Σ기호를 풀어서 각 항들을 구해야 한다.
(문제 1)
(문제 2)
(문제 3)
(문제 4) 문제 3에서 그린 그래프에서, x=0일 때 y의 값을 어림잡아 보자. 실제로 문제 3의 식에 x=0과 어림잡은 y의 값을 대입해서 다음을 증명하여라.
(문제 5) 문제 4에서 구한 식을 이용하여 각자 편한 언어로 π의 근사값을 구하는 프로그램을 만들어 보시오. 몬테 카를로 방법과 비교해서 이 방법의 장점은 무엇일까?
[목차] 이미지프로세싱 - 시작
[이전] 주파수 영역에서의 처리 - (2) 삼각함수 기초
[다음] 주파수 영역에서의 처리 - (4) 삼각함수의 합으로 나타내기 2