高校物理159140 views
小学算数1198314 views
いろは3000890 views
りんご202163 views
高校国語787039 views
教育149247 views
中学社会667787 views
雑学1473194 views
Computer366795 views
高校化学2918822 views

ノルム空間と距離空間|単位球の形から完備性・不動点定理までを具体例で解説

で「長さがちょうど 1 のベクトル」を全部描くと、円になるとは限りません。ノルムの選び方しだいで、その図形はひし形にも正方形にもなります。

長さの測り方は 1 通りではない、ということです。何を「長さ」と呼んでよいかを決める規則、それがノルムの公理にほかなりません。

ノルム空間は、ベクトル空間に「長さ」の概念を導入したものです。距離空間はより一般的な設定で、2 点間の「距離」が定義された集合です。

ノルムの定義

ベクトル空間 (実数体または複素数体上)に対して、写像 が次の 3 条件を満たすとき、 をノルムといいます。

正値性

すべての に対して であり、

斉次性

すべての とスカラー に対して

三角不等式

すべての に対して

ノルムが定義されたベクトル空間を ノルム空間 といいます。

3 条件はどれも直観に沿っています。長さは負にならず、2 倍に伸ばせば長さも 2 倍になり、遠回りは近道より長い。

とくに三角不等式は、このあと何度も効いてきます。ノルムかどうかを疑うとき、たいてい壊れるのはここです。

距離空間の定義

集合 に対して、写像 が次の条件を満たすとき、 を距離関数といいます。まず値は負にならず、 になるのは 2 点が一致するときに限ります。

次に、測る向きを変えても値は変わりません。対称性と呼ばれる条件です。

最後が三角不等式で、 を経由すると遠回りになる、という要請にあたります。

距離関数が定義された集合を 距離空間 といい、 と書きます。 に演算は要りません。足し算もスカラー倍もない、ただの集合で構いません。

ノルム空間と距離空間の違い

ノルム空間

ベクトル空間が土台。原点があり、足し算とスカラー倍が使える。 は 1 点の「長さ」を表す。

距離空間

ただの集合が土台。原点も演算もない。測れるのは 2 点の「隔たり」だけで、1 点の大きさは意味を持たない。

ノルムは距離より多くを前提にし、そのぶん多くを語ります。距離空間は前提が少ないので、応用範囲がはるかに広い。

文字列の集合、地球の表面、遺伝子の配列。どれもベクトル空間ではありませんが、距離なら入ります。

ノルム空間から距離空間へ

ノルム空間 には、次の式で自然に距離が定まります。

これが距離の公理を満たすことは、ノルムの公理から出ます。、つまり と同値です。

対称性は斉次性から従います。 となるからです。

三角不等式は と分解して、ノルムの三角不等式を当てるだけで済みます。

したがって、すべてのノルム空間は距離空間です。以後、ノルム空間といえば、この距離が入ったものとみなします。

逆は成り立たない

距離空間は必ずしもベクトル空間ではないので、逆は成り立ちません。ではベクトル空間の上の距離なら、必ずノルムから来るのでしょうか。

これも違います。ノルム由来の距離は、次の 2 つの性質を必ず持つからです。

平行移動不変性:
斉次性:

どちらも に代入すれば、すぐ確かめられます。逆にこの 2 条件を満たす距離は、 というノルムから来ます。

例:ノルムから来ない距離

の上に と定めます。距離の公理はすべて満たします。

ところが斉次性が壊れます。 である一方、 となり、値が一致しません。

遠いところを一律に「距離 1」で打ち切っているので、スカラー倍に比例しないのです。ベクトル空間の上の距離でも、ノルム由来とは限りません。

の 3 つのノルム

上のノルムとして、次のものがよく使われます。

ノルム
ノルム(ユークリッドノルム)
ノルム

は碁盤の目を歩く距離、 は定規で直線を測る距離、 は最悪の成分だけを見る距離です。

別名もあります。 はマンハッタン距離、 はチェビシェフ距離と呼ばれます。

例: を 3 通りで測る

同じベクトルでも、ノルムが違えば値が違います。 で計算します。

と並びました。成分を全部足す が最大で、最大成分だけを見る が最小になります。

この順序は偶然ではありません。 は、どのベクトルでも成り立ちます。

例: を測る

成分がそろっているときは、次元の効き方がはっきり見えます。 で計算します。

一般に です。次元を上げるほど、3 つの値は大きく開いていきます。

なら の比は 1000 倍になります。高次元でノルムの選び方が問題になるのは、この開きのためです。

図で見る単位球

を満たす点の集合を単位球、その境界 を単位球面といいます。 で 3 つのノルムの単位球面を重ねて描きます。

HTML
CSS
JavaScript
<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 ノルムの意味では に近づかないのです。

図で見る

を大きくしたときのグラフの変化を描きます。

HTML
CSS
JavaScript
<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 つの長さが等しいこと
  • に対し、 であること
  • と一致すること
__RESULT__

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

距離と完備性だけで解が出る

完備距離空間には、強力な定理が住んでいます。バナッハの不動点定理です。

を完備距離空間、 を縮小写像とします。縮小写像とは、ある があって、すべての となる写像のことです。

このとき は不動点をただ 1 つ持ちます。 となる が、必ず 1 つだけ存在するのです。

証明は素朴です。任意の点から始めて を繰り返し当て、その列がコーシー列になることを示せば、完備性から極限が手に入ります。

例:不動点を実際に探す

の上で を考えます。 なので、 の縮小写像です。

から始めます。 と進み、 に近づいていきます。

不動点は を解いて 。どこから出発しても、同じ にたどり着きます。

縮小写像が微分方程式を解く

不動点定理の威力は、 を関数空間に取ったときに現れます。

微分方程式 は、積分方程式に書き換えられます。

右辺を に対する写像 と見ます。 に sup ノルムを入れれば完備であり、 がリプシッツ条件を満たせば は縮小写像になります。

不動点定理から、解がただ 1 つ存在することが従います。これがピカール・リンデレーフの定理です。

「長さ」を測る道具から出発して、微分方程式の解の存在にまでたどり着きました。ノルムと距離が解析学の土台と呼ばれるのは、この射程の広さゆえです。

ノルム空間と距離空間を具体例で解説。ℓ1・ℓ2・ℓ∞ の単位球はひし形・円・正方形、p < 1 では三角不等式が壊れる。平行四辺形の法則、無限次元でのノルム非同値、離散距離・p 進距離、完備性と不動点定理まで図つきで解説。