ベクトル#

シンプルな定義#

数を並べた組をベクトルという。

a=(a1,a2,a3)

もっと厳密な定義#

任意の元x,yLと任意の実数a,bについて実数倍ax,byとそれらの和ax+byが定義されており、 かならずax+byLが成り立つような集合Lベクトル空間(vector space) という。またLの元を ベクトル(vector) という

ベクトルの和とスカラー倍#

2つのn次元ベクトル

a=(a1an),b=(b1bn)

とスカラーcがあるとする。

足し算#

ベクトルa,bの足し算を次のように定義する

a+b=(a1an)+(b1bn)=(a1+b1an+bn)

スカラー倍#

ベクトルaのスカラーc倍を次のように定義する

ca=(ca1can)
Hide code cell source
import numpy as np
import matplotlib.pyplot as plt
import matplotlib as mpl
import japanize_matplotlib

a = np.array([1, 1])
b = np.array([1, 2])
o = np.array([0, 0])
c = 3

fig, axes = plt.subplots(ncols=2, figsize=[6, 2.5])

# 和
ax = axes[0]
cmap = mpl.colormaps['tab10']
for i, (v, label) in enumerate([(a, "a"), (b, "b"), ((a+b), "a+b")]):
    ax.arrow(*o, *v, width=0.02, color=cmap(i), length_includes_head=True, alpha=0.5)
    ax.text(v[0], v[1], label, color=cmap(i))
longest_v = (a+b)
ax.set(xticks=range(longest_v[0]+1), yticks=range(longest_v[1]+1), title=r"ベクトルの和 $a+b$")
ax.grid(True, alpha=0.3)

# スカラー倍
ax = axes[1]
for i, (v, label) in enumerate([(a, "a"), (a * c, "ca")]):
    ax.arrow(*o, *v, width=0.02, color=cmap(i), length_includes_head=True, alpha=0.5)
    ax.text(v[0] - 0.1, v[1] + 0.1, label, color=cmap(i))
longest_v = c * a
ax.set(xticks=range(longest_v[0]+1), yticks=range(longest_v[1]+1), title=r"スカラー倍 $c a$")
ax.grid(True, alpha=0.3)

fig.show()
../../../_images/c3af94e9e6f7a9e99c55ba945d27720b98421b256162e5be0514bfe0190571ca.png