Takuya Kawanishi

4. 行列の計算・行列式・固有値・固有ベクトル

4.1 行列式・固有値・固有ベクトル

定義

  • 行列 \(A \in \mathbb R^{n \times n}\)\(n\) は正の整数)が与えられたとき,

    \[A \boldsymbol x = \lambda \boldsymbol x, \quad \boldsymbol x \ne 0\]

    を満たす \(\lambda \in \mathbb C\)\(A\) の固有値, \(\boldsymbol x\) を固有ベクトルという.

Example 1

\[\begin{split}A = \begin{bmatrix} 2 & 0 \\ 0 & 3 \end{bmatrix}\end{split}\]

の行列式, 固有値と固有ベクトルを求めよ.

Example 1, Solution

[1]:
import numpy as np

aa = np.array([[2, 0], [0, 3]])
print(np.linalg.det(aa))
print(np.trace(aa))
print(np.linalg.eig(aa))
6.0
5
(array([2., 3.]), array([[1., 0.],
       [0., 1.]]))
  • \(\det A = 6\).

  • \(\operatorname{trace} A = 5\).

  • 固有値は 2, 3.

  • 固有ベクトルは

    \[\begin{split}\begin{bmatrix} 1 \\ 0 \end{bmatrix}, \quad \begin{bmatrix} 0 \\ 1 \end{bmatrix}\end{split}\]

Example 2

  • 次の行列の固有値と固有ベクトルを求めよ.

\[\begin{split}A = \begin{bmatrix} 2 & 1 \\ 0 & 2 \end{bmatrix}, \quad B = \begin{bmatrix} 2 & 1 \\ 0 & 3 \end{bmatrix}, \quad C = \begin{bmatrix} 1 & -1 \\ 1 & 2 \end{bmatrix}\end{split}\]

Example 2, Solution

  • \(A\) は Jordan 標準形

  • 固有ベクトルは 1 つである.

    \[\begin{split}\begin{bmatrix} 1 \\ 0 \end{bmatrix}\end{split}\]
  • このようなとき, 系は(行列は, 固有値は, 固有ベクトルは)縮退しているという.

  • 行列 \(B\) は縮退していない, 固有ベクトルが 2 つある.

    \[\begin{split}\begin{bmatrix} 1 \\ 0\end{bmatrix}, \quad \begin{bmatrix} 1 \\ 1 \end{bmatrix}\end{split}\]
  • 行列 C の固有値, 固有ベクトルは虚数である.

  • \(\lambda = 3/2 \pm i \sqrt{3}/2\)

\[\begin{split}\boldsymbol p_1 = \begin{bmatrix} -\sqrt 2 / 4 + i \sqrt 6 / 4 \\ \sqrt 2 / 2 \end{bmatrix}, \quad \boldsymbol p_2 = \begin{bmatrix} -\sqrt 2 / 4 - i \sqrt 6 / 4 \\ \sqrt 2 / 2 \end{bmatrix}\end{split}\]
[2]:
aa = [[2, 1], [0, 2]]
np.linalg.eig(aa)
[2]:
(array([2., 2.]),
 array([[ 1.0000000e+00, -1.0000000e+00],
        [ 0.0000000e+00,  4.4408921e-16]]))
[3]:
bb = np.array([[2, 1], [0, 3]])
np.linalg.eig(bb)
[3]:
(array([2., 3.]),
 array([[1.        , 0.70710678],
        [0.        , 0.70710678]]))
[4]:
cc = [[1, -1], [1, 2]]
np.linalg.eig(cc)
[4]:
(array([1.5+0.8660254j, 1.5-0.8660254j]),
 array([[-0.35355339+0.61237244j, -0.35355339-0.61237244j],
        [ 0.70710678+0.j        ,  0.70710678-0.j        ]]))

Example 3

  • \(\boldsymbol a\), \(\boldsymbol b\) の内積, dot product を求めよ.

    \[\boldsymbol a = [1, 2]^\mathrm T, \quad \boldsymbol b = [2, 3]^\mathrm T\]

Example 3, Solution

[5]:
a = [1, 2]
b = [2, 3]
print(np.inner(a, b))
print(np.dot(a, b))
# print(np.einsum('i,j->i', a, b))
8
8

Example 4

  • 次の行列 \(P\), \(Q\) の内積, dot product 行列の積を求めよ.

    \[\begin{split}P = \begin{bmatrix} 1 & 2 \\ 3 & 4 \end{bmatrix}, \quad Q = \begin{bmatrix} 2 & 2 \\ 1 & 3 \end{bmatrix}\end{split}\]

Example 4, Solution

[6]:
pp = np.array([[1, 2], [3, 4]])
qq = np.array([[2, 2], [1, 3]])

# print(np.inner(pp, a))
# print(np.dot(pp, a))
# print(np.matmul(pp, a))
print(np.inner(pp, qq))
print(np.dot(pp, qq))
print(np.matmul(pp, qq))
print(np.einsum('ij, jk->ik', pp, qq))
[[ 6  7]
 [14 15]]
[[ 4  8]
 [10 18]]
[[ 4  8]
 [10 18]]
[[ 4  8]
 [10 18]]

Example 5*

  • 次の微分方程式の解をグラフにせよ.

    \[\begin{split}\frac{d \boldsymbol x}{d t} = A \boldsymbol x, \quad A = \begin{bmatrix} -0.5, & 1 \\ 0 & -1 \end{bmatrix},\end{split}\]
  • 初期値にはつぎのデータを用いよ.

    x_0s = [
        [1, 1], [1, 0], [1, -1], [0, -1],
        [-1, -1], [-1, 0], [-1, 1], [0, 1],
        [1, -.25], [1, -.5], [1, -.75],
        [-1, .25], [-1, .5], [-1, .75]
    ]
    

Example 5, Solution

[7]:
import matplotlib.pyplot as plt
import scipy.linalg

fig, ax = plt.subplots(figsize=(3, 3), dpi=96)

dd = np.array([[-.5, 1], [0, -1]])


x_0s = [
  [1, 1], [1, 0], [1, -1], [0, -1],
  [-1, -1], [-1, 0], [-1, 1], [0, 1],
  [1, -.25], [1, -.5], [1, -.75],
  [-1, .25], [-1, .5], [-1, .75]
]
nts = 100
ts = np.linspace(0, 10, nts)
for x_0 in x_0s:
    xts = []
    for t in ts:
        xts.append(np.matmul(scipy.linalg.expm(t * dd), x_0))

    xts = np.array(xts)
    #print(xts)
    ax.plot(xts[:, 0], xts[:, 1])

plt.savefig('cc.png')
plt.show()


../_images/exercise_process_engineering_2021_exercises_040_renum_23_0.png

Exercise 1

  • Find the eigenvalues and eigenvectors of the following matrix.

    \[\begin{split}A = \begin{bmatrix} 2 & -1 \\ 1 & 2 \end{bmatrix}\end{split}\]
    \[\begin{split}B = \begin{bmatrix} 1 & 1 \\ 0 & 1 \end{bmatrix}\end{split}\]
    \[\begin{split}C = \begin{bmatrix} 1 & - 1 \\ 1 & 1 \end{bmatrix}\end{split}\]
    \[\begin{split}D = \begin{bmatrix} 1 & 1 \\ 1 & 1 \end{bmatrix}\end{split}\]

Exercise 2(オプショナル)

  • 次の微分方程式の解をグラフにせよ.

    \[\begin{split}\frac{d \boldsymbol x}{d t} = A \boldsymbol x, \quad A = \begin{bmatrix} -0.5, & 1 \\ 0 & -0.5 \end{bmatrix},\end{split}\]
  • 初期値は x_0 = [1, 1] とせよ.

  • (オプショナル)初期値にはつぎのデータを用いよ.

    x_0s = [
        [1, 1], [1, 0], [1, -1], [0, -1],
        [-1, -1], [-1, 0], [-1, 1], [0, 1],
        [1, -.25], [1, -.5], [1, -.75],
        [-1, .25], [-1, .5], [-1, .75]
    ]
    

Exercise 3

  • 次の行列の行列式, 固有値, 固有ベクトルを求めよ.

\[\begin{split}A = \begin{bmatrix} 1 & 2 & 1 & 3 \\ 2 & -2 & -7 & 3 \\ 3 & 1 & 2 & 6 \\ 2 & 2 & 4 & -1 \end{bmatrix}\end{split}\]
  • \(e^{tA}\) はどの固有ベクトルに沿って発散し, どの固有ベクトルに沿って 0 に近づくか.