C.W.K.
Stream
Lesson 04 of 08 · published

단위, 역행렬, 그리고 행렬 'undo' 버튼

~10 min · identity, inverse, linear-systems

Level 0수학 초심자
0 XP0/59 lessons0/13 achievements
0/100 XP to next level100 XP to go0% complete

곱셈 단위원

스칼라: . 1 이 단위원. 행렬: . 단위 행렬 — 대각 1, 그 외 0 — 같은 역할.

이건 trivia 가 아니야. 단위 행렬이 모든 "undo" 정의가 기대는 anchor.

역행렬 — 행렬 나눗셈, 비슷한 거

스칼라: (). 행렬: . 역행렬이 원래 변환을 "undo". 시계방향 30° 회전? 가 반시계 30°. 두 배? 가 절반.

모든 행렬이 역행렬 가지는 건 아님

두 요건:

  1. 정방. 직사각 행렬은 차원 변경, "차원 버리기" 는 완전 undo 불가.
  2. 0 아닌 행렬식. 행렬식 0 = 행렬이 공간 collapse — 여러 입력이 같은 출력 매핑, undo 불가. Singular = 역행렬 X.

Singular 또는 직사각 행렬엔 pseudoinverse () 가 best-effort 일반화. Regression, least-squares 곳곳에서.

실전: 역행렬 계산하지 마

풀 때 교과서는 . 교과서가 가르치는 건 개념, 알고리즘 X. 실전엔 np.linalg.solve(A, B) 사용, LU decomposition 활용 — 역행렬 + 곱하기보다 빠르고 수치적으로 안정.

역행렬은 개념; solve 가 구현. 추론할 땐 역행렬. 계산할 땐 solve.

Code

개념 vs 구현·python
import numpy as np

A = np.array([[2, 1],
              [1, 3]], dtype=float)

# 단위 검사
I = np.eye(2)
print(np.allclose(A @ I, A))      # True

# 역행렬 — 개념
A_inv = np.linalg.inv(A)
print(np.allclose(A @ A_inv, I))  # True (float modulo)

# 풀기 — 구현
B = np.array([5, 6])
X_via_inverse = A_inv @ B         # 교과서, 느림
X_via_solve   = np.linalg.solve(A, B)  # 실제 사용해야 할 것
print(np.allclose(X_via_inverse, X_via_solve))   # True

External links

Exercise

입력을 2배 하는 2×2 행렬 만들어. 역행렬 찾아. 역행렬이 벡터를 절반으로 만드는지 검증. 그러고 singular 2×2 행렬 (예: 같은 행 두 개) 만들고 np.linalg.inv 시도 — 어떤 에러?
Hint
2배 행렬 = 2*np.eye(2). 역행렬 = 0.5*np.eye(2). Singular = [[1, 1], [2, 2]]. 역행렬 시도가 LinAlgError: Singular matrix 발생.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 2

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.
  1. Elechemist
    Elechemist

    import numpy as np

    A = np.array([[2., 0.], [0., 2.]]) Ainv = np.linalg.inv(A)

    print('Ainv =') print(Ainv)

    v = np.array([10., 8.]) print('Ainv @ v =', Ainv @ v) print('v / 2 =', v / 2)

    S = np.array([[1., 2.], [1., 2.]]) try: np.linalg.inv(S) except Exception as e: print(type(e).name, '->', e)

    에러는 역행렬이 존재하지 않으므로 발생, LinAlgError -> Singular matrix

    💛 by 피파warm
    1. 피파
      피파· warmElechemistElechemist

      좋아요. 2*np.eye(2)의 역행렬이 0.5*np.eye(2)이고, 같은 행이 반복된 S에서 LinAlgError: Singular matrix가 나는 흐름까지 정확해요. 한 가지 실전 습관만 더하면, 실제 풀이에서는 inv보다 solve를 먼저 떠올리면 됩니다.