MIT 18.06 Linear Algebra

Lecture 1.1 The geometry of linear equations

AIHYEONJI 2025. 3. 2. 13:45

CHAPTER 1. Matrix

 Row Picture 
행의 관점으로 선형방정식 바라보기

 Row picture으로 푸는 방법은 익히 잘알려져 있다. 행렬들을 행으로 구분한 뒤 선형 방정식들의 그래프를 각각 그리면, 서로 만나게 되는 교점이 생기게 되는게 그 교점이 선형방정식의 해가 되는 것이다.

 

Column Picture 
열의 관점으로 선형방정식 바라보기

Column picture은 열의 관점에서 선형시스템을 보는 것이다. 선형 방정식들을 열 벡터들의 선형 결합(linear combination)으로 표현할 수 있다.

그렇다면 여기서 의문점이 있다. 

만약 x , y에 숫자를 대입하지 않았을 경우 즉, 모든 조합의 결과는 어떻게 되는가?

==> 평면 전체가 벡터로 채워질 것이다.

 

In deap learning

row picture과 column picture 둘 다로 선형방정식을 해결하는 것도 중요하지만, 딥러닝에서는 선형 시스템을 column picture로 보는 것이 더 낫다. 그 이유는 차원이 높아짐에 따라 row picture로 좌표계에서 표현하기 상대적으로 더 어렵기 때문이다.

시각적으로 비교를 해보자면 먼저 Row picture 관점에서는,

# Row picture 관점에서의 선형 방정식 시각화
import numpy as np
import matplotlib.pyplot as plt

# 계수 행렬 A와 b 벡터 정의
A = np.array([[2, -1, 0],
              [-1, 2, -1],
              [0, -3, 4]])

b = np.array([0, -1, 4])

# 그래프 범위 설정
x_vals = np.linspace(-5, 5, 100)
y_vals = np.linspace(-5, 5, 100)
X, Y = np.meshgrid(x_vals, y_vals)

# 각 방정식을 z에 대해 풀기
Z1 = (2*X - Y) / 1  # 첫 번째 방정식
Z2 = (-X + 2*Y + 1) / 1  # 두 번째 방정식
Z3 = (4 + 3*Y) / 4  # 세 번째 방정식

# 3D 그래프 설정
fig = plt.figure(figsize=(10, 7))
ax = fig.add_subplot(111, projection='3d')

# 방정식 평면 시각화
ax.plot_surface(X, Y, Z1, alpha=0.5, color='red', label='2x - y = 0')
ax.plot_surface(X, Y, Z2, alpha=0.5, color='blue', label='-x + 2y = -1')
ax.plot_surface(X, Y, Z3, alpha=0.5, color='green', label='-3y + 4 = 4')

# 축 레이블 추가
ax.set_xlabel('X-axis')
ax.set_ylabel('Y-axis')
ax.set_zlabel('Z-axis')

plt.title('Row Picture of Linear Equations')
plt.show()

Row picture

row picture로 위 선형방정식으로 좌표계를 그리게 되면, 위의 좌표계에 평면이 겹치는 영역이 나타나게 된다.

행렬이 선형 독립 관계(Linear independance)이기에, 모든 좌표를 해석할 수 있는 겹친 평면을 나타낼 수 있다.

 

그 다음 Column picture 관점은 아래와 같다.

# Column picture 관점에서의 선형 방정식 시각화
import numpy as np
import matplotlib.pyplot as plt
from mpl_toolkits.mplot3d import Axes3D

# 열 벡터 정의
col1 = np.array([2, -1, 0])   # 첫 번째 열 벡터
col2 = np.array([-1, 2, -3])  # 두 번째 열 벡터
col3 = np.array([0, -1, 4])   # 세 번째 열 벡터
b = np.array([0, -1, 4])      # b 벡터

# 3D 그래프 설정
fig = plt.figure(figsize=(8, 8))
ax = fig.add_subplot(111, projection='3d')

# 원점을 기준으로 벡터를 그림
ax.quiver(0, 0, 0, *col1, color='r', label='Column 1: (2, -1, 0)')
ax.quiver(0, 0, 0, *col2, color='g', label='Column 2: (-1, 2, -3)')
ax.quiver(0, 0, 0, *col3, color='b', label='Column 3: (0, -1, 4)')
ax.quiver(0, 0, 0, *b, color='purple', linestyle='dashed', label='b: (0, -1, 4)')

# 축 설정
ax.set_xlim([-3, 3])
ax.set_ylim([-3, 3])
ax.set_zlim([-3, 5])
ax.set_xlabel('X-axis')
ax.set_ylabel('Y-axis')
ax.set_zlabel('Z-axis')

# 범례 및 제목 추가
ax.legend()
plt.title('Column Picture: Linear Combination of Column Vectors')

plt.show()

위와 같이 column picture로 위 선형 방정식을 그리게 되면, vector를 통해서 표현된다. 따라서 아무리 차원이 높아지더라도, 축의 표현의 어려움이 있지만, 방정식을 벡터 간의 표현으로 생각하면 보다 생각하기 용이하다.