목록으로
Chapter 3: 선형변환
진행률: 3 / 8
예상 시간: 25분난이도: 중급
선형변환
학습 목표
- 선형변환의 정의와 성질 이해
- 변환 행렬과 기하학적 해석
- 좌표계 변환과 기저 변환
선형변환의 정의
함수 T: V → W가 다음 두 조건을 만족할 때 선형변환이라 합니다:
가법성
T(u + v) = T(u) + T(v)
동차성
T(αv) = αT(v)
핵심: 모든 선형변환은 행렬로 표현 가능합니다!
2D 기하학적 변환
회전
[cos θ -sin θ]
[sin θ cos θ]
[sin θ cos θ]
스케일링
[sx 0 ]
[0 sy]
[0 sy]
반사
[1 0] (x축)
[0 -1]
[0 -1]
전단
[1 k]
[0 1]
[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)