8장의 최소제곱은 정규 방정식 ATAx^=ATb로 풀렸습니다. 식은 깔끔하지만 컴퓨터는 이 식을 그대로 믿으면 안 됩니다. ATA를 만드는 순간 문제의 까다로움(조건수)이 제곱되기 때문입니다. 해결책은 기저를 바꾸는 것입니다. 서로 수직이고 길이가 1인 벡터들, 즉 정규직교 기저로 바꾸면 계수는 내적 한 번으로 읽히고, 사영은 곱셈 몇 번이 되고, 반올림 오차는 커지지 않습니다. 이 장은 아무 기저나 정규직교 기저로 바꾸는 그람–슈미트 과정에서 출발해, 그 기록인 A=QR 분해, 그리고 실제 소프트웨어가 쓰는 하우스홀더 반사와 기븐스 회전까지 갑니다.
정규직교 기저에서는 좌표가 내적 ci=qi⋅b로 바로 나오고 QTQ=I임을 이해하고, 비스듬한 기저와 비교한다.
직교 행렬이 길이·각도·내적을 보존하는 회전과 반사라는 것을 보이고, Q−1=QT를 계산에 쓴다.
그람–슈미트 과정을 단계별로 실행해 정규직교 기저를 만들고, 그 계수를 모아 A=QR을 구한다.
고전·수정 그람–슈미트와 하우스홀더 QR의 직교성 손실을 실험으로 비교하고 그 원인을 설명한다.
하우스홀더 반사와 기븐스 회전으로 아래쪽 원소를 0으로 만드는 원리를 그림으로 이해한다.
최소제곱을 Rx^=QTb로 풀고, 정규 방정식보다 정확한 이유를 κ(ATA)=κ(A)2로 설명한다.
함수에도 그람–슈미트를 적용해 르장드르·체비쇼프 다항식을 만들어 본다.
이 수식이 없었다면믿을 수 있는 데이터 적합
GPS 수신기는 위성 네 개 이상에서 받은 신호로 위치 (x, y, z)와 시계 오차를 구합니다. 하늘에 보이는 위성이 여덟, 열 개면 방정식이 미지수보다 많고 측정값에는 잡음이 섞여 있으니 모든 식을 정확히 만족하는 답은 없습니다. 실험실의 검량선, 센서 보정, 궤도 결정, 기계 학습의 선형 회귀도 같은 꼴, 즉 과결정 최소제곱 문제입니다.
교과서의 정규 방정식으로 풀면 잘 될 때도 있지만, 변수들이 서로 비슷할수록(조건수가 클수록) 유효 숫자가 두 배 빠르게 사라집니다. 그래서 수치 소프트웨어는 A를 정규직교 행렬 Q와 위삼각 행렬 R의 곱으로 쪼갠 뒤 Rx^=QTb를 풉니다. MATLAB의 A\b도 A가 정사각이 아니면 QR 분해로 최소제곱 해를 구합니다.
식 > 미지수, 잡음→정규 방정식: κ²→A = QR (직교화)→κ 그대로, 안정
정규직교 기저는 계산을 공짜로 만든다
좌표를 구하는 데 연립방정식이 필요할까
평면의 벡터 b를 기저 u1,u2로 b=c1u1+c2u2처럼 쓰려면 보통 2×2 연립방정식을 풀어야 합니다. 1000차원이면 1000×1000 시스템입니다. 신호를 주파수 성분으로, 이미지를 기저 패턴으로 나눌 때마다 이 비용을 치러야 할까요?
기저 벡터들이 서로 수직이고 길이가 1이면 이야기가 완전히 달라집니다. 양변에 qi를 내적하면 다른 항은 모두 0이 되고 ci만 남기 때문입니다.
정의 9.1 (정규직교) 벡터 q1,…,qn이 qi⋅qj=0 (i=j), qi⋅qi=1을 만족하면 정규직교(orthonormal)라 한다. 이들을 열로 갖는 행렬 Q는 QTQ=I를 만족한다. QTQ의 (i,j) 칸이 바로 qi⋅qj이기 때문이다.
정리 9.1 (정규직교 기저에서의 좌표)q1,…,qn이 Rn의 정규직교 기저이면 모든 b에 대해
b=(q1⋅b)q1+⋯+(qn⋅b)qn,∥b∥2=i∑(qi⋅b)2.
증명.b=∑jcjqj에 qi를 내적하면 qi⋅b=∑jcj(qi⋅qj)=ci. 행렬로 쓰면 Qc=b의 해가 c=QTb이다. 길이는 ∥b∥2=cTQTQc=cTc. 두 번째 식(파스발 등식)은 "에너지는 성분 에너지의 합"이라는 뜻이다. ∎
연립방정식 n3이 내적 n번, 즉 곱셈 n2번으로 줄었습니다. 아래 시뮬레이터에서 두 기저를 비교해 보세요. 정규직교 기저에서는 b에서 각 축으로 수직으로 내린 발(내적)이 곧 좌표입니다. 비스듬한 기저에서는 수직으로 내린 값과 실제 좌표(평행사변형으로 읽은 값)가 다릅니다.
SIMULATOR
좌표 읽기: 정규직교 기저 vs 비스듬한 기저
b 끝점을 끌어 보세요
기저
실제 좌표 (c₁, c₂)—
내적으로 읽은 값 (u₁·b, u₂·b)—
‖b‖² vs c₁² + c₂²—
해볼 것: ① 정규직교에서는 두 행이 항상 같습니다. 좌표를 구하는 데 연립방정식이 필요 없습니다. ② '비스듬함'으로 바꾸고 두 축 사이 각을 90°에서 멀리 보내면 내적 값과 실제 좌표가 점점 어긋나고, 피타고라스(‖b‖² = c₁² + c₂²)도 깨집니다. ③ 각을 25°까지 좁히면 실제 좌표가 크게 부풀어 오릅니다. 비슷한 두 기저로 b를 나타내려면 큰 양수와 큰 음수를 섞어야 하기 때문입니다. 모델: 정규직교는 길이 1의 수직 두 벡터, 비스듬함은 길이 1과 1.2의 두 벡터.
예제 9.1 (손으로)q1=51(3,4), q2=51(−4,3)은 정규직교다(q1⋅q2=(−12+12)/25=0, 길이는 둘 다 1). b=(2,11)의 좌표는
① c1=q1⋅b=(6+44)/5=10, ② c2=q2⋅b=(−8+33)/5=5.
확인: 10q1+5q2=(6,8)+(−4,3)=(2,11). 길이도 ∥b∥2=4+121=125=102+52.
직교 행렬: 길이와 각을 지키는 변환
회전을 여러 번 곱해도 물체가 찌그러지지 않으려면
게임 엔진이나 드론의 자세 추정은 매 프레임 회전 행렬을 곱합니다. 회전은 물체의 길이와 각을 바꾸지 않아야 합니다. 어떤 행렬이 그런 성질을 갖는지, 그리고 그 성질을 수치적으로 어떻게 확인하는지가 문제입니다.
정의 9.2 (직교 행렬) 정사각 행렬 Q가 QTQ=I를 만족하면 직교 행렬(orthogonal matrix)이라 한다. 열이 Rn의 정규직교 기저를 이루고, 역행렬은 전치 Q−1=QT이다. (직사각 m×n 행렬이 QTQ=In을 만족하면 "정규직교 열을 가진 행렬"이라 부르며, 이때 QQT는 I가 아니라 열공간으로의 사영이다.)
정리 9.2 (직교 변환은 기하를 보존한다)QTQ=I이면 모든 x,y에 대해 (Qx)⋅(Qy)=x⋅y, 따라서 ∥Qx∥=∥x∥이고 두 벡터 사이 각도 그대로다. 정사각 직교 행렬은 detQ=±1이며, +1이면 회전, −1이면 반사가 섞인 변환이다.
증명.(Qx)T(Qy)=xTQTQy=xTy. 행렬식은 1=det(QTQ)=(detQ)2에서 나온다. ∎
그림 9-1. 직교 행렬은 단위원을 단위원으로 보낸다. 두 열(초록·빨강)은 언제나 길이 1이고 서로 수직이다. 회전(왼쪽)은 방향을 유지하고, 반사(가운데)는 점선 거울에 비춰 방향을 뒤집는다. 직교가 아닌 행렬(오른쪽)은 원을 타원으로 늘인다. 길이가 바뀌면 오차도 늘어날 수 있다.
직교 행렬을 곱해도 길이가 그대로라는 사실은 수치 계산에서 결정적입니다. 계산 도중 생긴 작은 오차 벡터 δ도 ∥Qδ∥=∥δ∥라서 커지지 않습니다. 조건수로 말하면 κ(Q)=1, 가장 좋은 값입니다. 반면 소거에서 쓰는 행렬은 피벗이 작으면 오차를 키울 수 있었습니다(3장 부분 피벗팅). QR 알고리즘들이 안정한 이유가 여기에 있습니다.
행렬
예
det
쓰이는 곳
회전
[cosθsinθ−sinθcosθ]
1
자세 추정, 그래픽스, 기븐스 회전
반사
I−2uuT (∥u∥=1)
−1
하우스홀더 QR
치환
[0110]
±1
행 교환(피벗팅)
이산 푸리에(정규화)
F/n (복소수, F∗F=nI)
∣det∣=1
FFT, OFDM 통신
그람–슈미트: 기울어진 기저를 바로 세우기
주어진 벡터들에서 정규직교 기저를 만들려면
측정 행렬의 열, 다항식 1,x,x2, 안테나 배열의 조향 벡터처럼 우리가 가진 기저는 대개 서로 비스듬합니다. 같은 공간을 생성하면서 서로 수직인 기저로 바꿀 수 있을까요?
아이디어는 단순합니다. 벡터를 하나씩 받아, 이미 만든 방향 성분을 빼고, 남은 것을 길이 1로 맞춥니다. 1장에서 본 사영 (v⋅q)q가 "이미 있는 방향 성분"입니다.
vj=aj−i<j∑(qi⋅aj)qi,qj=∥vj∥vj
vj는 aj에서 앞선 방향 q1,…,qj−1으로의 사영을 뺀 나머지다. 그래서 vj는 앞의 모든 qi와 수직이다. aj가 앞의 벡터들의 결합이면 vj=0이 되어 멈춘다(열이 종속).
정리 9.3 (그람–슈미트)a1,…,an이 선형 독립이면 위 과정은 정규직교 벡터 q1,…,qn을 만들고, 모든 k에 대해 span{q1,…,qk}=span{a1,…,ak}이다.
증명의 아이디어. 귀납법. q1,…,qj−1이 정규직교라 하자. i<j에 대해 qi⋅vj=qi⋅aj−(qi⋅aj)(qi⋅qi)=0. vj=0이면 aj가 a1,…,aj−1의 결합이 되어 독립성에 모순이므로 나눌 수 있다. 생성 공간이 같은 것은 qj가 a1,…,aj의 결합이고 거꾸로 aj가 q1,…,qj의 결합이기 때문이다. ∎
이 과정은 덴마크의 그람(1883)과 독일의 슈미트(1907)의 이름으로 불리지만, 같은 계산은 라플라스의 연구에도 나타납니다. 아래에서 두 벡터로 한 단계씩 따라가 보세요.
SIMULATOR
그람–슈미트 한 단계씩 (2차원)
a₁, a₂ 끝점을 끌어 보세요
R (지금까지 구한 계수)
—
단계—
r₁₂ = q₁·a₂—
r₂₂ = ‖v₂‖—
q₁·q₂—
a₁ → q₁a₂ → q₂빼는 사영 (q₁·a₂)q₁
해볼 것: ① 네 단계를 넘기며 a₂에서 q₁ 방향 성분(주황)을 빼면 q₁에 수직인 v₂만 남는 것을 보세요. ② '거의 평행하게'를 누르면 v₂가 아주 짧아집니다(r₂₂ ≈ 0). 짧은 벡터를 길이 1로 키우는 마지막 나눗셈이 오차를 키우는 곳이며, 4절의 직교성 손실이 여기서 시작됩니다. ③ a₂를 a₁과 같은 직선에 놓으면 v₂ = 0이 되어 q₂를 만들 수 없습니다. 두 열이 종속입니다. 모델: 정확한 실수 계산, 끈 점은 0.1 단위.
예제 9.2 (손으로, 3차원)a1=(1,1,0), a2=(1,0,1), a3=(0,1,1).
① ∥a1∥=2, q1=21(1,1,0).
② q1⋅a2=21. v2=a2−21q1=(1,0,1)−(21,21,0)=(21,−21,1), ∥v2∥=3/2, q2=61(1,−1,2).
③ q1⋅a3=21, q2⋅a3=61. v3=(0,1,1)−(21,21,0)−61(1,−1,2)=(−32,32,32), ∥v3∥=32, q3=31(−1,1,1).
확인: q1⋅q2=(1−1+0)/12=0, q1⋅q3=0, q2⋅q3=(−1−1+2)/18=0.
A = QR: 그람–슈미트의 기록
4장에서 소거의 기록이 A=LU였듯, 그람–슈미트의 기록은 A=QR입니다. 식 vj=aj−∑i<jrijqi를 aj에 대해 다시 쓰면
aj는 q1,…,qj만으로 쓰이고 뒤의 q는 쓰이지 않는다. 그래서 계수를 모은 R은 위삼각 행렬이다.
정리 9.4 (QR 분해) 열이 선형 독립인 m×n 행렬 A는 A=QR로 쓸 수 있다. Q는 m×n이고 정규직교 열을 가지며(QTQ=In), R은 대각 원소가 양수인 n×n 위삼각 행렬이다. 이 조건 아래 분해는 하나뿐이다.
증명의 아이디어. 존재는 그람–슈미트가 보여 준다. 유일성: A=Q1R1=Q2R2이면 Q2TQ1=R2R1−1은 위삼각이면서 직교 행렬이다. 위삼각 직교 행렬은 대각 원소가 ±1인 대각 행렬뿐이고, 대각이 양수라는 조건이 +1로 정한다. ∎
그리고 R=QTA입니다. A=QR의 양변에 QT를 곱하면 QTQ=I이니까요. R의 칸은 정말로 "각 열을 각 방향에 내적한 값"입니다. 아래에서 3×3 행렬을 넣고 열을 하나씩 처리해 보세요.
SIMULATOR
QR 분해 실험실: 열을 하나씩 직교화
A (3×3, 열 = a₁, a₂, a₃)
—
처리한 열—
‖QR − A‖ (최대 칸)—
‖QᵀQ − I‖ (최대 칸)—
해볼 것: ① '다음 열'을 누를 때마다 R에 한 열(파랑)이 채워집니다. 대각 아래는 늘 0입니다. ② 마지막에 QR = A, QᵀQ = I가 반올림 수준으로 맞는지 확인하세요. ③ '종속인 열'을 고르면 세 번째 열에서 v₃ = 0이 되어 멈춥니다. r₃₃ = 0은 3열이 앞 열들로 만들어진다는 뜻입니다. 모델: 고전 그람–슈미트, 배정밀도 실수 계산. 표시는 소수 셋째 자리까지.
QR과 LU 비교 두 분해는 짝을 이룹니다. LU는 행을 섞어 아래를 0으로 만들고 그 기록이 L입니다. QR은 열을 직교화하고 그 기록이 R입니다. LU는 정사각 시스템을 32n3에 풀고, QR은 직사각(m>n) 시스템과 최소제곱까지 다루며 대신 비용이 약 두 배입니다(하우스홀더 기준 2mn2−32n3).
고전 vs 수정 그람–슈미트: 직교성이 새는 곳
컴퓨터가 만든 Q는 정말 직교일까
정확한 산수에서는 그람–슈미트가 완벽한 정규직교 벡터를 만듭니다. 하지만 컴퓨터의 수는 유효 숫자 16자리뿐입니다. 열들이 거의 평행하면 큰 수에서 큰 수를 빼서 작은 vj를 얻는데, 이때 앞쪽 유효 숫자가 상쇄되어 사라집니다. 그렇게 만든 qj는 앞의 qi와 더 이상 수직이 아닐 수 있습니다.
같은 수식을 순서만 바꿔 계산하는 두 방법이 있습니다.
고전 그람–슈미트 (CGS)
수정 그람–슈미트 (MGS)
계수
rij=qi⋅aj (원래 벡터에 내적)
rij=qi⋅v (이미 일부를 뺀 벡터에 내적)
빼기
모든 rij를 구한 뒤 한꺼번에
하나 빼고, 그 결과로 다음 계수를 구한다
정확한 산수
같은 결과
직교성 손실 ∥QTQ−I∥
대략 εκ(A)2
대략 εκ(A)
여기서 ε≈1.1×10−16은 배정밀도의 단위 반올림, κ(A)는 A의 조건수(가장 큰 특이값 ÷ 가장 작은 특이값)입니다. 그리고 다음 절의 하우스홀더 QR은 κ와 상관없이 ε 수준의 직교성을 유지합니다. 직교 행렬만 곱해 R을 만들기 때문입니다. 시험 행렬로는 악명 높은 힐베르트 행렬Hij=1/(i+j−1)을 씁니다. 열들이 서로 거의 평행해서 n=12이면 κ≈1016에 이릅니다.
SIMULATOR
직교성 손실 측정: CGS · MGS · 하우스홀더
κ(Hₙ)—
CGS—
MGS—
하우스홀더—
CGSMGS하우스홀더εκ, εκ² (점선)
해볼 것: ① n을 키우며 CGS(빨강)가 εκ² 선을 따라 올라가 n = 7 무렵 1 근처, 즉 직교성을 완전히 잃는 것을 보세요. ② MGS(주황)는 εκ 선을 따라 더 천천히 나빠집니다. ③ 하우스홀더(초록)는 n과 상관없이 10⁻¹⁵ 근처에 머뭅니다. ④ 'CGS를 두 번'을 켜면 한 번 더 직교화하는 것만으로 대부분 회복됩니다(실제 라이브러리가 쓰는 재직교화). 모델: 이 브라우저의 배정밀도(IEEE 754) 실제 계산. 직교성 손실은 ‖QᵀQ − I‖의 최대 칸, κ는 이 책 엔진의 야코비 SVD로 구해 n이 클 때는 근삿값입니다.
왜 CGS가 더 나쁠까 CGS는 rij를 모두 원래aj에서 구합니다. q1 계산에 생긴 오차가 q2에 남아 있으면, a3에서 q1, q2 성분을 따로 구해 빼도 그 오차가 걸러지지 않습니다. MGS는 q1 성분을 뺀 결과에서 q2 성분을 구하므로, 앞 단계에서 남은 q1 쪽 찌꺼기 일부까지 함께 정리합니다. 연산량은 똑같고 순서만 다릅니다.
하우스홀더 반사와 기븐스 회전
직교성을 잃지 않고 아래를 0으로 만들려면
소거는 행을 빼서 아래 원소를 0으로 만들었습니다. 같은 일을 직교 행렬만 곱해서 할 수 있다면, 오차가 커지지 않는 상태로 위삼각 R에 도달할 것입니다. Qn⋯Q2Q1A=R이면 A=(Q1TQ2T⋯QnT)R=QR입니다.
열 벡터 x를 첫 좌표축 위로, 즉 (±∥x∥,0,…,0)으로 보내는 직교 변환이 필요합니다. 길이를 지키면서 방향만 바꾸는 방법은 두 가지, 반사와 회전입니다.
정의 9.3 (하우스홀더 반사) 0이 아닌 v에 대해 H=I−2vTvvvT를 하우스홀더 반사(Householder reflection)라 한다. v에 수직인 초평면을 거울로 삼아 비추는 변환으로, H=HT=H−1, detH=−1이다.
정리 9.5 (한 열을 축 위로)x=0, α=−sign(x1)∥x∥, v=x−αe1로 두면 Hx=αe1이다.
증명.∥x∥=∣α∣이므로 vTv=2(∥x∥2−αx1), vTx=∥x∥2−αx1. 따라서 Hx=x−2vTvvTxv=x−v=αe1. 기하학으로는 x와 αe1이 길이가 같으니 둘을 잇는 선분의 수직이등분면이 거울이다. ∎
부호 −sign(x1)은 장식이 아닙니다. 반대 부호를 고르면 x가 이미 e1 근처일 때 v=x−∥x∥e1의 첫 성분이 거의 같은 두 수의 차가 되어 상쇄 오차가 생깁니다. 아래 시뮬레이터에서 직접 볼 수 있습니다.
정의 9.4 (기븐스 회전) 두 좌표 i,k 평면에서만 각 θ만큼 도는 직교 행렬 G(i,k,θ)를 기븐스 회전(Givens rotation)이라 한다. r=a2+b2, c=a/r, s=b/r로 두면 [c−ssc][ab]=[r0]. 원소 하나를 0으로 만들고, 다른 행은 건드리지 않는다.
SIMULATOR
거울과 회전으로 x를 축 위에 눕히기
x 끝점을 끌어 보세요
방법
반사 목표 부호 (하우스홀더)
변환 행렬
x—
변환 결과—
‖v‖ (하우스홀더)—
det—
해볼 것: ① 하우스홀더에서 점선이 거울입니다. x와 결과가 거울을 사이에 두고 대칭이고, F가 뒤집혀 읽힙니다(det = −1). ② 기븐스로 바꾸면 같은 결과를 회전으로 얻고 F가 그대로 읽힙니다(det = +1). ③ x를 x축 양의 방향 가까이 두고 부호를 'α = +‖x‖'로 바꾸면 ‖v‖가 0에 가까워집니다. 거의 같은 두 수를 빼는 상쇄가 일어나는 자리이며, 안전한 부호는 v를 언제나 길게 유지합니다. 모델: 2차원. n차원에서도 거울은 v에 수직인 초평면, 회전은 두 좌표 평면에서만 일어납니다.
그림 9-2. 하우스홀더 QR. k번째 반사 Hₖ는 k열의 대각 아래를 한꺼번에 0으로 만들고, 앞에서 만든 0은 건드리지 않는다(Hₖ는 k번째 이후 행만 섞는다). 기븐스 회전은 같은 일을 원소 하나씩 하며, 이미 대부분 0인 희소 행렬이나 행이 하나씩 들어오는 실시간 갱신에 알맞다.
예제 9.3 (손으로)x=(3,4)를 x축 위로. ∥x∥=5, x1>0이므로 α=−5, v=(3+5,4)=(8,4), vTv=80.
H=I−802[64323216]=[−0.6−0.8−0.80.6], Hx=(−1.8−3.2,−2.4+2.4)=(−5,0). ✓
기븐스로는 r=5, c=0.6, s=0.8: [0.6−0.80.80.6](3,4)=(5,0). 같은 길이, 다른 부호, 다른 행렬식.
QR로 푸는 최소제곱
정규 방정식은 왜 위험한가
다항식 c0+c1x+⋯+cdxd로 측정값을 맞추는 문제는 Ac≈b, A는 열이 1,x,x2,…인 반데르몽드 행렬입니다. 구간 [0,1]에서 x7과 x8은 모양이 거의 같아 열이 거의 평행합니다. 정규 방정식 ATAc=ATb는 이 까다로움을 제곱해 버립니다.
8장에서 최소제곱 해 x^는 잔차 b−Ax^가 열공간에 수직이 되는 점이었습니다(8장). A=QR을 넣으면 수직 조건이 아주 간단해집니다.
정리 9.6 (QR 최소제곱) 열이 독립인 A=QR에 대해 최소제곱 해는 Rx^=QTb의 해이다.
증명. 정규 방정식 ATAx^=ATb에 A=QR을 넣으면 RTQTQRx^=RTQTb, 즉 RTRx^=RTQTb. R이 가역이라 RT를 지우면 끝이다. 계산에서는 ATA를 만들지 않고 후진 대입 한 번으로 푼다. ∎
A의 특이값이 σi이면 ATA의 특이값은 σi2이다(14장). 배정밀도에서 κ(A)=108이면 정규 방정식은 κ2=1016으로 유효 숫자를 모두 잃지만, QR은 아직 8자리를 지킨다. 잔차가 크면 QR의 오차에도 κ2에 비례하는 항이 생기지만, 이는 문제 자체의 민감도이고 어느 알고리즘도 피할 수 없다.
SIMULATOR
다항식 적합: 정규 방정식 vs QR
x 구간
κ(A)—
κ(AᵀA) = κ²—
계수 오차: 정규 방정식—
계수 오차: QR—
정규 방정식하우스홀더 QRεκ (점선)
해볼 것: ① 차수를 1부터 올리며 두 곡선을 비교하세요. 정답 계수(모두 1)를 아는 문제라 상대 오차 ‖ĉ − c‖/‖c‖를 직접 잴 수 있습니다. [0, 1]에서 정규 방정식(빨강)은 κ²를 따라 오차가 빠르게 커져 d ≈ 10부터 100%를 넘는, 쓸모없는 답이 되지만 QR(초록)은 εκ 선을 따라 훨씬 천천히 나빠져 같은 차수에서도 여러 자리를 맞춥니다. ② 구간을 [−1, 1]로 바꾸면 열이 덜 비슷해져 κ가 작아지고 두 방법 모두 좋아집니다. 기저나 변수의 크기를 잘 고르는 것(스케일링·중심화)도 중요한 처방입니다. 모델: 잡음 없는 데이터 b = Ac, 배정밀도 실제 계산, 정규 방정식은 부분 피벗팅 소거로 풉니다.
예제 9.4 (손으로, 직선 적합) 점 (0,1),(1,2),(2,4)에 직선 c0+c1t를. A=111012, b=(1,2,4).
① q1=31(1,1,1), r11=3. ② r12=q1⋅a2=3, v2=(0,1,2)−(1,1,1)=(−1,0,1), r22=2, q2=21(−1,0,1).
③ QTb=(7/3,3/2). ④ 후진 대입: 2c1=3/2⇒c1=1.5, 3c0+3⋅1.5=7/3⇒c0=7/3−1.5=5/6.
직선 y^=5/6+1.5t. 정규 방정식 [3335]c=(7,10)로 풀어도 같은 답이 나온다.
함수에도 그람–슈미트: 직교 다항식
벡터 공간의 공리만 있으면 그람–슈미트는 어디서나 돌아갑니다. 연속 함수 f,g의 내적을 ⟨f,g⟩=∫−11f(x)g(x)dx로 정하면 함수도 수직일 수 있습니다. 단항식 1,x,x2,x3,…은 위의 다항식 적합이 보여 주었듯 서로 아주 비슷한 "비스듬한 기저"입니다. 이것에 그람–슈미트를 적용하면
P0=1,P1=x,P2=21(3x2−1),P3=21(5x3−3x),…
관례에 따라 Pn(1)=1이 되도록 크기를 맞춘 르장드르 다항식. ⟨Pm,Pn⟩=0 (m=n). 가중치 1/1−x2를 넣으면 체비쇼프 다항식 Tn(cost)=cosnt가 나온다.
예를 들어 P2: x2에서 P0 성분 ⟨x2,1⟩/⟨1,1⟩=(2/3)/2=1/3을 빼고, P1 성분은 ⟨x2,x⟩=0이라 뺄 것이 없으니 x2−31, 크기를 맞추면 21(3x2−1)입니다. 푸리에 급수의 sinnx,cosnx도 같은 의미의 정규직교 기저이고, 계수를 내적(적분)으로 읽는 것은 정리 9.1 그대로입니다(MathBook 푸리에 장).
SIMULATOR
단항식에 그람–슈미트: 르장드르와 체비쇼프
내적의 가중치 w(x)
max |⟨qᵢ, qⱼ⟩| (i ≠ j)—
단항식끼리 cos 각 (xᵏ⁻², xᵏ)—
q₂(0) / q₂(1)—
해볼 것: ① 단항식을 겹쳐 보면 높은 차수일수록 서로 거의 같은 모양입니다. 차수가 2 차이 나는 두 단항식의 cos 각이 1에 가까워집니다(차수가 1 차이 나면 짝·홀이라 내적이 0). 그람–슈미트를 거친 다항식은 구간 안에서 고르게 진동하며 서로 수직입니다. ② 르장드르에서 q₂(0)/q₂(1) = −0.5인지 확인하세요. P₂ = (3x² − 1)/2의 값입니다. ③ 체비쇼프 가중치로 바꾸면 끝점에서도 높이가 ±1로 같은 cos nt 꼴이 나옵니다. 모델: 구간을 2000칸으로 나눈 수치 적분, 각 다항식은 q(1) = 1이 되도록 크기를 맞춰 그립니다.
신호 처리의 적응 빔포밍과 에코 제거에서는 데이터 행이 하나씩 들어올 때마다 R을 기븐스 회전으로 갱신하는 QR 분해 기반 RLS(QRD-RLS) 알고리즘이 쓰이며, 회전을 처리 소자의 격자에 흘려보내는 시스톨릭 배열 구현이 알려져 있습니다. 행렬 전체를 다시 분해하지 않고 회전 몇 번으로 끝나기 때문입니다.
핵심 정리
정규직교 기저에서는 좌표가 내적이다: ci=qi⋅b, 즉 c=QTb. 길이는 ∥b∥2=∑ci2(파스발).