목록으로

Chapter 3: 선형변환

진행률: 3 / 8
예상 시간: 25분난이도: 중급

선형변환

학습 목표

  • 선형변환의 정의와 성질 이해
  • 변환 행렬과 기하학적 해석
  • 좌표계 변환과 기저 변환

선형변환의 정의

함수 T: V → W가 다음 두 조건을 만족할 때 선형변환이라 합니다:

가법성

T(u + v) = T(u) + T(v)

동차성

T(αv) = αT(v)

핵심: 모든 선형변환은 행렬로 표현 가능합니다!

2D 기하학적 변환

회전

[cos θ -sin θ]
[sin θ cos θ]

스케일링

[sx 0 ]
[0 sy]

반사

[1 0] (x축)
[0 -1]

전단

[1 k]
[0 1]

핵과 상 (Kernel and Image)

핵 (Kernel/Null Space)

ker(T) = {v ∈ V : T(v) = 0}

변환에 의해 0으로 매핑되는 벡터들의 집합

상 (Image/Range)

Im(T) = {T(v) : v ∈ V}

변환의 출력으로 가능한 모든 벡터들의 집합

차원 정리: dim(V) = dim(ker(T)) + dim(Im(T))

변환 시각화 코드

import numpy as np
import matplotlib.pyplot as plt

def visualize_transformation(A, vectors):
    """선형변환 시각화"""
    fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(12, 5))
    
    # 원본 벡터
    ax1.set_title("Original")
    for v in vectors:
        ax1.arrow(0, 0, v[0], v[1], head_width=0.1, 
                 head_length=0.1, fc='blue', ec='blue')
    
    # 변환된 벡터
    ax2.set_title("Transformed")
    for v in vectors:
        transformed = A @ v
        ax2.arrow(0, 0, transformed[0], transformed[1], 
                 head_width=0.1, head_length=0.1, fc='red', ec='red')
    
    # 축 설정
    for ax in [ax1, ax2]:
        ax.grid(True)
        ax.set_xlim(-5, 5)
        ax.set_ylim(-5, 5)
        ax.axhline(y=0, color='k', linewidth=0.5)
        ax.axvline(x=0, color='k', linewidth=0.5)
    
    plt.show()

# 회전 변환 예제
theta = np.pi/4  # 45도 회전
rotation_matrix = np.array([
    [np.cos(theta), -np.sin(theta)],
    [np.sin(theta), np.cos(theta)]
])

# 기저 벡터
basis_vectors = [np.array([1, 0]), np.array([0, 1])]
visualize_transformation(rotation_matrix, basis_vectors)