統計検定の一級にチャレンジしています。Qiitaに投稿されているように3か月で受かったというような話ではなく、3回も落ちています。なかなかレベルが上がらないので、四苦八苦しています。記憶力も悪く、丸暗記ができません。以下のような知識が役に立つのではと考え、メモしました。コメントいただけると助かります。
はじめに
統計学を学ぶ際にまず集合と確率を学ぶ。 集合である事象にはつぎのような用語がある。
| 全事象 $ \Omega $ | 結果全体の集合 |
| 空事象 $ \phi $ | 標本点をもたない空集合 |
| $ A $ の余事象 $ A^c $ | $ A $ が起きないという事象 |
| $ A $ と $ B $ の和事象 $ A \cup B $ | $ A $ または $ B $ が起きるという事象 |
| $ A $ と $ B $ の積事象 $ A \cap B $ | $ A $ かつ $ B $ が起きるという事象 |
| $ A $ と $ B $ が排反 | $ A \cap B = \phi $ であること |
これは集合に関する統計検定一級の教科書の記述だ。また、確率$ P(\cdot) $に関しては 確率の定義を用いれば、次のような確率の性質も得ることができる。
定理 確率 $ P(\cdot) $ は以下を満たす:
1.空事象 $ \phi $ に対して $P(\phi) = 0$
2.$ A_1, A_2, \dots, A_n $ が互いに排反な事象ならば
$$P(A_1 \cup A_2 \cup \dots \cup A_n) = P(A_1) + P(A_2) + \dots + P(A_n)$$
3.任意の事象 $ A $ に対して $P(A^c) = 1 - P(A)$
4.任意の事象 $ A $ と $ B $ に対して$P(A \cup B) = P(A) + P(B) - P(A \cap B)$
と書かれている。しかし、実際のこれだけの記述から問題を解こうとしても、なかなかこのフレームワークに載せることは難しい。もっと、より現実的な方法はないだろうか?そこで出てくるのが測度論であるが、それはちょっと障壁が高い。そこで、測度論はよくわからなくとも、概要だけを理解しておけば、役に立ちそうなものはだんだろうか。そこで”最小のσ加法族と原子分割の利用"と題して、過去3年間の出題を整理してみたところ、半数近くがこの枠組みに入ってくることが分かった。
1. 最小のσ加法族と原子分割
$\Omega$ を有限(あるいは可算)原子の分割 ${A_i}_{i\in I}$ によって表す。任意の事象は原子の和で表され、確率は原子確率 $p_i=P(A_i)$ で決まる($p_i\ge0,\ \sum_i p_i=1$)。
2つの離散変数(あるいは事象の組)$(X,Y)$ では、原子は直積セル $(x,y)$ で、結合測度(結合分布)を
$$
\pi(x,y)\ge0,\quad \sum_y \pi(x,y)=\mu(x),\quad \sum_x \pi(x,y)=\nu(y)
$$
と書く。ここで $\mu,\nu$ は周辺。可算なら以降は総和、連続なら積分に置換すればよい。原子分割は、すべての事象をうまく重なり合わないように分割して、各確率の総和が1になるように分割したもので、排反事象も含む。
3事象の例
確率空間の事象 $A, B, C$ の確率がそれぞれ
$$ P(A) = P(B) = P(C) = \frac{3}{4} \tag{1} $$
であるとする。
事象 $A, B, C$ が互いに独立とは限らないとき、$P(A \cap B \cap C)$ の取り得る値の範囲はつぎのようになる。
三事象の原子を
$$
\begin{align*}
&E_1=ABC,\
&E_2=ABC^c,\
&E_3=AB^cC,\
&E_4=A^cBC,\
&E_5=AB^cC^c,\
&E_6=A^cBC^c,\
&E_7=A^cB^cC,\
&E_8=A^cB^cC^c
\end{align*}
$$
とし,$p_i=P(E_i)\ (\ge0)$,$\sum_{i=1}^8p_i=1$ と置く。すると
$$
\begin{align*}
&P(A)=p_1+p_2+p_3+p_5,\quad\
&P(B)=p_1+p_2+p_4+p_6,\
&P(C)=p_1+p_3+p_4+p_7,\quad\
&P(ABC)=p_1.
\end{align*}
$$
上限は包含から直ちに
$$
P(ABC)=p_1\le \min\lbrace P(A),P(B),P(C)\rbrace.
$$
下限は $S:=P(A)+P(B)+P(C)$ を用いて導く。上の和から
$$
S=3p_1+2(p_2+p_3+p_4)+(p_5+p_6+p_7).
$$
一方,$1=\sum_{i=1}^8p_i=p_1+(p_2+p_3+p_4)+(p_5+p_6+p_7)+p_8$ より
$$
(p_2+p_3+p_4)+(p_5+p_6+p_7)\le 1-p_1.
$$
$S$ を固定して $p_1$ を最小化するには,係数が大きい項にできるだけ割り当てればよいので
$(p_2+p_3+p_4)=1-p_1,\ (p_5+p_6+p_7)=0$ とすると
$$
S\le 3p_1+2(1-p_1)=p_1+2 \ \Rightarrow\ p_1\ge S-2.
$$
また $p_1\ge 0$ だから
$$
P(ABC)\ge \max\lbrace S-2,\ 0\rbrace.
$$
以上より Fréchet 境界
$$
\max\lbrace P(A)+P(B)+P(C)-2,\ 0\rbrace\ \le\ P(ABC)\ \le\ \min\lbrace P(A),P(B),P(C)\rbrace.
$$
本問では $P(A)=P(B)=P(C)=\tfrac34$ なので
$$
\tfrac14\ \le\ P(ABC)\ \le\ \tfrac34.
$$
(達成例:下限は $p_1=\tfrac14,\ p_2=p_3=p_4=\tfrac14,\ \text{他}=0$。上限は $A=B=C$ とすれば $p_1=\tfrac34$。)
これに、さらに条件
$$ P(A \cap B) = P(A)P(B), P(A \cap C) = P(A)P(C), P(B \cap C) = P(B)P(C) $$
を追加したとき、$P(A \cap B \cap C)$ の取り得る値の範囲はつぎのように変わる。
$$
\begin{align*}
&E_1=ABC,\
&E_2=ABC^c,\
&E_3=AB^cC,\
&E_4=A^cBC,\
&E_5=AB^cC^c,\
&E_6=A^cBC^c,\
&E_7=A^cB^cC,\
&E_8=A^cB^cC^c\
&p_i=P(E_i)\ (\ge0)
\end{align*}
$$
条件より $P(A)=P(B)=P(C)=\tfrac34$、
対独立で $P(AB)=P(AC)=P(BC)=\left(\tfrac34\right)^2=\tfrac{9}{16}$。
$x:=P(ABC)=p_1$ とおくと
$$
\begin{align*}
p_2&=P(AB)-P(ABC)=\tfrac{9}{16}-x,\
p_3&=P(AC)-P(ABC)=\tfrac{9}{16}-x,\
p_4&=P(BC)-P(ABC)=\tfrac{9}{16}-x,\
p_5&=P(A)-P(AB)-P(AC)+P(ABC)=x-\tfrac{3}{8},\
p_6&=x-\tfrac{3}{8},\qquad\
p_7&=x-\tfrac{3}{8},\
p_8&=1-\sum_{i=1}^7 p_i
=1-\Bigl[x+3\Bigl(\tfrac{9}{16}-x\Bigr)+3\Bigl(x-\tfrac{3}{8}\Bigr)\Bigr]
=\tfrac{7}{16}-x.
\end{align*}
$$
非負性 $p_i\ge0$ から
$$
x\ge \tfrac{3}{8},\qquad x\le \tfrac{9}{16},\qquad x\le \tfrac{7}{16}.
$$
よって最終的に
$$
\tfrac{3}{8}\ \le\ P(A\cap B\cap C)=x\ \le\ \tfrac{7}{16}.
$$
(達成例:$x=\tfrac{3}{8}$ では $p_5=p_6=p_7=0,\ p_2=p_3=p_4=\tfrac{3}{16},\ p_8=\tfrac{1}{16}$。$x=\tfrac{7}{16}$ では $p_8=0,\ p_2=p_3=p_4=\tfrac{1}{8},\ p_5=p_6=p_7=\tfrac{1}{16}$。)
2. 測度
測度論は、事象(集合として得られた情報)を実数空間などへ写しても矛盾なく「確率」で扱えるようにする枠組みである。
測度(measure)
定義
可測空間 $(\Omega,\mathcal F)$ の各集合に「大きさ(重さ)」を割り当てる写像
$$
\mu:\mathcal F\to[0,\infty]
$$
で、次を満たすものが測度
- $\mu(\varnothing)=0$
- ${A_i}$ が互いに排反なら($A_i\cap A_j=\varnothing$)
$$
\mu\Big(\bigcup_{i=1}^\infty A_i\Big)=\sum_{i=1}^\infty \mu(A_i)\quad\text{(可算加法性)}
$$
与えられた集合族 $\mathcal C$ を含む最小の $\sigma$ 加法族を $\sigma(\mathcal C)$ とし、必要に応じてそれを採用
ここで、標本空間 $\Omega$を得られうる結果の全体とし 、$\mathcal F$は、観測したい事象をすべて含む 最小の σ–加法族 。$A_i$ は、標本空間 $\Omega$ の部分集合で、$\sigma$加法族 $\mathcal F$ の要素(= 可測集合・事象)。与えられた集合族 $\mathcal C$ を含む最小の $\sigma$ 加法族を $\sigma(\mathcal C)$ とし、必要に応じてそれを採用
- $\Omega\in\mathcal F,\ \varnothing\in\mathcal F$
- 補集合に閉じる:$A\in\mathcal F\Rightarrow A^c\in\mathcal F$
- 可算和に閉じる:$A_1,A_2,\dots\in\mathcal F\Rightarrow \bigcup_{i=1}^\infty A_i\in\mathcal F$
(可算交わりも自動的に閉じる:De Morgan より。)
測度を備えた三つ組 $(\Omega,\mathcal F,\mu)$ が測度空間。$\mu(\Omega)=1$ なら確率測度、すなわち確率空間 $(\Omega,\mathcal F,P)$。つまり、測度空間 $(\Omega,\mathcal F,\mu)$は測る「対象(集合族)」だけを決めた可測空間 $(\Omega,\mathcal F)$に「大きさ」を与えたもの。
代表例
- 数え上げ測度(counting)
$\Omega$ 任意、$\mu(A)=#A$。離散確率の土台。 - 確率測度
$P(A)$ がそのまま測度。例:サイコロで $P({1})=1/6$。 - ルベーグ測度($\mathbb R$ の長さ)
区間の長さを与える:$\mu([a,b])=b-a$。面積・体積に一般化可能。 - ディラック測度 $\delta_x$
$\delta_x(A)=1$ if $x\in A$, $0$ otherwise(点質量)。 - 重み付き確率
離散 $\Omega={x_i}$ に重み $w_i\ge0,\ \sum w_i=1$ を与え $\mu(A)=\sum_{x_i\in A} w_i$。
基本例
- 可算離散:$\Omega={1,2,\dots}$、$\mathcal F=2^\Omega$、$\mu(A)=\sum_{i\in A} w_i$($w_i\ge0$)。
- ルベーグ測度:$\Omega=\mathbb R^d$、$\mathcal F=$ ボレル集合族、$\mu=$ ルベーグ測度(長さ・面積・体積の一般化)。
よく使う性質(最小限)
- 完備性:$\mu$-零集合の部分集合も可測にする(拡大)。
- $\sigma$-有限:$\Omega$ を有限測度の可算合併で覆える(積分・Fubiniに便利)。
基準測度 $\lambda$ の役割
-
「密度」を定義するための基準
測度は本来 $\mu(A)$ という形でしか与えらない。密度 $f$ は
$$\mu(A)=\int_A fd\lambda\qquad(\mu\ll\lambda)$$
と表すために、まず比較対象=基準測度 $\lambda$ が必要(Radon–Nikodym)。 -
離散/連続/混合を一元化
離散なら計数測度 $\lambda=$、連続ならルベーグ測度、混合ならそれらの和。
こうすると pmf も pdf も
$$f=\frac{d\mu}{d\lambda}$$
という同じ記法で扱える。 -
一意性と可換な演算の保証
$f=d\mu/d\lambda$ は $\lambda$-零集合を除いて一意。これにより、期待値・尤度、尤度比
$$\frac{d\mu_1}{d\mu_0}=\frac{d\mu_1/d\lambda}{d\mu_0/d\lambda}$$
などの計算が安定する。 -
変数変換の正当化: $Y=T(X)$ の密度変換は
$$f_Y(y)=f_X(T^{-1}(y)),\bigl|\det D T^{-1}(y)\bigr|$$
と $T^{-1}$ のヤコビアンを明示($J_{T^{-1}}$ = $D T^{-1}$)。
あるいは $x=T^{-1}(y)$ として $f_Y(y)=f_X(x),|\det D T^{-1}(y)|$。 -
「密度は基準依存」への注意
$\lambda' = c\lambda$ に替えると密度は $f' = f/c$。
つまり密度は数値としては基準依存、しかし $\mu$ 自体(積分値)は不変。
3. マルコフカーネル
可測空間→測度→基準測度と密度に沿って、マルコフカーネルを最小構成で説明。
- マルコフカーネルは可測空間間の「条件付き測度の写像」で、測度空間をつなぐ道具:$d\pi(x,y)=K(dy\mid x)\mu(dx)$。
定義(可測空間どうし)
可測空間 $(\mathcal X,\mathcal A)$ と $(\mathcal Y,\mathcal B)$ に対し、写像
$$
K:\ \mathcal X\times\mathcal B\to[0,1]
$$
が次を満たすとき マルコフカーネル(確率核)と呼ぶ。
(1) 各 $x\in\mathcal X$ で $B\mapsto K(B\mid x)$ は $(\mathcal Y,\mathcal B)$ 上の確率測度。
(2) 各 $B\in\mathcal B$ で $x\mapsto K(B\mid x)$ は $\mathcal A$-可測。
密度(基準測度 $\lambda$ を使う表現、$K(\cdot\mid x)\ll\lambda$(通常 $\sigma$-有限))
- 基準測度 $\lambda$(通常ルベーグ)。各 $x$ で $K(\cdot\mid x)\ll\lambda$ とすると
$$
K(B\mid x)=\int_B k(y\mid x)d\lambda(y),\quad k=\frac{dK(\cdot\mid x)}{d\lambda}.
$$ - $\mu$は$X$ の分布で 、$f_X$ は基準測度($\lambda$)に関する$X$の密度
$$
f_Y(y)=\int k(y\mid x)f_X(x)dx.
$$ - 結合は
$$
d\pi(x,y)=K(dy\mid x)\mu(dx) \quad\text{密度があれば } f_{X,Y}(x,y)=k(y\mid x)f_X(x).
$$
2つの「作用」=作用素としての顔
-
測度への右作用(分布を分布へ)
$$
(\mu K)(B)=\int_{\mathcal X} K(B\mid x)\mu(dx).
$$
$X\sim\mu$ に核 $K$ を合成すると $Y$ の分布 $\mu K$ が得られる(混合・周辺化)。 -
関数への左作用(関数を関数へ)
$$
(Kf)(x)=\int_{\mathcal Y} f(y)K(dy\mid x).
$$
塔則:
$$
\int fd(\mu K)=\int (Kf)d\mu.
$$
結合=周辺×核(条件付確率の一般形)
$X\sim\mu$ と核 $K$ から、結合測度
$$
d\pi(x,y)=K(dy\mid x)\mu(dx)\quad(\pi=\mu K)
$$
が作れる。正則条件付分布が存在する状況では $K(B\mid x)=P(Y\in B\mid X=x)$。
独立は $K(\cdot\mid x)\equiv \nu$($x$ に依存しない)で $\pi=\mu\otimes\nu$。
離散と連続の最小例
- 離散:$X\in{x_i}{i=1}^m , Y\in{y_j}{j=1}^n$。
$K_{ij}=P(Y=y_j\mid X=x_i)$(行和1の行列)、$p_Y=p_XK$。 - 連続:$K(dy\mid x)=k(y\mid x)dy$、$X\sim\mu$。
- 一般形:$$f_Y(y)=\int k(y\mid x)\mu(dx)\quad\text{($X$ が密度をもたない一般測度の場合)}$$
- $X$ も密度 $f_X$ を持つなら:
$$
f_Y(y)=\int k(y\mid x)f_X(x)dx.
$$
特殊核
- ディラック核(決定的写像 $Y=g(X)$):$K(dy\mid x)=\delta_{g(x)}(dy)$。
- 合成(Chapman–Kolmogorov):核 $K:\mathcal X\to\mathcal Y$,$L:\mathcal Y\to\mathcal Z$ で
$$(L\circ K)(C\mid x)=\int_\mathcal{Y} L(C\mid y)K(dy\mid x).$$
要点:カーネルは「$x$ を入れると $Y$ の確率測度(密度なら $k(\cdot\mid x)$)を返す装置」。基準測度 $\lambda$ を入れると密度表示で統一でき、$\pi=\mu K$ と塔則で混合・周辺化・独立・積分交換を一貫処理できる。
補足:
$(\mu K)(B)$ の意味と記法の構成
これは、マルコフカーネル $K$ が、元の測度 $\mu$ を変換してできた新しい測度を、集合 $B$ 上で評価した値、すなわち新しい測度による集合 $B$ の大きさを表す。
- 新しい測度 $\mu K$
まず、$\boldsymbol{\mu K}$ という部分は、元の測度 $\mu$ とマルコフカーネル $K$ の合成によって得られた新しい測度(確率分布)の名前。
- マルコフカーネル $K$ は、「$x$ が与えられたときの $Y$ の条件付き分布 $K(\cdot \mid x)$」を返す。
- 測度 $\mu$ は、この $x$ が発生する確率(重み)を表す。
この $\mu K$ は、合成測度や周辺測度と呼ばれるもので、次の式で定義される。
$$
(\mu K)(B) = \int_{\mathcal X} K(B \mid x) \mu(dx)
$$
これは、$\mathcal X$ 上の各点 $x$ における条件付き確率 $K(B \mid x)$ を、$\mu$ という重みで平均(積分)していることを意味する。結果として、$Y$ の空間 $\mathcal Y$ 上の測度(分布)が得られる。
- $B$:可測集合
括弧の外側の $\boldsymbol{(B)}$ は、その新しい測度 $\mu K$ が作用する対象、すなわち可測集合(事象)を表す。
新しい測度 $\mu K$ は、$\mathcal Y$ 上の $\sigma$-加法族 $\mathcal B$ の要素(集合)に対して値を返す。したがって、$(\mu K)(B)$ は、新しい測度 $\mu K$ の下での集合 $B$ の測度値だ。
順番と括弧の役割
この記法は、$\mu$(測度)と $K$(カーネル)を作用素として捉えると理解しやすい。
- 測度への作用(右作用)
マルコフカーネル $K$ を作用素と見たとき、それは測度の空間から測度の空間への写像として機能する。
$$
K: \quad \text{測度空間}(\mathcal X) \to \text{測度空間}(\mathcal Y)
$$
$\mu K$ という順番は、$\mu$ に $K$ が「右から作用する」ことを示しており、線形代数の行列の掛け算に近い発想だ。
- 元の分布 $\mu$(ベクトル)
- 変換 $K$(行列、遷移核)
- 新しい分布 $\mu K$(結果のベクトル)
$$
(\text{元の分布}) \times (\text{変換}) = (\text{新しい分布})
$$
- 括弧の役割
$(\mu K)(B)$ の括弧は、「関数とその引数」の関係を明確に示している。
- $\mu K$ は、一つの新しい関数(測度)の名前。
- この関数 $\mu K$ の引数(入力)が $B$。
# ルベーグ測度の直観を掴むための最小コード(可視化つき)
# 方針:実数直線上の「有限個の区間の和集合」の“長さ”を測る関数 m(U) を実装し、
# 代表的な性質(区間の長さ、一致加法性、平行移動不変、単調性、点の測度0、
# カントール集合の長さ→0、[0,1]内有理数の ε 被覆)を確認します。
from fractions import Fraction
from math import isclose
import itertools
import numpy as np
import matplotlib.pyplot as plt
# ---------- 基本:有限個の半開区間 [a,b) の和集合の長さ ----------
def merge_intervals(intervals):
"""半開区間 [a,b) のリストをマージして互いに交わらない形に整える。"""
ints = [(float(a), float(b)) for a,b in intervals if float(a) < float(b)]
if not ints:
return []
ints.sort()
merged = [ints[0]]
for a,b in ints[1:]:
la, lb = merged[-1]
if a <= lb: # 重なり or 接触([a,b)なので a==lb は重なりなし→そのまま連結してOK)
merged[-1] = (la, max(lb, b))
else:
merged.append((a,b))
return merged
def measure_union(intervals):
"""有限個の半開区間 [a,b) の和集合のルベーグ測度(=長さ)"""
merged = merge_intervals(intervals)
return sum(b-a for a,b in merged)
# ---------- 1) 区間の長さ ----------
I = [(0, 1.25)]
m_I = measure_union(I)
# ---------- 2) 可算(ここでは有限)加法性(互いに素な区間の和は長さの和に等しい)----------
J = [(0,0.5), (0.5, 0.75), (0.75, 1.25)]
m_J = measure_union(J)
additivity_ok = isclose(m_I, m_J, rel_tol=1e-12, abs_tol=1e-12)
# ---------- 3) 平行移動不変性 m(A+t)=m(A) ----------
shift = 3.7
I_shift = [(a+shift, b+shift) for a,b in I]
m_I_shift = measure_union(I_shift)
shift_ok = isclose(m_I, m_I_shift, rel_tol=1e-12, abs_tol=1e-12)
# ---------- 4) 単調性 A⊂B ⇒ m(A)≤m(B) ----------
A = [(0.1, 0.4), (0.6, 0.7)]
B = [(0, 1)]
mono_ok = measure_union(A) <= measure_union(B)
# ---------- 5) 点の測度 0(有限点集合の測度は0)----------
points = [(0.3, 0.3), (0.3, 0.3), (1.0, 1.0)]
m_points = measure_union(points) # 半開区間 [a,a) は空集合として 0
points_ok = (m_points == 0.0)
# ---------- 6) カントール集合:長さ→0(n段目の残り長さ=(2/3)^n)----------
def cantor_intervals(n):
"""n段目に残る区間列(半開 [a,b) の列)を返す。"""
ints = [(0.0,1.0)]
for _ in range(n):
nxt = []
for a,b in ints:
L = (b - a)/3.0
nxt.append((a, a+L)) # 左の三分の一
nxt.append((b - L, b)) # 右の三分の一
ints = nxt
return ints
cantor_ns = list(range(0,8))
cantor_lengths = [measure_union(cantor_intervals(n)) for n in cantor_ns] # 理論値は (2/3)^n
# ---------- 7) [0,1] 内の有理数の ε-被覆(有限版の直観実験)----------
# 0〜1 の最初の N 個の既約分数(分母上限 Q)を取り、幅を合計 < ε となるように被覆。
def rationals_in_01(Q):
S = set()
for q in range(1, Q+1):
for p in range(0, q+1):
r = Fraction(p, q)
if 0 <= r <= 1:
S.add(r) # 自然に既約化される
return sorted(S)
Q = 12
rats = rationals_in_01(Q)
N = len(rats)
# 幅の割当:各 r_k に対し長さ ε / 2^{k+1} の開区間で被覆(総和 ≤ ε/2)
eps = 1e-3
intervals_cover = []
for k, r in enumerate(rats, start=1):
w = eps / (2(k+1))
c = float(r)
intervals_cover.append((c - w/2, c + w/2))
cover_length = measure_union(intervals_cover)
# 表示まとめ
print("=== ルベーグ測度の直観デモ(有限区間の長さ) ===")
print(f"1) 区間の長さ: m([0,1.25)) = {m_I:.6f}")
print(f"2) 一致加法性(分割しても総長さ不変): m(J) = {m_J:.6f} -> OK? {additivity_ok}")
print(f"3) 平行移動不変: m(I+{shift}) = {m_I_shift:.6f} -> OK? {shift_ok}")
print(f"4) 単調性: m(A) <= m(B) -> {measure_union(A):.6f} <= {measure_union(B):.6f} -> OK? {mono_ok}")
print(f"5) 点(有限個)の測度: m(points) = {m_points:.6e} -> OK? {points_ok}")
print("6) カントール集合(n段目の残り長さ):")
for n, L in zip(cantor_ns, cantor_lengths):
print(f" n={n}: 長さ ≈ {L:.6f} (理論値 (2/3)^n ≈ { (2/3)n :.6f})")
print("(図:n と 残り長さをプロット)")
# プロット(n vs 残り長さ)
plt.figure()
plt.plot(cantor_ns, cantor_lengths, marker='o')
plt.title("Cantor set: remaining length at step n")
plt.xlabel("n (iteration)")
plt.ylabel("length")
plt.grid(True)
plt.show()
print("\n7) [0,1]内の有理数の ε-被覆(有限版):")
print(f" Q={Q} で個数 N={N} の有理数を幅の和 ≈ {cover_length:.6e} < ε={eps} で被覆。")
print(" 直観:可算集合は、“合計の幅”を小さく抑えながら、その集合全体を区間で包み込める → ルベーグ測度 0 ")
=== ルベーグ測度の直観デモ(有限区間の長さ) ===
- 区間の長さ: m([0,1.25)) = 1.250000
- 一致加法性(分割しても総長さ不変): m(J) = 1.250000 -> OK? True
- 平行移動不変: m(I+3.7) = 1.250000 -> OK? True
- 単調性: m(A) <= m(B) -> 0.400000 <= 1.000000 -> OK? True
- 点(有限個)の測度: m(points) = 0.000000e+00 -> OK? True
- カントール集合(n段目の残り長さ):
n=0: 長さ ≈ 1.000000 (理論値 (2/3)^n ≈ 1.000000)
n=1: 長さ ≈ 0.666667 (理論値 (2/3)^n ≈ 0.666667)
n=2: 長さ ≈ 0.444444 (理論値 (2/3)^n ≈ 0.444444)
n=3: 長さ ≈ 0.296296 (理論値 (2/3)^n ≈ 0.296296)
n=4: 長さ ≈ 0.197531 (理論値 (2/3)^n ≈ 0.197531)
n=5: 長さ ≈ 0.131687 (理論値 (2/3)^n ≈ 0.131687)
n=6: 長さ ≈ 0.087791 (理論値 (2/3)^n ≈ 0.087791)
n=7: 長さ ≈ 0.058528 (理論値 (2/3)^n ≈ 0.058528)
(図:n と 残り長さをプロット)
