ベクトルは数の並びである
ベクトルとは、順番に意味のある数を並べたものです。足す、何倍かにする、長さを測る、という3つの計算で、たくさんの数をまとめて扱えます。
貸し自転車の店の1日は、気温、雨量、貸出台数の3つの数で表せます。この3つの並びが、1つのベクトルです。
このレッスンのゴール
メモ
ベクトルを足し、何倍かにし、長さを求めることができる。
キーワード
| ことば | いみ | れい |
|---|---|---|
| ベクトル | 順番に意味のある数の並び | [12, 0] |
| 成分 | ベクトルに入っている1つ1つの数 | |
| スカラー | ベクトルに掛ける、ふつうの1つの数 | |
| 長さ | 原点からベクトルの先までの距離。ノルムともいう | |
| 単位ベクトル | 長さが 1 のベクトル |
学生が入力するセルは、このプレビューでは空白です。
足し算は同じ位置どうしで行う
ベクトルの足し算は、同じ位置の成分どうしを足します。スカラー倍は、すべての成分に同じ数を掛けます。
ベクトルの足し算を2で割ると、平均のベクトルが得られます。2日分の記録の「ふつうの日」を、1回の計算で出せます。
例: 2日の記録を計算する
| 計算 | 手順 | 結果 |
|---|---|---|
| 月曜 | 気温 12、雨量 0 | [12, 0] |
| 火曜 | 気温 8、雨量 5 | [8, 5] |
| 足し算 | [12 + 8, 0 + 5] | [20, 5] |
| 3倍 | [3 × 12, 3 × 0] | [36, 0] |
| 平均 | 足し算を 2 で割る | [10, 2.5] |
学生が入力するセルは、このプレビューでは空白です。
ベクトルを足して、何倍かにする
# 月曜と火曜の記録です。成分は、気温と雨量の順に並べます。
monday = [12, 0]
tuesday = [8, 5]
total = []
for i in range(len(monday)):
total.append(monday[i] + tuesday[i])
print("2日の合計:", total)
tripled = []
for x in monday:
tripled.append(3 * x)
print("3倍した月曜:", tripled)
# tuesday を [8, 5, 1] に変えると、結果はどうなりますか。
NumPy で同じ計算をする
docker exec jupyter python3 -c "import numpy as np; a = np.array([12, 0]); b = np.array([8, 5]); print(a + b, 3 * a, (a + b) / 2)"ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
1日の記録をベクトルとして見る
docker exec jupyter python3 -c "import numpy as np; d = np.genfromtxt('hires.csv', delimiter=',', skip_header=1, usecols=(4, 5, 6)); print(d[0], d.shape)"ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
ベクトルの長さは2乗の和の平方根
ベクトルの長さは、原点から先までの距離です。成分を2乗して足し、平方根を取ります。
長さで割ると、向きは同じで長さが 1 のベクトルになります。これが単位ベクトルで、向きだけを取り出す方法です。
例: 3つのベクトルの長さ
| ベクトル | 2乗の和 | 長さ | 単位ベクトル |
|---|---|---|---|
| [3, 4] | 9 + 16 = 25 | 5 | [0.6, 0.8] |
| [6, 8] | 36 + 64 = 100 | 10 | [0.6, 0.8] |
| [5, 12] | 25 + 144 = 169 | 13 | [5/13, 12/13] |
| [1, 2, 2] | 1 + 4 + 4 = 9 | 3 | [1/3, 2/3, 2/3] |
学生が入力するセルは、このプレビューでは空白です。
よくある間違い
注意
多くの人は、長さを成分の合計だと考えます。[3, 4] の合計は 7 ですが、長さは 5 です。長さは、必ず2乗して足してから平方根を取ります。
長さを計算する
# 成分を2乗して足し、平方根を取ると、ベクトルの長さになります。
v = [6, 8]
squares = 0
for x in v:
squares = squares + x * x
print("2乗の合計:", squares)
print("長さ:", squares ** 0.5)
# v を [5, 12] に変えて、長さを予想してから実行してください。
NumPy で長さを求める
docker exec jupyter python3 -c "import numpy as np; print(np.linalg.norm(np.array([5, 12])), np.linalg.norm(np.array([1, 2, 2])))"ここでは表示のみで、実行されません。無料アカウントを作成すると、実行ボタンで自分のラボのターミナルに入力できます。
さらに挑戦: 単位が違う成分
1日のベクトル [気温, 雨量, 貸出台数] の長さを求めると、台数が大きいので、ほとんど台数だけで決まります。
気温と台数は単位が違うので、そのままの長さには意味がありません。どう直せばよいか、次のレッスンで考えるときの手がかりにしましょう。