線形空間の基底と次元【線形代数学入門】

この記事では、線形代数学を学んでいく上において特に重要な線形空間の基底と次元について解説します。

ベクトルを描画するPythonスクリプトも一緒に書いているので、Python環境がある人は色々なベクトルを描きながら読んでいただけるとわかりやすいかと思われます。

この記事で学べる内容
  • 線形空間の基底・次元の定義
  • 次元の不変性の証明

基底

基底の定義

本節では線形空間の基底の定義と、\(\mathbb{R}^2\)における基底の例について説明します。

定義(基底)

線形空間 \(V\) 上のベクトル \(\boldsymbol{ v }_1, \ldots,\boldsymbol{ v }_n\) が \(V\) の基底であるとは、以下の2つの条件を満たすことである:

  1. \(\boldsymbol{ v }_1, \ldots,\boldsymbol{ v }_n\) は線形独立である。つまり、実数 \(a_1,\ldots,a_n\) に対して、 \(c_1\boldsymbol{ v }_1+\cdots+c_n\boldsymbol{ v }_n=0\) であれば \(c_1=\cdots=c_n=0\)が成り立つ。
  2. \(\boldsymbol{ v }_1, \ldots,\boldsymbol{ v }_n\) は \(V\) の生成系である。つまり、任意のベクトル \(\boldsymbol{ v } \in V\) に対して実数 \(c_1,\ldots,c_n\) が存在して \(v = c_1\boldsymbol{ v }_1+\cdots+c_n\boldsymbol{ v }_n\) が成り立つ。

まず、これらの2つの条件を確認してみましょう。

①の条件は \(\boldsymbol{ v }_1, \ldots,\boldsymbol{ v }_n\) たちがそれぞれ “独立” な方向を向いているということです。この条件が成り立たない、つまりある0でない定数 \(c_i\) が存在して \(c_1\boldsymbol{ v }_1+\cdots+c_i \boldsymbol{ v }_i+ \cdots + c_n\boldsymbol{ v }_n=0\) とかけた場合を考えてみます。この場合、\(c_i \boldsymbol{ v }_i\) 以外の項を右辺に移項して両辺を \(a_i\) で割ることで \(\boldsymbol{ v }_i\) が他のベクトルたちで表せてしまうことになり、それぞれのベクトルが独立とは呼べません。よってこの条件は、指定したベクトルたちが独立な方向を向いていて、一方が他方のベクトル同士を足し引きすることで表示できないということを意味しています。

②の条件は、線形空間 \(V\) のどの元も考えているベクトルたちを用いて表示することができるということを意味しています。

つまり、線形空間の基底とは、考えている線形空間のどのベクトルも、基底を構成する独立な方向を向いているベクトル達によって表すことができるということを意味しています。

線形独立でないベクトルたちを、線形従属といいます。つまり、\(\boldsymbol{ v }_1, \ldots,\boldsymbol{ v }_n\)が線形従属であるとは、 \(c_1\boldsymbol{ v }_1+\cdots+c_n\boldsymbol{ v }_n=0\) かつある\(i\)について \(c_i \ne 0\) をみたす実数\(c_1,\ldots,c_n\)が存在することです。

ここですぐに分かることとして、基底を用いたベクトルの表示の仕方は一意的です。実際、

\[
v = a_1\boldsymbol{ v }_1+\cdots+a_n\boldsymbol{ v }_n = b_1\boldsymbol{ v }_1+\cdots+b_n\boldsymbol{ v }_n
\]

と二通りの表示がされているとします。このとき右辺を左辺に移項して整理することで

\[
(a_1 -b_1)\boldsymbol{ v }_1 + \cdots + (a_n – b_n)\boldsymbol{ v }_n = 0
\]

となります。ここで、 \(\boldsymbol{ v }_1 , \ldots, \boldsymbol{ v }_n \) は線形独立だったため、\(a_1 -b_1 = \cdots = a_n -b_n =0\)となり、\(a_1=b_1, \ldots , a_n = b_n\)を得ます。よって基底によるベクトルの表示の仕方は一意的であることが分かりました。

この性質により、線形空間の基底とは、すべての元を一意的に表すことができるベクトルたちの集合とも見ることができます。

ここでは線形空間の基底は有限個であることを仮定して定義しましたが、もちろんどんな有限個の線形独立なベクトルを持ってきてもそれらが基底にならないような線形空間は存在します\(\mathbb{R} から \mathbb{R}へのマクローリン展開可能な関数の全体など\)。この記事では簡単のために、基底といったらそれらを構成するベクトルの数は有限個であることとします。

基底に関する重要事項

さて、ここまで基底の定義と簡単な性質を見てきましたが、任意の線形空間に基底が存在するとは示していません(もしかすると基底が存在しないような線形空間があるかもしれない…)

しかし、以下の定理が示されており、線形空間には必ず基底が存在することが分かります。

定理

線形空間には基底が存在する。

この定理はここでは証明しませんが、もし興味がある方は以下の文献をあたってみてください。

松坂和夫「集合・位相入門」 (岩波書店 数学入門シリーズ,新装版,2018)

線形空間の基底は複数存在します。このことを、 \(\mathbb{R}^2\) でみてみましょう。

\(\mathbb{R}^2\) 上の基底

まず、すぐ思いつく基底は \(\{(1,0),\ (0,1)\}\)です。これが上に示した規定の条件を満たすことは容易に確かめることができます。

他の基底として、例えば \(\{(1,2), (-1,1)\}\)というのがあります。これが基底であることをみてみましょう。以下では、\(\boldsymbol{ v }_1 = (1,2),\ \boldsymbol{ v }_2 = (-1,1)\)とします。

まず、\(\boldsymbol{ v }_1,\ \boldsymbol{ v }_2\)が線形独立であることを確かめます。そのためには、\(c_1\boldsymbol{ v }_1 + c_2\boldsymbol{ v }_2 =0\) を満たす実数\(c_1,\ c_2\)が0のみであることを示せばOKです。実際、\(\boldsymbol{ v }_1,\ \boldsymbol{ v }_2\) の形を戻して式を書き起こすと

\(
\left\{
\begin{array}{ll}
c_1 – c_2 &=0\\
2c_1 + c_2 &=0
\end{array}
\right.
\)

この連立方程式を解くことで\(c_1 = c_2 =0\) を得るため、\(\boldsymbol{ v }_1,\ \boldsymbol{ v }_2\)は線形独立になります。

次に、\(\{\boldsymbol{ v }_1,\ \boldsymbol{ v }_2\}\) が生成系であることを示します。任意に \(\boldsymbol{ x } = (x,y)\) を取り、\(\boldsymbol{ x } = c_1 \boldsymbol{ v }_1 + c_2 \boldsymbol{ v }_2 \) となる \(c_1,\ c_2\) を見つければOKです。これも式を書き起こすと

\[
\left\{
\begin{array}{ll}
c_1 – c_2 &=x\\
2c_1 + c_2 &=y
\end{array}
\right.
\]

となります。つまり、\(c_1\) と \(c_2\) を\(x,\ y\)を用いてかければOKですが、これも上記の方程式を解くことにより

\[
c_1 = \frac{1}{3}x + \frac{1}{3}y,\hspace{2mm} c_2 = -\frac{2}{3}x + \frac{1}{3}y
\]

となります。

以上により、\(\{(1,2), (-1,1)\}\)は \(\mathbb{R}^2\) の基底になることが分かりました。

これら2つの基底を図に表示してみましょう。以下のPythonスクリプトを実行すると、その下の図が表示されます。

Python
import numpy as np
import matplotlib.pyplot as plt


# ベクトルを描画するための関数の設定
def draw_vector(loc, vector, color):
    plt.quiver(
        loc[0],
        loc[1],
        vector[0],
        vector[1],
        color=color,
        angles="xy",
        scale_units="xy",
        scale=1,
    )


draw_vector([0, 0], [1, 2], "red")
draw_vector([0, 0], [-1, 1], "red")
draw_vector([0, 0], [1, 0], "blue")
draw_vector([0, 0], [0, 1], "blue")

plt.xlim(-1.5, 1.5)
plt.ylim(-1, 2.5)
plt.grid(color="b", linestyle=":", linewidth=0.3)

plt.show()

青の矢印が \(\{(1,0),(0,1)\}\) の基底で、赤色の矢印が\(\{(1,2), (-1,1)\}\) です。このように、独立な方向を向いた2つのベクトルを持ってくると、それらは \(\mathbb{R}^2\) の基底をなします。

逆に、一直線上に並ぶようなベクトルを持ってくると、それらは基底をなしません。実際、\(\{(1,1), (-2,-2)\}\) のようなベクトルの組を持ってくると、一次独立にならないため基底をなしません。このベクトルを図に表すと以下のようになります。

Python
import numpy as np
import matplotlib.pyplot as plt


# ベクトルを描画するための関数の設定
def draw_vector(loc, vector, color):
    plt.quiver(
        loc[0],
        loc[1],
        vector[0],
        vector[1],
        color=color,
        angles="xy",
        scale_units="xy",
        scale=1,
    )


draw_vector([0, 0], [-1, -1], "red")
draw_vector([0, 0], [-2, -2], "red")

plt.xlim(-2.5, 1)
plt.ylim(-2.5, 1)
plt.grid(color="b", linestyle=":", linewidth=0.3)

plt.show()

図を見ると、感覚的にこれら2つのベクトルを定数倍して足したり引いたりしても空間全体を表示できないということが分かるかと思います。

次元

線形空間の基底は、いわば空間の”大きさ”の尺度とも捉えることができるので、基底の数を線形空間のある種の指標として定義したくなります。それが以下で定義する線形空間の次元です。

定義(線形空間の次元)

線形空間 \(V\) の基底の数を \(V\) の次元とよび \(\dim V\) と表す。

定義しておいて早々にはなりますが、実はここまでの議論だけだと線形空間の次元は本当の意味で定義したことにはなりません。というのも、もしかすると線形空間の基底は一定の数ではないかもしれないため、線形空間固有の尺度として定義ができない可能性があるからです。しかし、実際にはそんなことはなく、線形空間を決めるとそこにある基底たちはすべて同じ個数のベクトルで構成されることが分かります。

次節において、この線形空間の次元の不変性について示します。

次元の不変性

本節では、次の定理を証明します。

定理

線形空間 \(V\) に \(n\) 個のベクトルからなる基底、および\(m\)個のベクトルからなる基底があるとき、\(n=m\) である。

これが証明されると、線形空間における基底はすべて同じ個数のベクトルで構成されることが分かります。

まず、補題として次を示します。

補題 1

線形空間 \(V\) が \(n\) 個のベクトルからなる基底を持てば、\(V\) は \(\mathbb{R}^n\)と同型である。

証明

\(V\) の基底を\(\{(\boldsymbol{ v }_1, \ldots,\boldsymbol{ v }_n)\}\)とする。このとき 写像 \(f \colon V \to \mathbb{R}^n\) を以下で定義する:

\[
f(c_1\boldsymbol{ v }_1+ \cdots +c_n \boldsymbol{ v }_n) := (c_1,\ldots,c_n)
\]

この定義が well-defined であることを示す。今

\[
c_1\boldsymbol{ v }_1+ \cdots +c_n \boldsymbol{ v }_n) = d_1\boldsymbol{ v }_1+ \cdots +d_n \boldsymbol{ v }_n)
\]

であったとすると、基底の一次独立姓から \(c_1=d_1,\ldots, c_n=d_n\) となる。よって\((c_1,\ldots,c_n) =(d_1,\ldots,d_n)\) となるため、well-definedであることが分かる。

次に、\(f\) が線形写像であることを示す。任意の \(\boldsymbol{ v }=c_1\boldsymbol{ v }_1+ \cdots +c_n \boldsymbol{ v }_n,\ \boldsymbol{ u }=d_1\boldsymbol{ v }_1+ \cdots +d_n \boldsymbol{ v }_n\) および \(c \in \mathbb{R}\) を取ると

\[
\begin{flalign*}
f(\boldsymbol{ v } + \boldsymbol{ u }) &=f((c_1+d_1)\boldsymbol{ v }_1+ \cdots +(c_n+d_n) \boldsymbol{ v }_n)) \\
&=(c_1+d_1,\ldots,c_n+d_n)\\
&=(c_1,\ldots,c_n) + (d_1,\ldots,d_n)\\
&=f(\boldsymbol{ v }) + f(\boldsymbol{ u })
\end{flalign*}
\]

\[
\begin{flalign*}
f(c\boldsymbol{ v }) &= f(cc_1\boldsymbol{ v }_1+ \cdots +cc_n \boldsymbol{ v }_n)\\
&=(cc_1,\ldots,cc_n)\\
&= c(c_1,\ldots,c_n)\\
&= cf(\boldsymbol{ v })
\end{flalign*}
\]

となる。以上より、\(f\) は線形写像である。

次に\(f\)が単射であることをしめす。任意に\(\boldsymbol{ v }=c_1\boldsymbol{ v }_1+ \cdots +c_n \boldsymbol{ v }_n,\ \boldsymbol{ u }=d_1\boldsymbol{ v }_1+ \cdots +d_n \boldsymbol{ v }_n\) を取り\(f(\boldsymbol{ v }) = \boldsymbol{ u }\) であるとする。このとき \((c_1,\ldots,c_n) = (d_1, \ldots,d_n)\) となるため \(\boldsymbol{ v } = \boldsymbol{ u }\) が分かる。よって\(f\)は単射である。

最後に\(f\)が全射であることを示す。任意に \((c_1,\ldots,c_n) \in \mathbb{R}^n\)取るとき、\(\boldsymbol{ v } = c_1\boldsymbol{ v }_1+ \cdots +c_n \boldsymbol{ v }_n\) とおくと \(f(\boldsymbol{ v }) = (c_1,\ldots,c_n)\)となる。よって\(f\)は全射である。

また、証明には次の補題も必要になりますが、連立一次方程式に関する準備が必要になるため、ここでは割愛します。

補題 2

\(\mathbb{R}^n\) において、\(n\) 個より多くのベクトルは線形従属である。特に、\(m \ne n\) であれば \(\mathbb{R}^n\) と \(\mathbb{R}^m\) は同型ではない。

上記補題の証明は、以下の文献を御覧ください。

齋藤 正彦「線型代数入門」 (‎ 東京大学出版会 基礎数学,1966)

この補題の最後の部分の対偶を考えると、 \(\mathbb{R}^n\) と \(\mathbb{R}^m\) は同型 であれば、\(n = m\) であることが分かります。定理の証明にはこちらの形の補題を使用します。

さて、それでは本設の最初に紹介した定理を証明しましょう。

定理の証明

\(V\) は \(n\) 個のベクトルからなる基底、および\(m\) 個のベクトルからなる基底をもつため、補題 1 より \(\mathbb{R}^n\) および \(\mathbb{R}^m\) と同型である。つまり\(V\) を介して \(\mathbb{R}^n\) と \(\mathbb{R}^m\)は同型になるため、上記の補題 2 より \(n = m\) である。

以上より、線形空間に対して基底を構成するベクトルの個数は同一であるため、これにより線形空間に対して次元の概念が定式化された。

少し前に議論したことにより、\(\dim \mathbb{R}^2 = 2\) である。一般に、線形空間\(\mathbb{R}^n\) について、\(\boldsymbol{ e }_i\) を第 \(i\) 成分が \(1\) でそれ以外の成分が \(0\) であるベクトルとすると、\(\{\boldsymbol{ e }_1,\ldots,\boldsymbol{ e }_n\}\) は\(\mathbb{R}^n\) の基底になる。これにより、\(\dim \mathbb{R}^n =n\) である。

最後に、線形空間の次元は不変量(特に完全不変量)であることを注意しておきます。つまり、次の定理が成り立ちます。

定理

線形空間 \(V\) と \(W\) が同型であることと \(\dim V = \dim W\) であることは必要十分条件である。

これにより、線形空間を区別する場合には次元だけに着目すればよいということが分かります。この定理の証明は簡単なので、チャレンジしてみてください。

まとめ

今回は、線形空間の基底と次元の定義を記し、それぞれの簡単な性質を解説しました。線形代数学を学んでいくうえで、今回解説した内容は特に重要な内容になるので、今回の記事が理解の一助になれば幸いです。

今回の内容
  • 線形空間の基底と次元の解説
    • 基底を構成するベクトルの個数は同一になること
    • 次元は線形空間に定まるある種の指標になること

参考文献