스칼라 곱셈

스칼라 곱셈은 행렬의 각 원소에 대해 동일한 스칼라 값을 곱하는 연산을 말한다. 주어진 행렬 \mathbf{A}와 스칼라 값 c가 있을 때, \mathbf{B} = c\mathbf{A}라는 연산이 성립하며, 이때 \mathbf{B}의 각 원소는 \mathbf{A}의 각 원소에 c를 곱한 값이다. 수식으로 나타내면 다음과 같다:

\mathbf{B} = c \mathbf{A}, \quad \mathbf{B}_{ij} = c \cdot \mathbf{A}_{ij}

여기서 \mathbf{A}m \times n 크기의 행렬이라면, \mathbf{B} 역시 m \times n 크기의 행렬이 되며, 각 원소는 다음과 같은 방식으로 계산된다.

예를 들어, \mathbf{A}가 다음과 같은 2 \times 2 행렬이라고 가정하자.

\mathbf{A} = \begin{pmatrix} a_{11} & a_{12} \\ a_{21} & a_{22} \end{pmatrix}

이때, 스칼라 c를 곱하면 새로운 행렬 \mathbf{B}는 다음과 같이 계산된다.

\mathbf{B} = c \mathbf{A} = \begin{pmatrix} c \cdot a_{11} & c \cdot a_{12} \\ c \cdot a_{21} & c \cdot a_{22} \end{pmatrix}

Eigen 라이브러리에서 스칼라 곱셈은 매우 직관적으로 이루어진다. 행렬 \mathbf{A}에 대해 스칼라 값을 곱하는 연산은 다음과 같이 수행된다.

MatrixXd A(2,2);
A << a11, a12, a21, a22;
double c = 3.0;
MatrixXd B = c * A;

이 코드에서는 행렬 \mathbf{A}의 각 원소에 대해 스칼라 c가 곱해져 행렬 \mathbf{B}가 계산된다.

스칼라 나눗셈

스칼라 나눗셈은 스칼라 곱셈의 역연산으로, 행렬의 각 원소에 동일한 스칼라 값을 나누는 연산이다. 스칼라 값 c와 행렬 \mathbf{A}에 대해, 나눗셈 결과 \mathbf{B} = \frac{\mathbf{A}}{c}는 다음과 같은 형태로 정의된다:

\mathbf{B} = \frac{\mathbf{A}}{c}, \quad \mathbf{B}_{ij} = \frac{\mathbf{A}_{ij}}{c}

여기서도 \mathbf{A}m \times n 크기의 행렬이라면, \mathbf{B} 역시 m \times n 크기의 행렬이 되며, 각 원소는 다음과 같이 계산된다.

\mathbf{B} = \begin{pmatrix} \frac{a_{11}}{c} & \frac{a_{12}}{c} \\ \frac{a_{21}}{c} & \frac{a_{22}}{c} \end{pmatrix}

예를 들어, \mathbf{A}가 다음과 같다면:

\mathbf{A} = \begin{pmatrix} 4 & 8 \\ 12 & 16 \end{pmatrix}

스칼라 c = 4로 나누면:

\mathbf{B} = \begin{pmatrix} \frac{4}{4} & \frac{8}{4} \\ \frac{12}{4} & \frac{16}{4} \end{pmatrix} = \begin{pmatrix} 1 & 2 \\ 3 & 4 \end{pmatrix}

Eigen 라이브러리에서는 스칼라 나눗셈도 매우 간단하게 구현된다. 다음과 같이 작성할 수 있다.

MatrixXd A(2,2);
A << 4, 8, 12, 16;
double c = 4.0;
MatrixXd B = A / c;

이 코드는 \mathbf{A}의 각 원소에 대해 스칼라 c로 나눗셈을 수행하여 \mathbf{B}를 계산한다.

스칼라 연산의 성질

스칼라 곱셈 및 나눗셈은 여러 가지 성질을 만족한다. 대표적인 성질은 다음과 같다.

결합 법칙

스칼라 곱셈은 결합 법칙을 만족한다. 즉, 두 스칼라 값 c_1, c_2와 행렬 \mathbf{A}에 대해:

c_1 (c_2 \mathbf{A}) = (c_1 c_2) \mathbf{A}

이는 연산 순서와 관계없이 같은 결과를 얻을 수 있음을 의미한다.

분배 법칙

스칼라 곱셈은 행렬 덧셈에 대해 분배 법칙을 만족한다. 두 행렬 \mathbf{A}, \mathbf{B}와 스칼라 c에 대해 다음과 같은 관계가 성립한다.

c(\mathbf{A} + \mathbf{B}) = c\mathbf{A} + c\mathbf{B}

즉, 스칼라 값을 행렬 덧셈 연산에 분배하여 곱할 수 있다.

또한, 스칼라 덧셈에 대해서도 다음과 같은 분배 법칙이 성립한다.

(c_1 + c_2)\mathbf{A} = c_1\mathbf{A} + c_2\mathbf{A}

위의 성질들은 스칼라 곱셈 및 나눗셈에서 매우 중요한 특성들로, 연산의 순서를 변경하거나 묶어 처리할 때 매우 유용하다.

항등 행렬과 스칼라 곱셈

항등 행렬 \mathbf{I}는 스칼라 곱셈 연산에서 특별한 성질을 갖는다. 스칼라 c와 항등 행렬 \mathbf{I}에 대해 다음과 같은 성질이 성립한다.

c\mathbf{I} = \mathbf{I}c

여기서 항등 행렬은 모든 대각 원소가 1인 정사각 행렬로 정의된다. 예를 들어, 2 \times 2 항등 행렬은 다음과 같다.

\mathbf{I} = \begin{pmatrix} 1 & 0 \\ 0 & 1 \end{pmatrix}

스칼라 c를 곱하면:

c \mathbf{I} = \begin{pmatrix} c & 0 \\ 0 & c \end{pmatrix}

Eigen 라이브러리에서 항등 행렬에 스칼라를 곱하는 것은 다음과 같이 간단하게 구현할 수 있다.

MatrixXd I = MatrixXd::Identity(2, 2);
double c = 3.0;
MatrixXd B = c * I;

이 코드는 항등 행렬에 스칼라를 곱한 결과를 행렬 \mathbf{B}에 저장한다.

스칼라 연산의 역 연산

스칼라 나눗셈은 스칼라 곱셈의 역 연산으로 간주될 수 있다. 즉, 스칼라 c로 나누는 것은 \frac{1}{c}를 곱하는 것과 동치이다. 이를 수식으로 나타내면 다음과 같다.

\frac{\mathbf{A}}{c} = \frac{1}{c} \mathbf{A}

이 성질은 특히 스칼라 값이 작은 경우 유용하며, 행렬의 각 원소를 개별적으로 나누기보다는 역수의 곱셈으로 처리할 수 있다는 장점이 있다. 예를 들어, c = 2인 경우:

\frac{\mathbf{A}}{2} = \frac{1}{2} \mathbf{A}

따라서 두 방법은 동일한 결과를 산출한다.

Eigen 라이브러리에서도 스칼라 나눗셈을 역수의 곱셈으로 처리할 수 있다. 예를 들어, 다음과 같이 작성할 수 있다.

MatrixXd A(2, 2);
A << 4, 8, 12, 16;
double c = 2.0;
MatrixXd B = A * (1.0 / c);

위 코드는 행렬 \mathbf{A}의 각 원소를 c로 나누는 대신, c의 역수를 곱하여 계산하는 방법을 보여준다.

스칼라와의 다른 연산 차이점

스칼라 곱셈과 행렬 곱셈은 본질적으로 다른 연산이라는 점을 강조해야 한다. 스칼라 곱셈은 행렬의 모든 원소에 대해 동일한 스칼라 값을 곱하는 연산이다. 반면, 행렬 곱셈은 두 행렬 간의 원소들을 결합하여 새로운 행렬을 만드는 복잡한 연산이다.

행렬 곱셈의 정의는 다음과 같다. 주어진 두 행렬 \mathbf{A}\mathbf{C}가 각각 m \times n, n \times p 크기를 가질 때, 행렬 곱 \mathbf{A}\mathbf{C}m \times p 크기의 새로운 행렬을 생성하며, 각 원소는 다음과 같이 계산된다:

(\mathbf{A} \mathbf{C})_{ij} = \sum_{k=1}^{n} \mathbf{A}_{ik} \mathbf{C}_{kj}

이는 두 행렬의 각 행과 열에 있는 값들을 곱하여 합산한 결과로, 단순한 스칼라 곱셈과는 다른 연산이다. 특히, 행렬 곱셈은 결합 법칙을 만족하지만 교환 법칙은 성립하지 않는다. 즉, 일반적으로 \mathbf{A} \mathbf{B} \neq \mathbf{B} \mathbf{A}이다.

반면, 스칼라 곱셈은 교환 법칙을 만족한다. 스칼라 c와 행렬 \mathbf{A}에 대해 다음이 성립한다:

c \mathbf{A} = \mathbf{A} c

이는 스칼라 곱셈이 행렬의 각 원소에 대해 독립적으로 적용되기 때문이다. 이처럼 스칼라 곱셈과 행렬 곱셈은 계산 방식과 성질에서 차이가 있으며, 서로 다른 목적을 가지고 사용된다.

따라서, 스칼라 곱셈과 나눗셈은 행렬 연산의 기본적인 구성 요소로, 연산이 단순하고 직관적이지만, 행렬 곱셈은 더 복잡한 연산으로 다양한 응용에서 필수적인 역할을 한다.