ロボット屋の記録

ロボティクスに関する雑多な学びの記録

ベクトルを(少し)噛み砕いてみる

本記事の目的

ベクトルは高校で習うほど基本的で重要な概念であり,ロボティクス分野でも至る所で活躍します.
実はベクトルは非常に奥が深いものです.
その奥深さはロボティクスの文脈でも割と頻繁に顔を出してきますが,多くの場合,丁寧な説明はなく,さも当然のようにその奥深さを利用して話が展開していきます.

本記事では,こういった話をスムーズに理解するための準備として,ベクトルについて噛み砕いてみることにします.
ただし,本記事初稿からベクトルの奥深さの全てを説明するのは難しいので,ある程度の完成度で初稿を完了し,随時追記していく方針を取ることにします.
また,文章量の都合から,本記事に記載するのは基本的なことのみとします.
より発展的な内容について書くときには記事を分け,リンクを貼りますので,適宜たどってください.

タイトルから「(少し)」が消えたら,この記事は完成かな・・・.

想定する読者

  • ベクトルの基礎を再確認したくなった未来の私

関連する記事

本記事の前半でベクトル空間について書きますが,この内容は本記事の初稿作成時点で投稿済みの以下の記事でも書いています.
話の流れを考慮してどちらの記事にも載せることにしましたが,既に読んでいる場合には読み飛ばしてください.

tenorea.hatenablog.com

目次

1. ベクトル空間

1.1. ベクトル空間の定義

ベクトルと聞いて,まず思い浮かぶのはなんでしょうか?
空間中にある方向を持った矢印や,数の組がまず浮かぶのではないかと思います.
しかし実は,これらはベクトルと呼ばれるもののうちの,ごく一部です.

ではどういったものをベクトルと呼ぶのでしょうか?
これは数学的にきっちり定義されていますが,一つ重要な注意点があります.

それは,ベクトルは要素単体だけでは定義されず,その要素が従う演算規則が指定されてはじめて定義されるということです.

演算を行うためには少なくとも2つ以上の要素からなる何かしらの集合が必要になります.
したがって,ベクトルを定義するためには,まずそのベクトルが属する集合を定義しなければなりません.
そしてこの集合を,「ベクトル空間」といいます.

ベクトルは「ベクトル空間の元」として定義されるということです.

それでは,ベクトル空間の定義をみていきましょう.
先に述べたように,ベクトル空間を定義するには演算規則を指定する必要があります.
そのため,ポンと言葉を述べるだけでは足りず,やや長い記述になります.

定義 1 ベクトル空間(線形空間
ある集合Xがあり,その上に次の2つの条件を満たす演算が与えられているとき,Xとそれら2つの演算をあわせて,ベクトル空間という.

  1. 集合Xの任意の元x, yに対して,和と呼ばれる集合Xの新しい元が常に定まり,次の条件を満たす.なお,和をx+yと書く.つまり,x+y\in Xである.
    • \forall x,y,z \in Xに対し,(x+y)+z = x+(y+z)が成り立つ.
    • \forall x,y \in Xに対し,x+y = y+xが成り立つ.
    • 零ベクトルと呼ばれる元0\in Xがただ1つ存在し,\forall x\in Xに対してx+0=xが成り立つ.
    • \forall x\in Xに対してx'\in Xが存在してx+x'=0が成り立つ.このx'を逆元と呼び,-xと書く.なお,x+(-x)x-xと書ける.

  2. 集合Xの任意の元xと実数\mathbb{R}の任意の元aに対し,xaの積(もしくはxa倍)と呼ばれる集合Xの新しい元ax\in Xが常に定まり,次の条件を満たす.
    • \forall x\in X\forall a,b\in \mathbb{R}に対し,(a+b)x = ax + bxが成り立つ.
    • \forall x,y\in X\forall a\in \mathbb{R}に対し,a(x+y)=ax+ayが成り立つ.
    • \forall x\in X\forall a,b\in \mathbb{R}に対し,(ab)x=a(bx)が成り立つ.
    • \forall x\in Xに対し,1x = xが成り立つ.

なお,上の定義中では\forallという記号を用いました.これは「任意」という意味の記号で,\forall x\in Xは「集合Xの任意の元x」と同じことを意味します.
「任意の元x」という表現も聞き馴染がない場合,ピンとこないかもしれません.
これは集合Xのどんな元でもいいですよー,何の制限もないですよー,というニュアンスです.
結局,集合Xの全ての元に共通する性質を述べていることになります.

上の定義で,積の演算には実数\mathbb{R}の元を用いました.実は実数以外に複素数\mathbb{C}などの元でも同じように定義することができます.
実数\mathbb{R}の元や複素数\mathbb{C}の元などを総称してスカラーと呼ばれるため,定義でaxと書いた演算にはスカラー倍」という名前がついています.
ちなみに,この場合の実数\mathbb{R}複素数\mathbb{C}の集合を総称して,と呼びます.
体についてちゃんと書こうとすると長くなりそうなので,ここでは名前だけを紹介します. これ以降,実数\mathbb{R}でも複素数\mathbb{C}でも,どっちでも良い場合には,体\mathbb{K}と書くことにします.

なお,スカラーが実数\mathbb{R}である場合のベクトル空間を「実数\mathbb{R}上のベクトル空間」といい,「実ベクトル空間(実線形空間)」と呼称されます.
同様にスカラー複素数\mathbb{C}である場合には「複素ベクトル空間(複素線形空間)」という名前がつけられています.

この呼称を見ると,「ベクトル」は「線形であるもの」ということが分かります.
線形性は非常に重要な性質です.
したがって,考える対象がベクトルであるか否かを調べることはとても大事です.

ここで,定義 1には本節の最初に述べた矢印や数の組のような話は一切でてきていないことに注意してください.
定義 1を満たすものは全て「ベクトル」であり,その中の一例として上の2つがあったのです.

ベクトルのイメージを掴むために,いくつかの例を見てみましょう

1.2. ベクトル空間の例

1.2.1. n次元数ベクトル空間\mathbb{R}^n

これは既に例示した数の組のことで,代表的なベクトル空間です.
この空間は以下のように定義されます.

\displaystyle{
\mathbb{R}^n := \left\{ x = \left[ 
  \begin{array}{c}
  x_1 \\
  x_2 \\
  \vdots \\
  x_n
  \end{array}
   \right]
   : x_i \in \mathbb{R}, i=1,\cdots,n
   \right\}.
}

この空間に対し,スカラーを次のように定義します.

\displaystyle{
\begin{align}
\left[
\begin{array}{c}
  x_1 \\
  x_2 \\
  \vdots \\
  x_n
  \end{array}
   \right]
   +
   \left[
   \begin{array}{c}
  y_1 \\
  y_2 \\
  \vdots \\
  y_n
  \end{array}
   \right]
   &:=
   \left[
   \begin{array}{c}
  x_1+y_1 \\
  x_2+y_2 \\
  \vdots \\
  x_n+x_n
  \end{array}
   \right],\\
\quad\\
a\left[
\begin{array}{c}
  x_1 \\
  x_2 \\
  \vdots \\
  x_n
  \end{array}
   \right]
   &:=
   \left[
   \begin{array}{c}
  ax_1 \\
  ax_2 \\
  \vdots \\
  ax_n
  \end{array}
   \right].
\end{align}
}

このようにすると,この空間\mathbb{R}^n定義 1の条件を全て満たしますので,ベクトル空間となります.

1.2.2. 実数値(複素数値)関数空間

ある区間,例えば[0, \infty)上に定義された実数値(複素数値でもいい)関数の全体である空間も,ベクトル空間として定義することができます.
ここで,関数の空間という概念に違和感を感じるかもしれません.
上で述べた条件に当てはまる関数は数多くありますが,ここで指している空間はそのようなたくさんある関数を集めた集合です.
したがって,元は関数となります.
実数値関数空間を例として数学的に表現すると,次のように書けます.

\displaystyle{
\mathcal{F}[0, \infty) := \left\{ f:[0,\infty) \rightarrow \mathbb{R} \right\}.
}

この空間に対して,次のようにスカラーを定義します.
なお,f,g\mathcal{F}の任意の元とします.また,ここでは便宜上,f,gt\in[0,\infty)の関数としています.

\displaystyle{
\begin{align}
(f+g)(t) &:= f(t) + g(t),\\
(af)(t) &:= af(t).
\end{align}
}

このようにすると,やはり定義 1の条件を全て満たしますので,\mathcal{F}もベクトル空間となります.

2. ベクトルの次元

ベクトルがどんなものか分かってきたところで,次はあるベクトルが「どんなベクトル」かを考えてみたいと思います.
どんなベクトルかを考える際に非常に重要になるのが,「ベクトルの次元」です.

次元については色々な解釈の仕方がありますが,ここでは「あるベクトルを表現しようとしたとき,どのくらいの情報量が必要か?」を示す指標だと考えてもらうと理解しやすいと思います.

さてここで,「表現する」とはどういうことでしょう?
今の文脈では,「あるものを他のものと区別して示す」という意味で使っています.
したがってベクトルの次元を考える上では,あるものと区別する他のものを意識する必要があります.

それでは何と区別するのか?
これは自然に考えて,同じベクトル空間に属する他のベクトル(つまり他の元)となるでしょう.
もし他の空間の元と区別したければ,属する空間を明記すれば済みます.

したがって,「あるベクトルの次元」は「あるベクトル空間内の全てのベクトルを区別して表現するための情報量」と解釈することができます.

これはベクトルの次元が,そのベクトルが属するベクトル空間の特性であることを意味しています.

2.1. 線形従属と線形独立

それではベクトル空間内の全てのベクトルを表現する方法について考えていきましょう.
ここで,ベクトル空間の定義から,ベクトルは他のベクトルの和やスカラー倍で表現できることに注目します.

もし,このことを利用してある限られたベクトルの和とスカラー倍だけで全てのベクトルを表現できるとすれば,その限られたベクトルをそれぞれどれだけスカラー倍するかさえ分かれば,任意のベクトルを表現することができます.

この限られたベクトルの数をnとし,これらをx_{j} (j=1,2,\cdots , n),いま表現したいベクトルをxとすると,上のことは次の式で表せます.

\displaystyle{
x = \sum_{j=1}^{n}\alpha_{j}x_{j}. \label{eq:linear_combination}\tag{1}
}

ここで,\alpha_{j}\in\mathbb{K}スカラーです.

極端な例として,限られたベクトルに含まれているx_{1}を表現するときも,\alpha_1=1, \alpha_2 = \alpha_3 = \cdots = \alpha_n = 0とすれば問題ありません.

このようにして表現したあるベクトルを「線形結合」と呼びます.

さて,今知りたいのは,あるベクトル空間Xの任意の元x\in{X}を線形結合で表すために必要なベクトルは何なのか,ということです.
これを考えるためには,まず必要以上のベクトルを含むm個のベクトルの組x_1, x_2, \cdots, x_mを考えると理解しやすいと思います.

必要以上のベクトルを含むということは,m個のベクトルのうちのいくつかは,他のベクトルで表現できてしまう,ということです.
このように表現できてしまうベクトルの一つを仮にx_iとすると,次のように書けます.

\displaystyle{
x_i = \sum_{j\neq i}\alpha_{j}x_{j}. \label{eq:2}\tag{2}
}

ここで右辺はj=i以外の全ての総和を意味しています.

このようにベクトルの組の中に他のベクトルの線形結合で表現できるものが含まれている時,「そのベクトルの組は「線形従属」である」と言います.

このことをしっかりと定義として書き直しておきましょう.

定義 2 線形従属
Xをある体\mathbb{K}上のベクトル空間として,x_1, x_2, \cdots, x_nを全てXの元とする. このとき,全てが0でないスカラー\alpha_1, \alpha_2, \cdots, \alpha_n \in\mathbb{K}を用いて
\displaystyle{
\sum_{i=1}^n \alpha_i x_i = 0
}
を成立させられるとき,ベクトルの組x_1, x_2, \cdots, x_nは線形従属であるという.

ここでは\alpha_1, \alpha_2, \cdots, \alpha_n \in\mathbb{K}の全てが0でないことだけを言及していることに注意してください. つまり,一つでも0でないものがあれば,他の全てが0であっても上のスカラーの条件を満たします.

先ほどの式\eqref{eq:2}の場合,次のように変形すると分かりやすいです.

\displaystyle{
\sum_{j\neq i}\alpha_{j}x_{j} - x_i = 0.
}

この式は\alpha_i=-1であっても,線形結合が0となり得ることを意味しています.
したがってこのベクトルの組は線形従属であることを改めて確認できます.

さて,必要以上のベクトルを含む場合について整理されてきました.
ここから,不要なベクトルが一切ない場合を定義することができます.

定義 3 線形独立
線形従属でない場合を線形独立という.
つまり,x_1, x_2, \cdots, x_nが線形独立であるための必要十分条件
\displaystyle{
\sum_{i=1}^n \alpha_i x_i = 0 \Rightarrow \alpha_i = 0, i = 1, 2, \cdots , n
}
である.

ちなみに,右から左への矢印は成立しません.
全ての係数が0であればその線形結合が0となるのは,あらゆるベクトルの組に言えることです.

2.2. 基底と次元

ベクトルの次元に関する話もいよいよ大詰めとなってきました.
定義 3で定められた線形独立というのは,あるベクトルの組の中に,その組に含まれる他のベクトルで表現できるような不要なベクトルが存在しない状態です.
この概念は,ベクトル空間の任意のベクトルを表現する必要最小限のベクトルを考える際に役立ちます.

足りないのは,「任意のベクトルを表現できる」という点です.

このことを考慮し,ベクトル空間内の任意のベクトルを表現する必要最小限のベクトルの組として定められるのが,次の定義に示す「基底」です.

定義 4 基底
Xを体\mathbb{K}上のベクトル空間とし,Xのベクトルで構成された組\{v_1, v_2, \cdots , v_n\}が次の条件をどちらも満たすとき,そのベクトルの組をXの基底という.
  1. \{v_1, v_2, \cdots , v_n\}が線形独立である
  2. \{v_1, v_2, \cdots , v_n\}にどのようなベクトルを付け加えても線形従属になる

言われてみれば,それはそうだろう,という感じの定義ですね.
線形従属であればそのベクトルの組の中に他のベクトルの線形結合で表せるベクトルがあるわけですが,あるベクトルが追加される前のベクトルの組{v_1, v_2, \cdots , v_n}が線形独立であるため,その表せるベクトルは追加されたベクトルであると分かります.
そしてどんなベクトルを追加しても線形従属となるので,どんなベクトルでも{v_1, v_2, \cdots , v_n}の線形結合で表現できるということになります.
定義 3で登場したベクトル空間Xについていえば,あるベクトルx\in{X}は基底{v_1, v_2, \cdots , v_n}とそのベクトルxに固有のスカラーの組み合わせ\alpha_1, \alpha_2, \cdots , \alpha_nという情報で特定できることなります.

このことから,ずっと追い求めてきたベクトルの次元は以下のように定義されます.

定義 5 次元
ベクトル空間Xの基底が\{v_1, v_2, \cdots , v_n\}であるとする.
このとき,Xn次元ベクトル空間といい,その次元を
\displaystyle{
\mathrm{dim}~X = n
}
と表す.

3. まとめ

本記事ではベクトルについての理解を深めるため,ベクトル空間の数学的定義からベクトルの次元までを噛み砕いてみました.
ベクトルというものが実は非常に抽象的なものであり,広く様々なものに応用可能な概念であることが分かりました.

ベクトルに関連する項目を挙げればキリがないのですが,それらを理解する上でも欠かせないものとして以上のものをまとめました.
ここで取り上げていない項目については,個別に記事を作成していこうと思います.

4. 参考文献

  • 山本裕『システムと制御の数学』朝倉書店,1998