나뭇잎 교과서

정규직교기저

기저 벡터들이 서로 수직이고 크기가 모두 1이면 좌표를 구하기가 아주 쉬워집니다. 연립방정식을 풀 필요 없이 내적 한 번이면 됩니다. 이런 기저를 정규직교기저라고 하고, 아무 기저에서나 정사영을 빼 나가며 정규직교기저를 만드는 방법이 그람-슈미트 과정입니다. 이 절에서는 3차원에서 이 과정을 한 단계씩 실행하고, 두 기저에서 좌표를 구하는 수고를 비교합니다.

본문

정규직교기저

본문

기저 \((2, 1)\), \((1, 2)\)로 점의 좌표를 구하려면 매번 연립방정식을 풀어야 한다. 그런데 서로 수직이고 길이가 1인 기저를 쓰면, 좌표가 점과 기저 벡터의 내적 한 번으로 바로 나온다. 예를 들어 \(\vec u_1 = (0.6, 0.8)\), \(\vec u_2 = (0.8, -0.6)\)을 기저로 쓰면 점 \((2, 1)\)의 좌표는 \((2, 1)\cdot\vec u_1 = 2\)와 \((2, 1)\cdot\vec u_2 = 1\)이다. 비스듬한 벡터 \((3, 4)\)와 \((1, 0)\)에서 이런 직각 자를 만들어 낼 수 있을까?

단계계산결과 v₁ 정규화(3, 4) / 5u₁ = (0.6, 0.8) v₂에서 u₁ 성분 빼기(1, 0) − 0.6 u₁(0.64, −0.48) 정규화(0.64, −0.48) / 0.8u₂ = (0.8, −0.6) u₁ · u₂ = 0.48 − 0.48 = 0, 두 벡터 모두 길이 1
그림 1. 둘째 벡터에서 첫째 방향의 그림자를 빼면 첫째 벡터에 수직인 부분만 남는다.
먼저 알아야 할 것벡터의 내적과 수직 조건, 기저(기저), 벡터의 정사영(벡터의 정사영).

1.8.1내적 한 번으로 좌표를

기저 벡터들이 서로 수직이고 길이가 모두 1이면 정규직교기저라 한다. \(\vec v = c_1\vec u_1 + c_2\vec u_2\)의 양변에 \(\vec u_1\)을 내적하면, \(\vec u_1\cdot\vec u_1 = 1\), \(\vec u_2\cdot\vec u_1 = 0\)이므로 \(\vec v\cdot\vec u_1 = c_1\)만 남는다. 그래서 각 좌표는 연립방정식을 풀 필요 없이 그 기저 벡터와의 내적 한 번으로 구해진다. 표준기저 \((1, 0)\), \((0, 1)\)이 편리한 것도 정규직교기저이기 때문이고, 돌린 좌표축처럼 다른 정규직교기저를 써도 같은 편리함을 누릴 수 있다.

정리 1.8.1 그람–슈미트 과정

일차독립인 \(\vec v_1, \vec v_2, \ldots\)에서 \(\vec u_1 = \vec v_1/|\vec v_1|\)로 두고, \(\vec w_2 = \vec v_2 - (\vec v_2\cdot\vec u_1)\vec u_1\), \(\vec u_2 = \vec w_2/|\vec w_2|\)처럼 각 벡터에서 앞의 정규직교 벡터들 위로의 정사영을 빼고 길이를 1로 맞춘다. 이렇게 얻은 \(\vec u_1, \vec u_2, \ldots\)는 같은 공간을 생성하는 정규직교기저이다.

둘째 벡터에서 첫째 방향의 정사영을 빼면 남는 부분은 첫째 벡터에 수직이다. 정사영의 오차가 늘 수직이었던 것과 같은 이치이다. 셋째 벡터가 있으면 앞의 두 방향으로의 정사영을 모두 빼고 남은 부분을 정규화한다. 그래서 비스듬한 기저에서 출발해도 같은 공간을 생성하는 직각 자를 차례로 만들 수 있다. 처음 벡터들이 일차종속이면 어느 단계에서 남는 부분이 영벡터가 되어 과정이 멈추므로, 이 과정은 일차독립을 판정하는 데도 쓰인다.1

1.8.2길이와 각이 그대로이다

정규직교기저로 바꾼 좌표에서는 길이와 내적이 표준좌표에서와 똑같이 계산된다. \(\vec v\)의 좌표가 \((c_1, c_2)\)이면 \(|\vec v|^2 = c_1^2 + c_2^2\)이다. 비스듬한 기저의 좌표로는 이렇게 계산할 수 없는데, 기저 벡터끼리의 내적이 0이 아니어서 교차하는 항이 남기 때문이다. 그래서 정규직교기저는 좌표축을 돌리거나 뒤집은 것과 같고, 도형의 모양과 크기를 바꾸지 않는다.

기저(2, 1)의 좌표 구하기좌표 (2, 1), (1, 2)연립방정식 2a + b = 2, a + 2b = 1(1, 0) u₁, u₂ (정규직교)내적 (2,1)·u₁, (2,1)·u₂(2, 1) 길이 확인2² + 1² = 5 = |(2, 1)|²
그림 2. 정규직교기저에서는 좌표를 내적으로 바로 구하고, 좌표로 계산한 길이도 그대로이다.

1.8.3예제 풀이

예제 1.8.2

\(\vec v_1 = (3, 4)\), \(\vec v_2 = (1, 0)\)에 그람–슈미트 과정을 써서 정규직교기저를 만들고, 점 \((2, 1)\)과 \((-1, 7)\)의 좌표를 구하여라. 좌표로 구한 길이가 원래 길이와 같은지 확인하여라.

\(\vec u_1 = (3, 4)/5 = (0.6, 0.8)\)이다. \(\vec v_2\cdot\vec u_1 = 0.6\)이므로 \(\vec w_2 = (1, 0) - 0.6(0.6, 0.8) = (0.64, -0.48)\)이고, 길이 \(\sqrt{0.4096 + 0.2304} = 0.8\)로 나누면 \(\vec u_2 = (0.8, -0.6)\)이다. \(\vec u_1\cdot\vec u_2 = 0.48 - 0.48 = 0\)이다.

\((2, 1)\)의 좌표는 \((2\times0.6 + 1\times0.8,\ 2\times0.8 - 1\times0.6) = (2, 1)\)이고, \((-1, 7)\)의 좌표는 \((-0.6 + 5.6,\ -0.8 - 4.2) = (5, -5)\)이다. 길이를 확인하면 \(|(-1, 7)|^2 = 50\)이고 좌표로는 \(5^2 + (-5)^2 = 50\)으로 같다. 즉 정규직교기저에서는 좌표를 내적 한 번으로 구하고 길이와 각이 그대로 보존되며, 그람–슈미트 과정은 앞 방향으로의 정사영을 빼고 정규화해 비스듬한 기저를 정규직교기저로 바꾼다.

아래 탐구 카드에서 비스듬한 두 벡터로 그람–슈미트 과정을 따라가 직각 자를 만들고, 정규직교기저의 좌표가 내적 한 번으로 나오는지 확인해 보자.

  1. 이 과정은 덴마크의 그람이 1883년, 독일의 슈미트가 1907년에 발표했다. 컴퓨터로 계산할 때는 반올림 오차가 쌓여 수직이 조금씩 무너지므로, 앞 벡터의 성분을 하나씩 다시 빼는 수정된 그람–슈미트 과정을 주로 쓴다.
마무리

서로 수직이고 길이가 1인 정규직교기저에서는 각 좌표가 그 기저 벡터와의 내적 한 번으로 구해지고, 좌표로 계산한 길이와 각이 그대로 보존된다. 그람–슈미트 과정은 각 벡터에서 앞의 정규직교 벡터들 위로의 정사영을 빼고 길이를 1로 맞추어, 일차독립인 벡터들로부터 정규직교기저를 만든다. 처음 질문의 \((3, 4)\)와 \((1, 0)\)에서는 정규직교기저 \((0.6, 0.8)\), \((0.8, -0.6)\)이 나오고, 이 기저로 \((2, 1)\)의 좌표는 내적만으로 \((2, 1)\)이다.

탐구 1

비스듬한 두 벡터로 직각 자를 만들 수 있을까?

그람-슈미트 과정 · 조작

점선 원은 반지름 1인 원이다. 끝점은 0.5 간격으로 맞춰진다.

  1. 질문기저가 서로 수직이고 길이가 1이면 좌표를 구할 때 연립방정식이 필요 없다(다음 카드). 그런데 처음 주어진 기저는 대개 비스듬하다. 생성하는 공간은 그대로 두고 기저만 반듯하게 고칠 수 있을까?
  2. 복원\(\vec{v}\)의 \(\vec{u}\) 방향 정사영을 빼면 \(\vec{u}\)와 수직인 부분이 남는다. 단위벡터 \(\vec{u}\)이면 정사영은 \((\vec{v}\cdot\vec{u})\vec{u}\)이다.
  3. 설명서로 수직이고 길이가 1인 벡터로 이루어진 기저를 정규직교기저라고 한다. 그람-슈미트 과정은 일차독립인 \(\vec{v}_1, \vec{v}_2, \ldots\)에서 차례로 만든다. ① \(\vec{u}_1 = \vec{v}_1 / |\vec{v}_1|\). ② \(\vec{w}_2 = \vec{v}_2 - (\vec{v}_2\cdot\vec{u}_1)\vec{u}_1\)(앞 방향의 그림자 빼기). ③ \(\vec{u}_2 = \vec{w}_2 / |\vec{w}_2|\). 셋째부터는 앞의 모든 \(\vec{u}\) 방향 그림자를 빼고 길이를 1로 맞춘다. 매 단계에서 생성하는 공간은 바뀌지 않는다.
  4. 연결컴퓨터는 이 과정을 행렬 분해(QR 분해)로 바꾸어 최소제곱 문제를 안정적으로 푼다. 3D 그래픽에서 카메라의 앞·위·옆 방향을 서로 수직으로 다시 맞출 때도 쓴다.
  5. 적용단계 버튼을 차례로 누르며 각 단계에서 무엇이 생기는지 보자. 그다음 \(\vec{v}_1\)을 움직이면 \(\vec{u}_1\), \(\vec{u}_2\)가 어떻게 바뀌는가? 순서를 바꾸어(\(\vec{v}_2\)부터) 시작하면 결과가 같을까?
  6. 판단\(\vec{v}_1\)과 \(\vec{v}_2\)가 평행하면 ②에서 \(\vec{w}_2 = \vec{0}\)이 되어 ③에서 0으로 나누게 된다. 그람-슈미트 과정은 일차독립인 벡터에만 쓸 수 있고, 거의 평행하면 계산 오차가 커진다.

확인조건이 달라지면

\(\vec{v}_1 = (3, 4)\), \(\vec{v}_2 = (1, 0)\)에 그람-슈미트 과정을 쓰면 \(\vec{u}_2\)는?

탐구 2

정규직교기저의 좌표는 왜 내적 한 번이면 될까?

정규직교기저와 좌표 · 만들기

—

  1. 질문소리나 사진은 수를 늘어놓은 긴 벡터이다. 이것을 "평평한 정도, 왼쪽-오른쪽 차이, …" 같은 기본 모양의 합으로 나누면 압축이 쉬워진다. 기본 모양마다 얼마씩 섞였는지 가장 빨리 알아내는 방법은 무엇일까?
  2. 복원보통의 기저에서는 좌표를 구하려고 연립방정식을 풀어야 했다(기저와 좌표 카드). 그람-슈미트 과정으로 기저를 정규직교기저로 바꿀 수 있었다.
  3. 설명\(\{\vec{u}_1, \ldots, \vec{u}_n\}\)이 정규직교기저이고 \(\vec{x} = c_1\vec{u}_1 + \cdots + c_n\vec{u}_n\)이면, 양변에 \(\vec{u}_k\)를 내적할 때 \(\vec{u}_k\cdot\vec{u}_j\)가 \(j \ne k\)이면 0, \(j = k\)이면 1이므로 \(c_k = \vec{x}\cdot\vec{u}_k\)만 남는다. 좌표 하나에 내적 한 번이다. 또 \(|\vec{x}|^2 = c_1^2 + \cdots + c_n^2\)이 성립한다. 이 카드의 기저는 성분이 \(\pm\frac{1}{2}\)인 네 벡터 \(\vec{u}_1 = \frac{1}{2}(1,1,1,1)\), \(\vec{u}_2 = \frac{1}{2}(1,1,-1,-1)\), \(\vec{u}_3 = \frac{1}{2}(1,-1,1,-1)\), \(\vec{u}_4 = \frac{1}{2}(1,-1,-1,1)\)이다.
  4. 연결JPEG 사진과 MP3 음악은 이와 같은 정규직교기저(코사인 모양)로 좌표를 구한 뒤, 작은 좌표를 버려 용량을 줄인다. \(|\vec{x}|^2 = \sum c_k^2\)이므로 작은 \(c_k\)를 버려도 잃는 양이 \(c_k^2\)만큼으로 작다.
  5. 적용먼저 슬라이더로 목표 신호를 만들어 보자. 그다음 \(c_1 = \vec{x}\cdot\vec{u}_1\)을 손으로 계산해 맞는지 확인해 보자. "가장 작은 계수 버리기"를 누르면 신호가 얼마나 달라지는가?
  6. 판단\(c_k = \vec{x}\cdot\vec{u}_k\)는 기저가 정규직교일 때만 맞다. 수직이기만 하고 길이가 1이 아니면 \(c_k = \dfrac{\vec{x}\cdot\vec{u}_k}{\vec{u}_k\cdot\vec{u}_k}\)로 나누어야 하고, 수직이 아니면 연립방정식을 풀어야 한다.

확인조건이 달라지면

정규직교기저 \(\vec{u}_1 = \frac{1}{\sqrt{2}}(1, 1)\), \(\vec{u}_2 = \frac{1}{\sqrt{2}}(1, -1)\)에 대한 \(\vec{x} = (3, 1)\)의 좌표는?

AI 출제 문항연습문제 풀어보기11문항
Esc

↑↓ 고르기Enter 열기