도구스학업·수학

유사역행렬·최소제곱해 계산기

정사각이 아니거나 특이한 행렬의 무어–펜로즈 유사역행렬 A⁺를 SVD로 구하고 Ax = b의 최소제곱해를 냅니다. 해가 없으면 잔차를 가장 작게, 해가 무수히 많으면 길이가 가장 짧은 해를 준다는 두 성질을 실제 값으로 확인시켜 줍니다.

한 줄에 한 행씩, 공백이나 쉼표로 나눕니다. 6×6 까지

행의 수만큼 적습니다

σ ≤ 문턱 × σ_max이면 0으로 봅니다. 지금 1.0000×10^-10

식이 미지수보다 많습니다 — 최소제곱해

‖x‖ = 2.266483

잔차 ‖Ax − b‖ = 0.20412 · 식이 서로 어긋나 완전한 해가 없습니다 · 계수 2

1.3333330.333333-0.666667
-0.5-00.5

2×3 행렬입니다

0.9666672.05
크기A는 3×2 · A⁺는 2×3
특이값4.079143, 0.600491
0으로 본 문턱 (절댓값)4.0791×10^-10
계수 (rank)2
버린 특이값0
증폭 배수 1/σ_min1.6653
조건수 σ_max/σ_min6.79301
영공간의 차원0
해의 길이 ‖x‖2.26648284
잔차 ‖Ax − b‖0.204124
잔차 벡터 Ax − b-0.08333, 0.16667, -0.08333
① AA⁺A = A9.9920×10^-16
② A⁺AA⁺ = A⁺2.2204×10^-15
③ (AA⁺)ᵀ = AA⁺1.1102×10^-16
④ (A⁺A)ᵀ = A⁺A1.7764×10^-15

10⁻¹⁰보다 크면 특이값이 너무 작아 수치적으로 무너진 것입니다

계산 근거A = UΣVᵀ → A⁺ = V·Σ⁺·Uᵀ, Σ⁺는 0이 아닌 σ를 1/σ로 바꾼 것0으로 본 기준: σ ≤ 1.0000×10^-10 × σ_max = 4.0791×10^-100인 특이값은 뒤집지 않고 그대로 0으로 둡니다. 이 «뒤집지 않고 버린다»는 결정 하나가 최소제곱과 최소노름을 동시에 만들어 냅니다.
식이 서로 어긋나 완전한 해가 없습니다 — 그래서 잔차를 가장 작게 만드는 x를 줍니다. 잔차 ‖Ax − b‖ = 0.20412 이고, 이 x를 어느 방향으로 조금 흔들어도 잔차는 커지기만 합니다. 잔차 벡터가 A의 모든 열과 직교한다는 것이 그 증거이며, 이것이 곧 정규방정식 Aᵀ(Ax − b) = 0입니다. 직선 맞추기(회귀)가 바로 이 계산입니다.
문턱값이 답을 정합니다 — 밝히지 않은 결과는 견줄 수 없습니다. 실수 계산에서 특이값이 정확히 0이 되는 일은 거의 없습니다. 이론상 0이어야 할 값이 10⁻¹⁶쯤으로 남는데, 그것을 뒤집으면 10¹⁶이 되어 잡음이 통째로 증폭됩니다. 지금 문턱은 σ_max의 1.0000×10^-10배인 4.0791×10^-10이고, 살아남은 가장 작은 특이값의 역수 — 곧 증폭 배수 — 는 1.6653입니다. 위에서 «작은 특이값» 예제를 고르고 문턱을 1e-6과 1e-14로 바꿔 보면 ‖x‖가 얼마나 튀는지 보입니다.
네 조건이 유사역행렬을 유일하게 정합니다. AA⁺A = A, A⁺AA⁺ = A⁺, (AA⁺)ᵀ = AA⁺, (A⁺A)ᵀ = A⁺A를 모두 만족하는 행렬은 하나뿐이고 그것이 A⁺입니다. 위 표에서 지금 어긋난 정도가 최대 2.2204×10^-15이니 수치적으로 문제가 없습니다. 정사각이고 특이하지 않으면 A⁺ = A⁻¹이 되어 보통의 역행렬과 같아집니다.
정규방정식 (AᵀA)⁻¹Aᵀ 로 구하는 것보다 안전합니다. AᵀA를 만드는 순간 조건수가 제곱되어 정밀도가 절반으로 깎이고, 계수가 모자라면 AᵀA 자체가 특이해져 아예 풀리지 않습니다. SVD로 구하면 두 문제가 모두 없습니다. 다만 이 계산기의 SVD 도 AᵀA의 고윳값 분해를 쓰므로, 특이값이 σ_max의 10⁻⁸배보다 작아지면 그 값 자체를 믿지 마십시오.

계산 방법

  1. 1행렬 A를 한 줄에 한 행씩 적습니다. 정사각이 아니어도 됩니다.
  2. 2우변 b를 적으면 최소제곱해 x = A⁺b가 나옵니다. 비워 두면 A⁺만 냅니다.
  3. 3«잔차 ‖Ax − b‖»가 0이 아니면 식이 서로 어긋난다는 뜻입니다.
  4. 4영공간이 있으면 «다른 해의 길이»와 견줘 A⁺b가 가장 짧은 해임을 확인합니다.
  5. 5문턱값을 1e-6과 1e-14로 바꿔 가며 ‖x‖가 얼마나 튀는지 보십시오.

자주 묻는 질문

역행렬을 정사각이 아니거나 특이한 행렬까지 넓힌 것입니다. 보통의 역행렬은 정사각이고 특이하지 않아야 있지만, 무어–펜로즈 유사역행렬 A⁺는 어떤 행렬에도 언제나 하나 있습니다. 정사각이고 특이하지 않으면 A⁺ = A⁻¹이 되어 보통의 역행렬과 같아집니다.

세 경우를 한 식으로 덮습니다. 해가 없으면(식이 미지수보다 많고 서로 어긋나면) 잔차 ‖Ax − b‖를 가장 작게 만드는 최소제곱해를, 해가 무수히 많으면(미지수가 식보다 많으면) 그중 길이 ‖x‖가 가장 짧은 해를, 정칙계라면 그냥 A⁻¹b를 줍니다.

A = UΣVᵀ로 특이값 분해한 뒤 A⁺ = VΣ⁺Uᵀ로 구합니다. Σ⁺는 0이 아닌 특이값을 1/σ로 바꾼 것이고, 0인 특이값은 뒤집지 않고 그대로 0으로 둡니다. 이 «뒤집지 않고 버린다»는 결정 하나가 최소제곱과 최소노름을 동시에 만들어 냅니다.

실수 계산에서 특이값이 정확히 0이 되는 일이 거의 없기 때문입니다. 이론상 0이어야 할 값이 10⁻¹⁶쯤으로 남는데 그것을 뒤집으면 10¹⁶이 되어 잡음이 통째로 증폭됩니다. 그래서 «이보다 작으면 0으로 본다»는 기준이 필요하고, 그 기준이 계수(rank)를 정하고 답을 정합니다. 문턱값을 밝히지 않은 유사역행렬 결과는 다른 결과와 견줄 수 없습니다.

AA⁺A = A, A⁺AA⁺ = A⁺, (AA⁺)ᵀ = AA⁺, (A⁺A)ᵀ = A⁺A 네 가지입니다. 이 넷을 모두 만족하는 행렬은 유일하며, 그것이 유사역행렬의 정의입니다. 이 계산기는 넷을 실제로 계산해 어긋난 정도를 보여 주므로, 값이 10⁻¹⁰보다 크면 특이값이 너무 작아 수치적으로 무너졌다고 보면 됩니다.

수학적으로는 A의 열이 일차독립일 때 같은 값이지만 수치적으로는 SVD 쪽이 훨씬 안전합니다. AᵀA를 만드는 순간 조건수가 제곱되어 정밀도가 절반으로 깎이고, 계수가 모자라면 AᵀA 자체가 특이해져 아예 풀리지 않습니다. SVD로 구하면 두 문제가 모두 없습니다.

최소제곱 회귀가 바로 이 계산입니다. 데이터 점이 미지수보다 많아 직선이 모든 점을 지날 수 없을 때, 잔차의 제곱합을 가장 작게 만드는 계수를 구하는 것이 x = A⁺b입니다. 이 계산기에 「1 x」 꼴의 행렬과 y값을 넣으면 회귀 직선의 절편과 기울기가 그대로 나옵니다.

전송되지 않습니다. 계산은 모두 브라우저 안에서 이루어지며 입력한 행렬은 이 기기에만 남습니다.

알아두면 좋은 점

  • 행렬은 6×6까지 다룹니다. 눈으로 확인하는 것이 목적인 계산기입니다.
  • SVD를 AᵀA의 고윳값 분해로 구하므로 조건수가 제곱됩니다. 특이값이 σ_max의 10⁻⁸배보다 작아지면 그 값 자체를 믿지 마십시오.
  • 문턱값은 σ_max에 대한 상대값입니다. 기본값 10⁻¹⁰은 관례일 뿐 절대 기준이 아니며, 자료의 잡음 수준에 맞춰 정해야 합니다.
  • 복소수 행렬은 다루지 않습니다. 실수 행렬만 넣을 수 있습니다.

함께 보면 좋은 도구

마지막 검증: 2026년 9월 2일 · 결과는 참고용 추정치입니다.