ノルム空間と距離空間|単位球の形から完備性・不動点定理までを具体例で解説
で「長さがちょうど 1 のベクトル」を全部描くと、円になるとは限りません。ノルムの選び方しだいで、その図形はひし形にも正方形にもなります。
長さの測り方は 1 通りではない、ということです。何を「長さ」と呼んでよいかを決める規則、それがノルムの公理にほかなりません。
ノルム空間は、ベクトル空間に「長さ」の概念を導入したものです。距離空間はより一般的な設定で、2 点間の「距離」が定義された集合です。
ノルムの定義
ベクトル空間 (実数体または複素数体上)に対して、写像 が次の 3 条件を満たすとき、 をノルムといいます。
すべての に対して であり、
すべての とスカラー に対して
すべての に対して
ノルムが定義されたベクトル空間を ノルム空間 といいます。
3 条件はどれも直観に沿っています。長さは負にならず、2 倍に伸ばせば長さも 2 倍になり、遠回りは近道より長い。
とくに三角不等式は、このあと何度も効いてきます。ノルムかどうかを疑うとき、たいてい壊れるのはここです。
距離空間の定義
集合 に対して、写像 が次の条件を満たすとき、 を距離関数といいます。まず値は負にならず、 になるのは 2 点が一致するときに限ります。
次に、測る向きを変えても値は変わりません。対称性と呼ばれる条件です。
最後が三角不等式で、 を経由すると遠回りになる、という要請にあたります。
距離関数が定義された集合を 距離空間 といい、 と書きます。 に演算は要りません。足し算もスカラー倍もない、ただの集合で構いません。
ノルム空間と距離空間の違い
ベクトル空間が土台。原点があり、足し算とスカラー倍が使える。 は 1 点の「長さ」を表す。
ただの集合が土台。原点も演算もない。測れるのは 2 点の「隔たり」だけで、1 点の大きさは意味を持たない。
ノルムは距離より多くを前提にし、そのぶん多くを語ります。距離空間は前提が少ないので、応用範囲がはるかに広い。
文字列の集合、地球の表面、遺伝子の配列。どれもベクトル空間ではありませんが、距離なら入ります。
ノルム空間から距離空間へ
ノルム空間 には、次の式で自然に距離が定まります。
これが距離の公理を満たすことは、ノルムの公理から出ます。 は 、つまり と同値です。
対称性は斉次性から従います。 となるからです。
三角不等式は と分解して、ノルムの三角不等式を当てるだけで済みます。
したがって、すべてのノルム空間は距離空間です。以後、ノルム空間といえば、この距離が入ったものとみなします。
逆は成り立たない
距離空間は必ずしもベクトル空間ではないので、逆は成り立ちません。ではベクトル空間の上の距離なら、必ずノルムから来るのでしょうか。
これも違います。ノルム由来の距離は、次の 2 つの性質を必ず持つからです。
どちらも に代入すれば、すぐ確かめられます。逆にこの 2 条件を満たす距離は、 というノルムから来ます。
例:ノルムから来ない距離
の上に と定めます。距離の公理はすべて満たします。
ところが斉次性が壊れます。 である一方、 となり、値が一致しません。
遠いところを一律に「距離 1」で打ち切っているので、スカラー倍に比例しないのです。ベクトル空間の上の距離でも、ノルム由来とは限りません。
の 3 つのノルム
上のノルムとして、次のものがよく使われます。
| ノルム | |
| ノルム | (ユークリッドノルム) |
| ノルム |
は碁盤の目を歩く距離、 は定規で直線を測る距離、 は最悪の成分だけを見る距離です。
別名もあります。 はマンハッタン距離、 はチェビシェフ距離と呼ばれます。
例: を 3 通りで測る
同じベクトルでも、ノルムが違えば値が違います。 で計算します。
と並びました。成分を全部足す が最大で、最大成分だけを見る が最小になります。
この順序は偶然ではありません。 は、どのベクトルでも成り立ちます。
例: を測る
成分がそろっているときは、次元の効き方がはっきり見えます。 で計算します。
一般に は 、 は 、 は です。次元を上げるほど、3 つの値は大きく開いていきます。
なら と の比は 1000 倍になります。高次元でノルムの選び方が問題になるのは、この開きのためです。
図で見る単位球
を満たす点の集合を単位球、その境界 を単位球面といいます。 で 3 つのノルムの単位球面を重ねて描きます。
<div class="cont">
<svg viewBox="0 0 420 240" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="3 つのノルムの単位球">
<rect x="0" y="0" width="420" height="240" rx="10" fill="#fafbfc"/>
<line x1="112" y1="110" x2="308" y2="110" stroke="#d7dbe0" stroke-width="1"/>
<line x1="210" y1="22" x2="210" y2="198" stroke="#d7dbe0" stroke-width="1"/>
<rect x="138" y="38" width="144" height="144" fill="#8a8f98" fill-opacity="0.08" stroke="#8a8f98" stroke-width="1.4"/>
<circle cx="210" cy="110" r="72" fill="#e0872f" fill-opacity="0.12" stroke="#e0872f" stroke-width="1.6"/>
<polygon points="210,38 282,110 210,182 138,110" fill="#3468d6" fill-opacity="0.16" stroke="#3468d6" stroke-width="1.6"/>
<g fill="#1b1d22">
<circle cx="282" cy="110" r="3"/>
<circle cx="138" cy="110" r="3"/>
<circle cx="210" cy="38" r="3"/>
<circle cx="210" cy="182" r="3"/>
</g>
<g font-family="ui-sans-serif, system-ui, sans-serif" font-size="13" paint-order="stroke" stroke="#ffffff" stroke-width="3.5" stroke-linejoin="round">
<text x="176" y="136" fill="#3468d6">ℓ<tspan dy="-5" font-size="9">1</tspan></text>
<text x="146" y="164" fill="#c4772a">ℓ<tspan dy="-5" font-size="9">2</tspan></text>
<text x="112" y="198" fill="#6b7280">ℓ<tspan dy="-5" font-size="9">∞</tspan></text>
</g>
<g font-family="ui-sans-serif, system-ui, sans-serif" font-size="11" fill="#9aa0a6">
<text x="288" y="126">1</text>
<text x="216" y="34">1</text>
</g>
<text x="210" y="226" font-family="ui-sans-serif, system-ui, sans-serif" font-size="12" text-anchor="middle" fill="#1b1d22">外側の球ほど、同じベクトルに与える値が小さい</text>
</svg>
</div>.cont { margin: 0; text-align: center; }
.cont svg { width: 100%; max-width: 420px; height: auto; }内側のひし形が 、真ん中の円が 、外側の正方形が です。値が小さいノルムほど、 以下に収まる点が増え、球は大きくなります。
3 つの球面は と の 4 点で接します。座標軸の上では、どのノルムも同じ値を返すからです。
「球」と呼びますが、丸いとは限りません。丸いのは だけです。
ノルム
に対して、 ノルムを次で定めます。
と が、さきほどの 2 つです。 を大きくしていくと、値は に近づきます。
という記号は、この極限に由来します。無限大は本当に の意味なのです。
例: で を動かす
の変化を数値で追います。 で計算しました。
が大きいほど、最大成分の に近づいていきます。 乗すると大きい成分の寄与が支配的になり、小さい成分が埋もれるからです。
単調に減っている点も見逃せません。 ならば が、一般に成り立ちます。
例: では三角不等式が壊れる
として、同じ式に と を入れてみます。和は です。
一方 、 なので、三角不等式の右辺は にすぎません。 は偽です。
の式はノルムになりません。 という条件は飾りではないのです。
単位球の形で言えば、 のとき球が凸でなくなることに対応します。三角不等式と凸性は、同じことの言い換えにほかなりません。
ノルムの同値性
2 つのノルム と が同値であるとは、正の定数 があって次が成り立つことをいいます。
の上では、どんな 2 つのノルムも同値になります。有限次元なら、ノルムの選び方は収束の判定に影響しません。
あるノルムで に近づく点列は、別のノルムでも に近づきます。定数倍で挟まれている以上、片方が小さくなればもう片方も小さくなるからです。
例:同値性の定数を確かめる
と の間には、次の不等式があります。
左は最大成分だけを取り出した評価、右はすべての成分が最大値に等しいとした最悪の評価です。
、 で検算します。、、そして 。右側で等号が成立しています。
成分がそろっているときに右端、1 成分だけが立っているときに左端に達します。定数 はこれ以上小さくできません。
例: と の定数
同じことを と で見ます。
右の不等式はコーシー・シュワルツの不等式から出ます。 とすればよいのです。
なら で、、、。ここでも右で等号が成り立ちます。
同値ではあっても、定数は次元とともに増えます。 が大きい場面で「どのノルムでも同じ」と油断はできません。
内積から来るノルム
内積 があれば、 でノルムが作れます。 ノルムはまさにこの形です。
では、どんなノルムも内積から来るのでしょうか。答えは否で、しかも簡単な判定条件があります。
内積から来るノルムは、すべての で を満たす
平行四辺形の 2 本の対角線の長さの 2 乗和は、4 辺の長さの 2 乗和に等しい
この等式が破れれば、そのノルムは内積から来ません。逆に等式が成り立てばノルムは内積から来る、というのがジョルダン・フォン・ノイマンの定理です。
例: は内積から来ない
、 で試します。、 です。
ノルムでは 、 なので、左辺は になります。
右辺は です。 で、法則は破れました。
ノルムを与える内積は存在しません。 でも左辺が 、右辺が となり、やはり破れます。
例: では成り立つ
同じ を で測ります。、 です。
左辺は 、右辺も で一致します。
が特別扱いされる理由は、この内積構造にあります。角度や直交性を語れるのは だけで、 の世界に直角はありません。
例:行列のフロベニウスノルム
行列もベクトル空間の元なので、ノルムが入ります。成分を全部並べて ノルムを取ったものが、フロベニウスノルムです。
行列で計算します。
行列を「 次元ベクトル」と思っているだけなので、掛け算の構造は見ていません。計算は楽ですが、行列らしさは捨てています。
例:行列の作用素ノルム
行列を「ベクトルを動かす写像」と見ると、別のノルムが出てきます。単位ベクトルをどれだけ引き伸ばせるか、その最大値です。
対角行列で試します。
を代入すると で、最大値は のときの です。よって になります。
単位円を楕円に引き伸ばす倍率のうち、いちばん大きいものが作用素ノルムです。同じ行列のフロベニウスノルムは で、値が違います。
例:連続関数の sup ノルム
区間 上の連続関数の全体 も、ベクトル空間です。関数の長さは次で測れます。
で計算します。微分して とすれば、 が候補になります。
で、端点では 。絶対値の最大は なので、 です。
sup ノルムは「グラフが横軸から最も離れた高さ」を測ります。関数空間でも、長さの直観はそのまま通用します。
例:積分で測る
同じ関数空間に、別のノルムを入れられます。面積で測るのが 、2 乗平均で測るのが です。
で 3 つを比べます。
のときと不等号の向きが逆になりました。 の順です。
長さ 1 の区間で平均を取っているので、 が大きいほど値も大きくなります。成分を足し上げる とは事情が違うのです。
例:無限次元では同値でない
有限次元では、すべてのノルムが同値でした。関数空間では、この定理が崩れます。
を考えます。 で値が なので、 は によらず一定です。
いっぽう ノルムは、次のように へ落ちていきます。
を満たす定数 は存在しません。 を大きくすれば左辺は のまま、右辺はいくらでも小さくなるからです。
2 つのノルムは同値ではありません。 の意味で でも、sup ノルムの意味では は に近づかないのです。
図で見る
を大きくしたときのグラフの変化を描きます。
<div class="cont">
<svg viewBox="0 0 420 248" xmlns="http://www.w3.org/2000/svg" role="img" aria-label="x の n 乗のグラフと面積の変化">
<rect x="0" y="0" width="420" height="248" rx="10" fill="#fafbfc"/>
<polygon points="60,200 228,199.9 256,199.5 284,195.5 298,188.1 312,170.3 326,129.6 334,84.2 340,40 340,200" fill="#2a55c8" fill-opacity="0.10"/>
<line x1="60" y1="200" x2="352" y2="200" stroke="#c8ccd2" stroke-width="1"/>
<line x1="60" y1="200" x2="60" y2="30" stroke="#c8ccd2" stroke-width="1"/>
<polyline points="60,200 340,40" fill="none" stroke="#aab8d4" stroke-width="1.8"/>
<polyline points="60,200 88,198.4 116,193.6 144,185.6 172,174.4 200,160 228,142.4 256,121.6 284,97.6 312,70.4 340,40" fill="none" stroke="#8aa0d8" stroke-width="1.8"/>
<polyline points="60,200 88,200 116,199.7 144,198.7 172,195.9 200,190 228,179.3 256,161.6 284,134.5 312,95 340,40" fill="none" stroke="#6a88de" stroke-width="1.8"/>
<polyline points="60,200 172,199.9 200,199.4 228,197.3 256,190.8 284,173.2 298,156.4 312,131.1 326,93.9 340,40" fill="none" stroke="#4a70dc" stroke-width="1.8"/>
<polyline points="60,200 228,199.9 256,199.5 284,195.5 298,188.1 312,170.3 326,129.6 334,84.2 340,40" fill="none" stroke="#2a55c8" stroke-width="2"/>
<circle cx="340" cy="40" r="3.5" fill="#1b1d22"/>
<g font-family="ui-sans-serif, system-ui, sans-serif" font-size="11.5" fill="#6b7280">
<line x1="76" y1="52" x2="94" y2="52" stroke="#aab8d4" stroke-width="2"/>
<text x="100" y="56">n = 1</text>
<line x1="76" y1="70" x2="94" y2="70" stroke="#8aa0d8" stroke-width="2"/>
<text x="100" y="74">n = 2</text>
<line x1="76" y1="88" x2="94" y2="88" stroke="#6a88de" stroke-width="2"/>
<text x="100" y="92">n = 4</text>
<line x1="76" y1="106" x2="94" y2="106" stroke="#4a70dc" stroke-width="2"/>
<text x="100" y="110">n = 8</text>
<line x1="76" y1="124" x2="94" y2="124" stroke="#2a55c8" stroke-width="2"/>
<text x="100" y="128">n = 16</text>
</g>
<g font-family="ui-sans-serif, system-ui, sans-serif" font-size="11" fill="#9aa0a6">
<text x="52" y="44" text-anchor="end">1</text>
<text x="52" y="204" text-anchor="end">0</text>
<text x="340" y="216" text-anchor="middle">1</text>
</g>
<text x="344" y="30" font-family="ui-sans-serif, system-ui, sans-serif" font-size="11.5" text-anchor="end" fill="#1b1d22" paint-order="stroke" stroke="#ffffff" stroke-width="3" stroke-linejoin="round">どの n でも高さは 1</text>
<text x="210" y="236" font-family="ui-sans-serif, system-ui, sans-serif" font-size="12" text-anchor="middle" fill="#1b1d22">高さは 1 のまま、面積は 1/(n+1) → 0 に落ちる</text>
</svg>
</div>.cont { margin: 0; text-align: center; }
.cont svg { width: 100%; max-width: 420px; height: auto; }どの曲線も右端で高さ に達します。だから sup ノルムは のまま、びくとも動きません。
しかし が大きくなるほど曲線は横軸に貼りつき、下の面積は消えていきます。いちばん濃い の下を塗ってありますが、ほとんど残っていません。
ノルムが に向かうとは、この面積が消えることです。「近い」の意味がノルムごとに違う、という事実が目に見えています。
有限次元と無限次元の違い
どの 2 つのノルムも同値。収束するかどうかは、ノルムの選び方によらない。
同値でないノルムがある。どのノルムで測るかによって、収束するかどうかが変わる。
関数解析が「どの空間で考えるか」に神経を使うのは、この違いのためです。空間とノルムをセットで指定しないと、収束すら定まりません。
ではノルムを気にせず議論できました。その気楽さは、有限次元という強い仮定に支えられていたのです。
例:数列空間の包含
無限次元では、包含関係も有限次元と逆向きになります。数列 に対し、 は が収束するもの全体です。
を見ます。 は発散するので ですが、 は収束するので です。
つまり で、 のほうが広い。 が大きいほど、条件がゆるくなります。
有限次元では と は集合として一致し、ノルムの値が違うだけでした。無限次元では、住人そのものが違います。
例: にも入らない数列
を見ます。2 乗すると で、 は発散します。
したがって です。ところが で有界なので、 には入り、 となります。
という真の包含が、具体的な数列 2 つで確かめられました。
距離だけがある集合
ここまではベクトル空間の話でした。ここからは足し算のない世界に入ります。
原点がないので「長さ」は測れません。それでも 2 点の隔たりさえ測れれば、収束も連続も定義できます。それが距離空間の主張です。
以下、ベクトル空間ではない距離空間や、ノルムから来ない距離を並べます。
例:離散距離
任意の集合 に、次の距離が入ります。 のとき 、 のとき と定めるだけです。
三角不等式は場合分けで確かめられます。 なら左辺は ですが、右辺は が と の少なくとも一方と異なるので、 以上になります。
どんな集合でも距離空間にできる、という点が重要です。犬と猫と鳥の集合にすら、距離は入ります。
この距離では、半径 の開球は 1 点だけです。すべての点が孤立して、互いに近づけません。
例:ハミング距離
長さ のビット列の集合に、異なる位置の個数で距離を入れます。
、 なら、1 番目・2 番目・4 番目が食い違うので です。
符号理論では、この距離が誤り訂正の能力を決めます。符号語どうしの最小距離が 以上あれば、 個までの誤りを直せます。
ビット列は というベクトル空間でもありますが、係数体が実数でも複素数でもないので、ノルム空間の枠には収まりません。
例:編集距離
文字列の集合には、別の距離も入ります。1 文字の挿入・削除・置換を何回すれば一方が他方になるか、その最小回数です。
kitten と sitting の間は 3 です。k を s に置換、e を i に置換、末尾に g を挿入、という 3 手で移れます。
長さの違う文字列どうしでも測れるので、ハミング距離より柔軟です。スペルチェッカーや DNA 配列の比較で使われます。
三角不等式は定義から出ます。 から への最小手数は、 を経由する手順より短いか等しいからです。
例:球面上の距離
地球の表面上の 2 点の距離は、大円に沿った弧の長さで測ります。測地距離と呼ばれるものです。
球面はベクトル空間ではありません。2 点を足しても、球面の上に留まらないからです。
東京とロンドンを結ぶ直線は地中を貫いてしまい、意味を持ちません。飛行機が大円に沿って飛ぶのは、それが球面上の距離だからです。
例:フランス国鉄距離
平面の上に、変わった距離を入れます。 と が原点を通る同じ直線の上にあるときは、通常の距離 とします。
そうでないときは、いったん原点を経由します。
パリを中心に鉄道網が放射状に伸びるフランスでは、隣町へ行くのにいったんパリへ出る、という事態が起こります。名前はそこから来ています。
距離の公理は満たしますが、平行移動不変性は壊れます。原点という特別な点があるので、この距離はノルムから来ません。
例:-進距離
整数の集合に、素数 を使った距離を入れます。 のとき、差 が で何回割り切れるかを として、 と定めます。
とします。 は で 3 回割れるので、 です。
は で 1 回も割れないので、。 のほうが より に近いことになります。
「 で何回割れるか」が近さの尺度です。 進の世界では、 は のすぐ隣にあります。
例:すべての三角形が二等辺
-進距離は、三角不等式より強い次の不等式を満たします。
ここから奇妙な結論が出ます。3 点のうち 2 辺の長さが異なれば、残りの 1 辺は必ず長いほうと等しくなるのです。
つまり、どんな三角形も二等辺三角形になります。 進距離で 、、 とすれば、、、 で、たしかに 2 辺が等しくなっています。
を満たす距離を 超距離 といいます。
通常の三角不等式より強い条件で、数論のほか、木構造や階層クラスタリングにも現れます。
ユークリッド的な直観は、ここでは通用しません。距離の公理を満たすことと、平面の三角形のように振る舞うことは別なのです。
ノルム、距離、位相
距離が入れば、開球 が定義できます。開球が定義できれば、開集合も収束も連続も定義できます。
構造は次のように積み上がっています。
ノルム
距離
開球
収束・連続・完備性
下へ行くほど前提が弱くなり、扱える対象が増えます。逆に上へ行くほど道具が増え、言えることが強くなります。
距離空間論が広い応用を持つのは、この階段の下のほうに位置しているからです。
例:収束の定義
点列 が に収束するとは、 となることです。ノルム空間なら と書けます。
で は に収束します。 で測れば 、 で測れば で、どちらも に向かうからです。
有限次元ではノルムが同値なので、どの測り方でも結論は変わりません。収束はノルムの選び方に依存しないのです。
例:離散距離での収束
離散距離では、収束の様子ががらりと変わります。距離の値が か しかないためです。
とするには、ある番号から先で でなければなりません。 より小さくなった時点で、 に等しくなるからです。
収束列は、途中から定数列になるしかありません。 は通常の距離では に収束しますが、離散距離では のままで収束しないのです。
同じ集合でも、距離を変えれば収束の意味が変わる。この例がそれを端的に示しています。
コーシー列と完備性
点列 がコーシー列であるとは、番号を大きくすると項どうしが近づくことをいいます。 で となる、ということです。
収束列は必ずコーシー列になります。逆にコーシー列が必ず収束する距離空間を、完備であるといいます。
完備なノルム空間を バナッハ空間 といいます。
、sup ノルムの 、数列空間 は、どれもバナッハ空間です。
完備性とは「行き先が空間の中にある」ことの保証です。近づいているのに行き先がない、という事態を排除します。
例:有理数は完備でない
に通常の距離を入れ、 の小数展開を切り詰めた数列を考えます。
どの項も有理数で、項どうしはいくらでも近づきます。コーシー列です。
しかし行き先の は有理数ではありません。 の中に極限がないので、完備ではないのです。
は、この穴を埋めて作られます。完備化という操作の原型が、ここにあります。
例:sup ノルムの は完備
連続関数の列が sup ノルムでコーシー列なら、それは一様収束します。一様収束の極限は連続なので、行き先も の中にあります。
したがって sup ノルムの は完備で、バナッハ空間になります。
「一様収束の極限は連続」という定理が、そのまま完備性の証明になっています。
例: ノルムでは完備でない
同じ に ノルムを入れると、完備性が壊れます。階段関数に近づく連続関数の列を作ればよいのです。
を、 で 、 で 、その間を直線でつないだ関数とします。どの も連続です。
は幅 程度の細い三角形の面積なので、 に向かいます。 ノルムで はコーシー列です。
ところが行き先は、 で飛ぶ階段関数です。連続関数ではないので、 の中に極限がありません。
同じ空間でも、ノルムを変えれば完備性が変わります。 で完備にするには可測関数まで空間を広げる必要があり、それがルベーグ積分の要る理由の 1 つです。
理解の確認
、 とします。 ノルムが内積から来ないことを示すのは、次のどの計算ですか。
- で、2 つの長さが等しいこと
- に対し、 であること
- が と一致すること
距離と完備性だけで解が出る
完備距離空間には、強力な定理が住んでいます。バナッハの不動点定理です。
を完備距離空間、 を縮小写像とします。縮小写像とは、ある があって、すべての で となる写像のことです。
このとき は不動点をただ 1 つ持ちます。 となる が、必ず 1 つだけ存在するのです。
証明は素朴です。任意の点から始めて を繰り返し当て、その列がコーシー列になることを示せば、完備性から極限が手に入ります。
例:不動点を実際に探す
の上で を考えます。 なので、 の縮小写像です。
から始めます。、、、 と進み、 に近づいていきます。
不動点は を解いて 。どこから出発しても、同じ にたどり着きます。
縮小写像が微分方程式を解く
不動点定理の威力は、 を関数空間に取ったときに現れます。
微分方程式 、 は、積分方程式に書き換えられます。
右辺を に対する写像 と見ます。 に sup ノルムを入れれば完備であり、 がリプシッツ条件を満たせば は縮小写像になります。
不動点定理から、解がただ 1 つ存在することが従います。これがピカール・リンデレーフの定理です。
「長さ」を測る道具から出発して、微分方程式の解の存在にまでたどり着きました。ノルムと距離が解析学の土台と呼ばれるのは、この射程の広さゆえです。










内積から来るノルムは、平行四辺形の法則 ∥x+y∥2+∥x−y∥2=2∥x∥2+2∥y∥2 を必ず満たします。ℓ1 では ∥x+y∥1=∥x−y∥1=2 なので左辺は 8、右辺は 4 となり、等式が破れます。したがって ℓ1 ノルムを与える内積は存在しません。