Gram-Schmidt 정규직교화 계산기

Gram-Schmidt 과정을 사용해 임의의 선형 독립 벡터 집합을 직교 기저 또는 정규직교 기저로 변환합니다.

아래에 벡터를 한 줄에 하나씩 입력하세요. 성분은 쉼표나 공백으로 구분할 수 있습니다. 계산기는 Gram-Schmidt 과정을 적용해 직교 기저와 정규직교 기저를 모두 생성합니다.

Gram-Schmidt 정규직교화 계산기
Gram-Schmidt 과정을 사용해 임의의 선형 독립 벡터 집합을 직교 기저 또는 정규직교 기저로 변환합니다.

Gram-Schmidt 계산기 소개

Gram-Schmidt 과정은 선형대수학에서 가장 중요한 알고리즘 중 하나입니다. 선형 독립인 벡터 집합이 주어지면, 같은 부분공간을 생성하면서 서로 직교하는 새로운 벡터 집합을 체계적으로 만들어 냅니다. 각 직교 벡터를 그 길이로 나눠 단위 벡터로 만들면 정규직교 기저가 됩니다. 정규직교 기저는 투영, 회전, 반사, 분해가 포함된 거의 모든 계산을 단순하게 해 주기 때문에 선형대수학의 기준으로 여겨집니다. 이 알고리즘은 귀납적으로 진행됩니다. 첫 번째 출력 벡터는 첫 번째 입력 벡터를 그대로 사용합니다. 두 번째 출력 벡터는 두 번째 입력 벡터에서 첫 번째 출력 벡터로의 투영을 뺀 값이며, 이렇게 하면 두 번째 출력은 첫 번째와 수직이 됩니다. 세 번째 출력은 세 번째 입력 벡터에서 앞의 두 출력 벡터로의 투영을 모두 제거한 값입니다. 일반적으로 k번째 출력 벡터는 k번째 입력 벡터에서 이전 모든 출력 벡터로의 투영 합을 뺀 것입니다. 벡터 v를 이미 직교화된 벡터 u에 투영하는 공식은 (v·u / u·u) × u이며, 여기서 ·는 내적을 뜻합니다. 이 과정에서 모든 투영을 뺀 결과가 영벡터가 되면, 해당 입력 벡터는 앞선 벡터들과 선형 종속이므로 단순히 버립니다. 계산기는 이를 자동으로 감지하고 입력 집합의 랭크, 즉 실제로 독립인 벡터의 수를 보고합니다. 실제 계산에서는 부동소수점 반올림 때문에 거의 0에 가까운 벡터를 잡아내기 위해 작은 수치 임계값도 사용합니다. 정규직교 기저는 각 직교 출력 벡터를 자신의 유클리드 노름(자기 자신과의 내적의 제곱근)으로 나누어 얻습니다. 이렇게 얻은 벡터들은 모두 길이가 정확히 1이고 서로 직각인 단위 벡터입니다. 이 정규직교 집합은 원래 입력이 생성하는 부분공간의 정규직교 프레임을 이룹니다. Gram-Schmidt 과정의 활용 분야는 거의 모든 정량 분야에 걸쳐 있습니다. 수치 선형대수학에서는 QR 분해의 기반이 되며, 최소제곱 문제 해결과 고유값 계산에 사용됩니다. 신호 처리에서는 직교 필터 뱅크를 구성하고 독립적인 신호 성분을 분리하는 데 쓰입니다. 양자역학에서는 양자 시스템의 상태 공간이 힐베르트 공간이며, 물리적 관측량은 고유벡터의 정규직교 기저에 해당합니다. 통계와 머신러닝에서는 주성분 분석(PCA)을 데이터의 최대 분산 방향에 정렬된 정규직교 기저를 찾는 과정으로 이해할 수 있습니다. 컴퓨터 그래픽스에서는 카메라나 객체 좌표계를 만들기 위해 서로 수직인 세 개의 단위 벡터가 필요하며, 이는 Gram-Schmidt로 자연스럽게 구할 수 있습니다. 이 계산기는 임의 차원의 벡터를 받아들이고, 선형 종속 입력도 자연스럽게 처리하며, 중간의 직교 벡터와 최종 정규직교 벡터를 나란히 보여 주어 변환 과정을 한눈에 확인할 수 있습니다.

Gram-Schmidt 예제

2차원, 3차원, 그리고 종속 벡터 집합에 대한 직교화 과정을 보여 주는 세 가지 예제입니다.

입력 벡터정규직교 기저메모
v1 = (1, 0), v2 = (1, 1)e1 = (1, 0), e2 = (0, 1)전형적인 2D 사례입니다. v2에서 v1에 대한 투영을 빼면 (0,1)이 되며, 이는 이미 단위 벡터입니다.
v1 = (1, 1, 0), v2 = (1, 0, 1), v3 = (0, 1, 1)e1 ≈ (0.707, 0.707, 0), e2 ≈ (0.408, −0.408, 0.816), e3 ≈ (−0.577, 0.577, 0.577)전형적인 3D 정규직교화입니다. 세 입력 벡터가 모두 독립이므로 ℝ³의 완전한 정규직교 기저가 됩니다.
v1 = (1, 2, 3), v2 = (2, 4, 6), v3 = (1, 0, 0)e1 ≈ (0.267, 0.535, 0.802), e2 ≈ (0.964, −0.148, −0.222)v2는 v1의 스칼라배(선형 종속)이므로 제외됩니다. 랭크는 3이 아니라 2입니다.
v1 = (3, 1), v2 = (2, 2)e1 ≈ (0.949, 0.316), e2 ≈ (−0.316, 0.949)정수가 아닌 성분을 가진 2D 예제입니다. 출력 벡터는 서로 수직인 단위 벡터입니다.

Gram-Schmidt 계산기 사용 방법

  1. 텍스트 영역에 벡터를 한 줄에 하나씩 입력하세요. 성분은 쉼표나 공백으로 구분합니다(예: '1, 2, 3' 또는 '1 2 3').
  2. 모든 벡터가 같은 개수의 성분을 가져야 합니다. 차원은 첫 번째 줄을 기준으로 자동으로 추론됩니다.
  3. “기저 계산”을 클릭하세요. 계산기가 Gram-Schmidt 과정을 적용하고 직교 기저와 정규직교 기저를 보여 줍니다.
  4. 결과에 표시된 랭크를 확인하세요. 입력 벡터 수보다 작다면 일부 입력이 선형 종속이어서 건너뛴 것입니다.
  5. “초기화” 버튼으로 입력을 지우고 새 계산을 시작할 수 있습니다.

Gram-Schmidt 계산기 FAQ

Gram-Schmidt 과정이란 무엇인가요?
Gram-Schmidt 과정은 선형 독립 벡터 집합을 같은 부분공간을 생성하는 서로 직교하는 벡터 집합으로 바꾸는 알고리즘입니다. 필요하면 각 직교 벡터를 단위 길이로 정규화하여 정규직교 기저를 만들 수 있습니다.
직교와 정규직교의 차이는 무엇인가요?
직교 집합은 벡터들 사이의 쌍별 내적이 모두 0이어서 서로 수직입니다. 정규직교 집합은 여기에 더해 각 벡터의 길이가 1이어야 합니다. 모든 정규직교 집합은 직교 집합이지만, 그 반대는 아닙니다.
입력 벡터가 선형 종속이면 어떻게 되나요?
어떤 벡터가 앞선 벡터들과 선형 종속이면, 그 투영을 빼면 영벡터가 되어 정규화할 수 없습니다. 계산기는 이를 감지해 해당 벡터를 제외합니다. 표시되는 랭크는 입력 벡터 수보다 작아집니다.
QR 분해는 무엇이고 어떻게 관련되나요?
QR 분해는 행렬 A를 Q·R의 곱으로 분해하는 방식으로, Q는 정규직교 열을 가지고 R은 상삼각 행렬입니다. Gram-Schmidt 과정은 Q를 계산하는 고전적인 방법 중 하나입니다. 이 분해는 최소제곱 문제와 수치 고유값 알고리즘에 널리 사용됩니다.
몇 차원까지 사용할 수 있나요?
메모리와 부동소수점 정밀도 제한을 제외하면 차원에 대한 엄격한 상한은 없습니다. 2, 3, 4개 이상의 성분을 가진 벡터도 지원합니다. 각 벡터를 별도 줄에 입력하고 성분 수를 같게 맞추세요.
왜 손계산과 결과가 조금 다른가요?
계산기는 IEEE-754 배정밀도 부동소수점 연산을 사용하므로 아주 작은 반올림 오차가 생길 수 있습니다. 표시용으로 결과는 고정된 소수 자릿수로 반올림됩니다. 정확한 기호 해가 필요하면 Wolfram Alpha 같은 컴퓨터 대수 시스템이나 기호 Python 라이브러리를 사용하세요.