2024. 9. 30. 00:29ㆍAPPLIED/선형대수학(Linear Algebra)
내적의 구성 성분은 두 벡터 또는 두 행렬의 특정 행과 열 간의 곱셈을 통해 생성되는 값들을 나타내며 두 벡터 간의 관계를 정량화하는 방식이다.
내적은 주로 두 벡터 간의 계산을 통해 이루어지며, 각 벡터는 특정한 크기와 방향을 가지고 있다.
- 예를 들어, 벡터 \( \mathbf{u} \)와 \( \mathbf{v} \)가 있을 때, 내적은
\[
\mathbf{u} \cdot \mathbf{v} = \sum_{i=1}^{n} u_i v_i
\]
- 여기서 \( n \)은 벡터의 차원이며, \( u_i \)와 \( v_i \)는 각각의 성분이다.
행렬의 내적
- 행렬 곱셈에서 내적은 두 행렬 간의 특정 행과 열 간의 상호작용으로 이해될 수 있다.
- 예를 들어, 행렬 \( A \)의 \( i \)-번째 행과 행렬 \( B \)의 \( j \)-번째 열 간의 내적은 다음과 같이 계산된다:
\[
C[i, j] = A[i, 1] \cdot B[1, j] + A[i, 2] \cdot B[2, j] + A[i, 3] \cdot B[3, j]
\]
\
각 성분 간의 관계
- 내적을 계산할 때, 각각의 성분 \( A[i, k] \)와 \( B[k, j] \)는 내적의 구성 성분으로 작용한다.
내적의 구성 성분은 두 벡터 또는 행렬 간의 곱셈을 통해 생성되는 개별 성분을 의미하며 성분 간의 관계를 정량화하고, 최종적으로 결과를 생성하여 각 성분의 곱이 어떻게 최종 결과에 영향을 미치는지를 이해하는 데 중요하다.
1. 행렬 곱셈 규칙:
- 행렬 \( A \)의 행(row)와 행렬 \( B \)의 열(column)을 곱할 때, \( A \)의 한 행과 \( B \)의 한 열에 있는 대응되는 요소들을 곱하고, 그 결과를 더해서 최종 값을 얻다. 이를 내적이라고 부른다.
2. 내적 계산:
- 행렬 곱셈에서 \( C[i, j] \)는 \( A \)의 \( i \)-번째 행과 \( B \)의 \( j \)-번째 열의 요소들 간의 곱셈의 합으로 계산된다.
- 여기서 \( k \)는 \( A \)의 열(column)과 \( B \)의 행(row)을 순차적으로 선택하여 곱하는 인덱스이다. 즉, \( A[i, k] \)와 \( B[k, j] \)를 각각 선택하여 곱하는 과정이다.
만약 \( A \)가 \( 2 \times 3 \) 행렬이고, \( B \)가 \( 3 \times 2 \) 행렬이면, 두 행렬을 곱할 때 각 요소는 다음과 같은 형태로 계산된다:
\[
C[i, j] = \sum_{k=0}^{2} A[i, k] \times B[k, j]
\]
- \( A[i, 0] \times B[0, j] \)
- \( A[i, 1] \times B[1, j] \)
- \( A[i, 2] \times B[2, j] \)
import numpy as np
import matplotlib.pyplot as plt
# 행렬 A와 B 정의
A = np.array([[1, -3, 0], [7, 5, 9]])
B = np.array([[0, 4], [1, 0], [2, 8]])
# 행렬 곱셈 C = A * B
C = np.dot(A, B)
# 내적 표현을 위한 그래프 준비
fig, ax = plt.subplots()
# 각 행/열 간의 상호작용을 화살표로 시각화
rows_A = ['A의 1행', 'A의 2행']
cols_B = ['B의 1열', 'B의 2열']
# 각 값이 어떻게 계산되는지를 보여주는 히트맵 스타일의 시각화 생성
ax.imshow(np.abs(C), cmap='Blues', interpolation='nearest')
# 히트맵에 텍스트 주석 추가
for i in range(C.shape[0]):
for j in range(C.shape[1]):
ax.text(j, i, f'{C[i, j]:.0f}', ha='center', va='center', color='black')
# 축 레이블 설정
ax.set_xticks([0, 1])
ax.set_yticks([0, 1])
ax.set_xticklabels(cols_B)
ax.set_yticklabels(rows_A)
# 그래프 제목 설정
plt.title('행렬 곱셈: A * B (내적 시각화)')
plt.show(), C
■ 각각의 화살표 내적 구성
import numpy as np
import matplotlib.pyplot as plt
A = np.array([[1, -3, 0], [7, 5, 9]])
B = np.array([[0, 4], [1, 0], [2, 8]])
C = np.dot(A, B)
fig, ax = plt.subplots() # 그림 전체와 축
colors = ['r', 'g', 'b']
rows_A = ['Row 1 of A', 'Row 2 of A']
cols_B = ['Col 1 of B', 'Col 2 of B']
# 화살표 시작위치
positions = [[-1, 1], [1, 1], [0, -2]]
# 내적
for i in range(A.shape[0]): # 행 반복
for j in range(B.shape[1]):
for k in range(A.shape[1]): # 각 행의 열과 각 열의 행 반복
start = np.array(positions[i]) # 화살표 시작 좌표
end = start + np.array([B[k, j], A[i, k]]) # start에서 추가적인 이동
ax.annotate('', xy=end, xytext=start,
arrowprops=dict(facecolor=colors[k], shrink=0.05, width=0.05))
midpoint = (start + end) / 2 # 중간 지점 계산
ax.text(midpoint[0], midpoint[1], f'{A[i, k]}*{B[k, j]}', fontsize=10, ha='center')
# x축과 y축 범위 설정
ax.set_xlim(-3, 3)
ax.set_ylim(-4, 4)
ax.set_aspect('equal')
ax.set_xticks([])
ax.set_yticks([])
plt.title('Graphical Representation of Matrix Multiplication A * B')
plt.show()
- 화살표: 각각의 화살표는 A의 행과 B의 열이 어떻게 상호작용하는지
'APPLIED > 선형대수학(Linear Algebra)' 카테고리의 다른 글
벡터의 사영(projection) (0) | 2024.09.29 |
---|---|
직교기저(Orthogonal Basis) (0) | 2024.09.29 |
고유치와 고유벡터 (0) | 2024.04.10 |