내적은 공간에 기하를 부여한다
길이가 무엇인지, 각도가 무엇인지, 직각이 무엇인지는 너무 당연해서 따로 정의가 필요 없어 보인다. 그런데 벡터공간에서는 이 셋이 거저 주어지는 게 아니에요. 단 하나의 장치, 내적 <u,v> 가 이 셋을 한꺼번에 만들어낸다. 길이는 자기 자신과의 내적의 제곱근이고, 각도는 두 벡터의 내적을 길이로 나눈 값이며, 직각은 내적이 0인 자리다. 앞 강에서 본 점곱은 이 내적의 한 가지 예시일 뿐이에요. 내적을 바꾸면, 예를 들어 축마다 가중치를 다르게 주면 같은 벡터들 위에서 기하 자체가 휜다. 더 놀라운 건 함수도 벡터라는 점이다. 두 함수의 내적은 곱을 적분한 값이고, 바로 여기서 푸리에 변환과 커널이 시작돼요.
초록 벡터 u는 가로로 고정해 두고 파란 벡터 v를 끌면, 화면 아래에 네 가지 숫자가 같이 따라온다. 내적 <u,v>, u의 길이, v의 길이, 그리고 둘 사이 각도다. v를 u와 같은 쪽으로 길게 뻗으면 내적이 커지고, 직각으로 세우면 내적이 0이 되고, 반대로 돌리면 음수가 돼요. 핵심은 내적 하나가 길이와 각도를 한 상자에 담고 있다는 점이다. 길이도 각도도 직각인지 아닌지도 전부 이 내적이라는 단 하나의 양에서 풀려 나온다. 다음 블록부터 이 셋을 하나씩 뜯어본다.
먼저 길이다. 한 벡터를 자기 자신과 내적하면 <v,v> 가 나오는데, 이게 바로 길이의 제곱이에요. 그러니 길이 ||v|| 는 <v,v> 의 제곱근이다. v를 끌어 보면 화살표 끝까지의 반지름이 곧 그 길이이고, 점선으로 그려진 단위원은 길이가 정확히 1인 벡터들의 모임이다. v를 단위원 위에 올리면 <v,v> 가 딱 1이 돼요. 길이를 따로 정의하지 않아도 내적만 있으면 거기서 길이가 저절로 나온다. 자기 자신과의 내적이 곧 그 벡터의 길이의 제곱, 이 한 문장이 모든 노름의 출발점이에요.
이제 내적을 바꿔 본다. 가중 내적은 <u,v>w = w1·u1·v1 + w2·u2·v2 로, 두 축에 서로 다른 무게를 준다. 두 슬라이더 w1, w2 를 움직이면 길이가 1인 벡터들의 모임, 곧 단위공이 더는 원이 아니라 타원이 돼요. 반축 길이는 1/sqrt(w1) 과 1/sqrt(w2) 라서 어떤 축에 무게를 키울수록 그 방향은 짧아진다. 그 방향으로는 거리가 더 비싸게 매겨지기 때문이다. 벡터는 그대로인데 무엇을 길다고 부를지 그 기준이 바뀌면서 기하 전체가 휘어요. 키와 몸무게처럼 측정 단위가 축마다 다른 데이터를 다룰 때, 우리는 사실 늘 가중 내적을 쓰고 있다.
직각도 결국 내적으로 정의된다. 두 벡터가 직교한다는 건 그저 <u,v>w = 0 이라는 뜻이에요. 여기서는 한 축에 더 무겁게 가중치를 고정해 두고 v의 각도만 슬라이더로 돌린다. 가중 내적이 0을 지나는 순간 v가 환하게 빛난다. 그런데 그 순간 화면 위에서 u와 v는 90도로 보이지 않아요. 무게가 공간을 휘어 놓아서 가중치 세계의 직각이 우리 눈의 직각과 어긋나는 것이다. 직각이란 눈에 보이는 90도가 아니라 내적이 0이라는 사실이다. 어떤 내적을 쓰느냐가 무엇이 직교인지를 정해요.
마지막으로 가장 큰 도약이다. 함수도 벡터라, 두 함수의 내적은 구간 위에서 둘을 곱해 적분한 값 <f,g> = ∫ f·g 예요. 여기서 f = sin(x) 로 고정하고 슬라이더로 g = sin(kx) 의 정수 주파수 k를 바꾼다. 곱 f·g 의 넓이가 음영으로 칠해지는데, k가 1일 때는 양의 넓이가 또렷이 남는다. 그런데 k가 1이 아닌 정수가 되면 양수 부분과 음수 부분이 정확히 상쇄돼서 적분이 0, 곧 직교가 돼요. 서로 다른 주파수의 사인파는 함수 공간에서 서로 직각인 것이다. 신호를 주파수별로 쪼개는 푸리에 변환이 바로 이 직교성 위에 서 있다.