練習問題 メモ 4

Contents

練習問題 メモ 4#

4.1#

次の1~3の行列の階数標準形および階数(rank)を求めよ

1.#

  1. (123456)

行ベクトルを

(a1a2a3)

とする

  1. a2=a2+(2)×a1

import numpy as np
A = np.array([
    [1, 2],
    [3, 4],
    [5, 6],
])
# 1行目を-2倍して2行目に加える
A[1, :] += A[0, :] * (-2)
A
array([[1, 2],
       [1, 0],
       [5, 6]])
# 1行目を-3倍して3行目に加える
A[2, :] += A[0, :] * (-3)
A
array([[1, 2],
       [1, 0],
       [2, 0]])
# 3行目を(1/2)倍する
A[2, :] = (1 / 2) * A[2, :]
A
array([[1, 2],
       [1, 0],
       [1, 0]])
# 2行目を-1倍して3行目に加える
A[2, :] += A[1, :] * (-1)
A
array([[1, 2],
       [1, 0],
       [0, 0]])
# 2行目を-1倍して1行目に加える
A[0, :] += A[1, :] * (-1)
A
array([[0, 2],
       [1, 0],
       [0, 0]])
# 1行目を(1/2)倍する
A[0, :] = (1 / 2) * A[0, :]
A
array([[0, 1],
       [1, 0],
       [0, 0]])
# 1行目と2行目を入れ替える
a1 = A[0, :].copy()
a2 = A[1, :].copy()
A[0, :] = a2
A[1, :] = a1
A
array([[1, 0],
       [0, 1],
       [0, 0]])

2.#

(010101010)
import numpy as np
A = np.array([
    [0, 1, 0],
    [1, 0, 1],
    [0, 1, 0],
])
# 1行目を-1倍して3行目に加える
A[2, :] += (-1) * A[0, :]
A
array([[0, 1, 0],
       [1, 0, 1],
       [0, 0, 0]])
# 0列目を-1倍して3列目に加える
A[:, 2] += (-1) * A[:, 0]
A
array([[0, 1, 0],
       [1, 0, 0],
       [0, 0, 0]])
# 1行目と2行目を入れ替える
a1 = A[0, :].copy()
a2 = A[1, :].copy()
A[0, :] = a2
A[1, :] = a1
A
array([[1, 0, 0],
       [0, 1, 0],
       [0, 0, 0]])

3.#

(a111a111a)

わからなかった

from sympy import Symbol, Matrix

a = Symbol("a")
A = Matrix([
    [a, 1, 1],
    [1, a, 1],
    [1, 1, a],
])
A
[a111a111a]
# 1行目と2行目を入れ替える
a1 = A[0, :].copy()
a2 = A[1, :].copy()
A[0, :] = a2
A[1, :] = a1
A
[1a1a1111a]
A[1, :] += -a * A[0, :]
A
[1a101a21a11a]
A[2, :] += -1 * A[0, :]
A
[1a101a21a01aa1]

未知の変数があって最終的なランクが変わりうる → 場合分けする

もしa=1なら

(1a101a21a01aa1)=(11101121101111)=(111000000)

列基本変形(列で引き算)して

(100000000)

→ rank=1

もしa1なら

(1a101a21a01aa1)
A[:, 2] += 1 * A[:, 1]
A
[1aa+101a2a2a+201a0]
A[:, 1] += -1 * A[:, 2]
A
[11a+10a1a2a+201a0]
A[1, :] += A[2, :]
A
[11a+100a2a+201a0]
a1 = A[1, :].copy()
a2 = A[2, :].copy()
A[1, :] = a2
A[2, :] = a1
A
[11a+101a000a2a+2]
A[1, :] += A[2, :]
A
[11a+101aa2a+200a2a+2]
A[:, 2] += 1 * A[:, 1]
A
[11a01aa22a+300a2a+2]
A[:, 1] += -a * A[:, 0]
A[:, 2] += -1 * A[:, 0]
A
[1a1a101aa22a+300a2a+2]
A[1, :] += -1 * A[2, :]
A
[1a1a101a1a00a2a+2]
A[1, :] = (1/a) * A[1, :]
A
[1a1a101aa1aa00a2a+2]
A[1, 1] = -a + 1
A[1, 2] = (2/a) - 2
A
[1a1a101a2+2a00a2a+2]
A[2, :] - A[1, :]
[0a1a2a+42a]
A[:, 1] += 1 * A[:, 2]
A
[12a10a1+2a2+2a0a2a+2a2a+2]
A[2, :] += -((1-a)/(1-a**2)) * A[1, :]
A
[12a10a1+2a2+2a0a2a(1a)(a1+2a)1a2+2a2a(2+2a)(1a)1a2+2]
A[2, :] = (1+a)/((-1+a)*(2+a)) * A[2, :]
A
[12a10a1+2a2+2a0(a+1)(a2a(1a)(a1+2a)1a2+2)(a1)(a+2)(a+1)(a2a(2+2a)(1a)1a2+2)(a1)(a+2)]
Matrix([
[1, 0, 1+a],
[0 ,1, -1],
[0, 0, 2+a]
])
[10a+101100a+2]

a=2のとき

a2のとき

掃き出し法計算機 - Wolfram|Alpha

4.2#

次の問に答えよ。

  1. 2次の正方行列に対する階数標準形をすべて書け

(0000)=O2,(1000),(1001)=E2
  1. 2次の正方行列に対する階段行列をすべて書け。なお、任意の数は*を用いて表せ。

=0の状況も考えて1とおくと

(0000),(100),(101)