이 포스팅은 System Dynamics 시리즈 8 편 중 3 번째 글 입니다.

  • Part 1 - 01: 다물체 동역학 개론
  • Part 2 - 02: 평면에서 다물체계의 운동학
  • Part 3 - This Post
  • Part 4 - 04: 평면에서의 기구학
  • Part 5 - 05: 기구학적 제약
  • Part 6 - 06: Newton Raphson Method
  • Part 7 - 07: Computational Algorithm
  • Part 8 - 08: Newton-Euler Equations, D'Alembert's Principle
▼ 목록 보기

행렬의 종류에 대해서는 링크로 대체한다!

Types of Matrix

Orthogonality

두 벡터를 곱했을 때 수직! 자기 자신이 나온다.

\[\vec {a} \cdot \vec {b}\;=\;\vec {a}^T \vec {b}\;=\;0\]

자기 자신을 곱한다면 자기자신의 크기의 제곱이 나와야 한다.

\[\vec {a} \cdot \vec {a}\;=\;\vec {a}^T \vec {a}\;=\;|\vec {a}|^2\]

Orthonomality

여기서는 두 벡터가 단위 벡터이다! 따라서 자기 자신을 곱했을 때, 1이 나와야 한다.

\[\vec {a} \cdot \vec {a}\;=\;\vec {a}^T \vec {a}\;=\;1\]

사실 Orthogonal Matrix는 각 열(혹은 행) 벡터가 모두 단위 벡터일 때 정의를 만족한다!

Vector Differentiation

Scalar Function by Scalar

\[f \;=\;function \;of(q_1,q_2,\dots,q_n, t)\\ \;\\ q_i\;=\;g_i(t),\;\;i=1,2,3 \dots, n\]

이때 t에 대해 미분하면,

\[{df\over dt}\;=\;{\partial f\over \partial q_1}{dq_1\over dt}+{\partial f\over \partial q_2}{dq_2\over dt}+\dots+{\partial f\over \partial q_n}{dq_n\over dt}+{\partial f \over \partial t}\]

이를 벡터 형식으로 나타내면,

\[{df\over dt}\;=\;\begin{bmatrix} {\partial f\over \partial q_1} & {\partial f\over \partial q_2} & \dots & {\partial f\over \partial q_n}\\ \end{bmatrix} \begin{bmatrix} {dq_1\over dt}\\ {dq_2\over dt}\\ \vdots \\{dq_n\over dt}\\ \end{bmatrix} +{\partial f \over \partial t}\\\]

여기서 벡터로 표현된 녀석을 다음과 같이 표현하자.

\[\begin{bmatrix} {\partial f\over \partial q_1} & {\partial f\over \partial q_2} & \dots & {\partial f\over \partial q_n}\\ \end{bmatrix}={\partial f \over \partial \overset{\rightarrow}{q}}=f_{\overset{\rightarrow}{q}}\] \[\begin{bmatrix} {dq_1\over dt}\\ {dq_2\over dt}\\ \vdots \\{dq_n\over dt}\\ \end{bmatrix}={d \overset{\rightarrow}{q} \over dt}\]

그렇다면 위의 식은 다음과 같이 정리된다.

\[{df\over dt}\;=\;f_{\overset{\rightarrow}{q}}{d \overset{\rightarrow}{q} \over dt}+{df \over dt}\]

Vector Function by Scalar

벡터함수 f는 각각의 요소에 변수 (q1~qn, t) 를 갖는 스칼라 함수를 m개 갖는다고 하자.

\[f_1\;=\;f_1(q_1,q_2,\dots,q_n,t)\\ f_2\;=\;f_1(q_1,q_2,\dots,q_n,t)\\ f_3\;=\;f_1(q_1,q_2,\dots,q_n,t)\\ \vdots\\ f_m\;=\;f_n(q_1,q_2,\dots,q_n,t)\\ \;\\ \;\\ \overset{\rightarrow}{f}\;=\;[f_1\;f_2\;f_3\;\dots\;f_m]^T\]

그렇다면 이 함수를 스칼라 변수 t로 미분하면,

각각의 요소는,

\[{df_j\over dt}\;=\;{\partial f_j \over \partial \overset{\rightarrow}{q}}{d \overset{\rightarrow}{q} \over dt}+{df \over dt}\\ \;\\ \;\\ j\;=\;1,2,\dots, m\] \[{\partial f_j \over \partial \overset{\rightarrow}{q}}= \begin{bmatrix} {\partial f_j\over \partial q_1} & {\partial f_j\over \partial q_2} & \dots & {\partial f_j\over \partial q_n}\\ \end{bmatrix}\]

그렇다면, 벡터 함수를 t로 미분한 최종 결과는,

\[{d\overset{\rightarrow}{f} \over dt}\;=\;\begin{bmatrix} {df_1\over dt}\\ {df_2\over dt}\\ \vdots \\{df_n\over dt}\\ \end{bmatrix}\;= \begin{bmatrix} {\partial f_1\over \partial q_1} & \dots & {\partial f_1\over \partial q_n} \\\vdots\ & & \vdots\\ {\partial f_m\over \partial q_1} & \dots & {\partial f_m\over \partial q_n}\\ \end{bmatrix} \begin{bmatrix} {dq_1\over dt}\\ \vdots \\{dq_n\over dt}\\ \end{bmatrix} +\begin{bmatrix} {df_1 \over dt}\\ \vdots \\{df_m \over dt}\\ \end{bmatrix} \\\] \[{d\overset{\rightarrow}{f} \over dt}\;=\;{\partial\overset{\rightarrow}{f} \over \partial\overset{\rightarrow}{q}}{d\overset{\rightarrow}{q} \over dt} +{\partial\overset{\rightarrow}{f} \over \partial t}\]

여기서 행렬이 만들어진다는 것을 잊으면 안된다! 각각의 크기만 적어보면,

\[{d\overset{\rightarrow}{f} \over dt}\;=\;{\partial\overset{\rightarrow}{f} \over \partial\overset{\rightarrow}{q}}{d\overset{\rightarrow}{q} \over dt} +{\partial\overset{\rightarrow}{f} \over \partial t}\\ (m\times 1)=(m\times n)(n\times 1)+(m\times1)\]

Scalar Function by Vector

스칼라 함수를 스칼라로 미분하는 가장 위의 예에서, 함수 f를 벡터 q로 미분하면, 다음과 같다.

\[{d f \over d\overset{\rightarrow}{q}}\;=\;\begin{bmatrix} {d f\over d q_1} & {d f\over d q_2} & \dots & {d f\over d q_n}\\ \end{bmatrix}\]

Vector Function by Scalar

벡터 함수를 스칼라로 미분하는 두번째 예에서, 벡터 함수 f를 q1으로 미분한다면,

\[{d\overset{\rightarrow}{f} \over dq_1}\;=\;\begin{bmatrix} {d f_1\over d q_1} & {d f_1\over d q_1} & \dots & {d f_1\over d q_1}\\ \end{bmatrix}\]

정리

  1. 스칼라 함수를 스칼라로 미분하면 스칼라함수다.
  2. 스칼라 함수를 벡터 함수로 미분하면 1xn 벡터가 나온다.
  3. 벡터 함수를 스칼라로 미분하면 1xm 벡터가 나온다.
  4. 벡터 함수를 벡터로 미분하면 nxm 행렬이 나온다.

Skew-Symmetric Matrix Representation

Skew-Symmetric Matrix는 벡터의 외적을 사용해서 다르게 표현이 가능한데, 간단한 예를 들어 생각해보자.

\[\overset{\rightarrow}{a} \;=\;[a_1\;a_2\;a_3]^T\\ \overset{\rightarrow}{b} \;=\;[b_1\;b_2\;b_3]^T\\\]

이 두 벡터를 내적하면,

\[\overset{\rightarrow}{a}\times\overset{\rightarrow}{b}\;=\; \begin{bmatrix} a_2b_3-a_3b_2\\ -(a_1b_3-a_3b_1)\\ a_1b_2-a_2b_1 \end{bmatrix} =\begin{bmatrix} 0 & -a_3 & a_2\\ a_3 & 0 & -a_1\\ -a_2 & a_1 & 0 \end{bmatrix} \begin{bmatrix} b_1\\ b_2\\ b_3 \end{bmatrix}\;=\; { { \underset{=} {\overset{\sim}{a} } } } \cdot \overset{\rightarrow}{b}\]

외적 식을 b벡터를 활용해서 나타내면 다음과 같이 나타낼 수 있다. 이때 중간에 skew-symmetric matrix 가 나오고, a 벡터가 왼쪽에 놓인 외적을 수행했을 때 발생하는 행렬을 위와 같이 표현했다. 마찬가지로, b벡터에 대해 하면,

\[\overset{\rightarrow}{a}\times\overset{\rightarrow}{b}\;=\;\begin{bmatrix} 0 & -b_3 & b_2\\ b_3 & 0 & -b_1\\ -b_2 & b_1 & 0 \end{bmatrix} \begin{bmatrix} a_1\\ a_2\\ a_3 \end{bmatrix}\;=\; { { \underset{=} {\overset{\sim}{b} } } } \cdot \overset{\rightarrow}{a}\]

이와 같다.

Property

a 의 단위벡터와 a 벡터를 외적하면, 0이다.

\[\hat{\overset{\rightarrow}{a}}\;\times \;\overset{\rightarrow}{a}\;=\; -\overset{\rightarrow}{a}\;\times \;\hat{\overset{\rightarrow}{a}}\;=\; \overset{\rightarrow}{0}\]

이 표현을 Skew-symmetric Matrix를 써서 표현하면,

\[-\overset{\rightarrow}{a}\;\times \;\hat{\overset{\rightarrow}{a}}\;=\; -{ { \underset{=} {\overset{\rightarrow}{a} } } } \cdot \hat{\overset{\rightarrow}{a}}\;=\; {\overset{\rightarrow}{0}}\]

Skew-Symmetric Matrix 의 특징을 사용하면,

\[-{ { \underset{=} {\overset{\rightarrow}{a} } } }\;=\;{ {\underset{= }{\overset{\rightarrow}{a} } } }^T\] \[-{ { \underset{=} {\overset{\rightarrow}{a} } } } \cdot \hat{\overset{\rightarrow}{a}}\;=\;{ { \underset{=} {\overset{\rightarrow}{a} } } }^T\cdot \hat{\overset{\rightarrow}{a}}\;=\;{\overset{\rightarrow}{0}}\]

역학에서 사용예

시스템 내에서 역학적 Joint 에서 위치 벡터와의 관계는 다음과 같이 빈번하게 묘사된다.

\[\overset{\rightarrow}{a}\times\overset{\rightarrow}{x}\;=\;\overset{\rightarrow}{0}\]

즉, a 벡터와 x 벡터가 수직임을 나타낸다. 수직인 벡터는 무수하게 많이 나온다는 점을 기억한 상태로 다음을 보자. Skew-symmetric Matrix를 사용해서 나타내면,

\[{ { \underset{=} {\overset{\sim}{a} } } } \cdot \overset{\rightarrow}{x}\;=\;\overset{\rightarrow}{0}\\ \;\\ \;\\ { { \underset{=} {\overset{\sim}{a} } } }\;=\; \begin{bmatrix} 0 & -a_3 & a_2\\ a_3 & 0 & -a_1\\ -a_2 & a_1 & 0 \end{bmatrix}\]

a 행렬에 대해 Determinant를 구해보면, 0이다. 즉, a 행렬은 특이 행렬이다. 즉, Rank가 matrix size보다 작다. 즉, x 벡터는 하나로 결정되지 못한다.

Jacobi’s Theorem

\[det({ { \underset{=} {\overset{\sim}{a} } } })\;=\;\overset{\rightarrow}{0}\\\]

Determinant 의 성질에 의해서,

\[det({ { \underset{=} A} })\;=\;det({ { \underset{=} A^T} })\] \[det({ { \underset{=} {\overset{\sim}{a} } } }^T)\;=\; det(-{ { \underset{=} {\overset{\sim}{a} } } })\;=\; (-1)^ndet({ { \underset{=} {\overset{\sim}{a} } } })\]

이 때 n이 짝수이게 되면, 양쪽 식의 값이 동치가 되어 det(a)의 값은 부정이다. 따라서 n의 값은 홀수여야 한다. 즉, Skew-symmetric Matrix의 행렬식의 값이 0이 되려면, 행렬의 size가 홀수 차원이어야 한다.