내적은 공간에 기하를 부여한다
길이가 뭔지, 각도가 뭔지, 직각이 뭔지. 너무 당연해서 따로 정의가 필요 없어 보이죠. 그런데 벡터공간에선 이 셋이 거저 주어지는 게 아니에요. 단 하나의 장치, 내적 <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, 곧 직교가 돼요. 서로 다른 주파수의 사인파는 함수 공간에서 서로 직각인 거예요. 신호를 주파수별로 쪼개는 푸리에 변환이 바로 이 직교성 위에 서 있어요.