コンピュータで積分の近似値を求めるとき、乱数を使うと「たまたま偏った点が出る」ことで誤差が残ります。それなら、はじめから偏りが出ないように点を並べておけばよいのではないか、というのがこの記事の出発点です。点がどれだけ均等に並んでいるかを数で測り、その数が小さい並べ方を使うと、乱数より速く誤差が小さくなることを、証明つきで示します。読み終えると、どんな点の並べ方を選べばよいか、なぜそれで誤差が抑えられるか、実際の計算で誤差をどう見積もるかが分かります。
点集合が一様分布からどれだけずれているかを星型食い違い量 D N ∗ D_N^* D N ∗ で測ります。1 次元では D N ∗ ≥ 1 / ( 2 N ) D_N^* \ge 1/(2N) D N ∗ ≥ 1/ ( 2 N ) で、閉じた式で計算できます(命題 2.3 )。
列が一様分布することは、すべての非零の整数ベクトル h h h について指数和の平均 N − 1 ∑ n e 2 π i h ⋅ x n N^{-1}\sum_n e^{2\pi i h\cdot x_n} N − 1 ∑ n e 2 π ih ⋅ x n が 0 0 0 に収束することと同値です(定理 3.2 )。
混合偏導関数が連続な被積分関数について、等重みの求積の誤差は「関数の変動 × \times × 点集合の食い違い量」で抑えられます(定理 4.4 )。関数の性質と点の性質が分かれるのが要点です。
Halton 列は N D N ∗ ≤ ∏ j ( ( b j − 1 ) ⌈ log b j N ⌉ + 1 ) = O ( ( log N ) d ) N D_N^* \le \prod_j((b_j - 1)\lceil\log_{b_j}N\rceil + 1) = O((\log N)^d) N D N ∗ ≤ ∏ j (( b j − 1 ) ⌈ log b j N ⌉ + 1 ) = O (( log N ) d ) を満たします(定理 5.4 )。誤差は O ( N − 1 ( log N ) d ) O(N^{-1}(\log N)^d) O ( N − 1 ( log N ) d ) で、Monte Carlo 法の N − 1 / 2 N^{-1/2} N − 1/2 より速く減ります。
周期関数には格子則 が向いています。誤差は双対格子(h ⋅ g h\cdot g h ⋅ g が N N N の倍数になる整数ベクトル h h h の全体)の上の Fourier 係数 の和に等しく、素数 N N N について最悪誤差が O ( N − α ( log N ) α d ) O(N^{-\alpha}(\log N)^{\alpha d}) O ( N − α ( log N ) α d ) になる生成ベクトル(格子の点 { n g / N } \{ng/N\} { n g / N } を決める整数ベクトル g g g )があります(定理 6.3 )。
決定的な点集合に一様な無作為の平行移動を施すと、推定量が不偏になり、標準誤差を推定できます(命題 7.2 )。高次元で準 Monte Carlo 法が効くのは、被積分関数の分散が少数の変数の成分に集中している(有効次元が小さい。分散の大部分が何変数までの成分に収まるかを表す数)ときです(命題 7.4 )。
この記事で使う事前知識
Monte Carlo 積分の標準誤差 : 独立な乱数の平均で積分を近似したとき、誤差の大きさを表す量(σ / N \sigma/\sqrt N σ / N )。→ 標準誤差
Fourier 係数 : 周期関数を e 2 π i h ⋅ x e^{2\pi i h\cdot x} e 2 π ih ⋅ x の重ね合わせで表したときの、各成分の係数。→ Fourier 係数
Fubini の定理 : 多変数の積分を、1 変数ずつの積分の繰り返しに直して順序を入れ替えてよい、という定理。→ 直積測度と Fubini–Tonelli の定理
上限 : 集合の上界のうち最小のもの。食い違い量の定義で sup \sup sup として使います。→ 上限
分散 : 確率変数が平均のまわりにどれだけ散らばるかを表す量。→ 分散
Monte Carlo 積分 の誤差は σ / N \sigma/\sqrt N σ / N です。この N − 1 / 2 N^{-1/2} N − 1/2 は、独立な乱数が「偶然の偏り」をもつことから来ます。N N N 個の独立な一様乱数は、ある区間に期待より N \sqrt N N 個程度多く(または少なく)入ります。一方、積型の求積則は点を規則的に並べるので偏りはありませんが、d d d 次元では 1 方向に N 1 / d N^{1/d} N 1/ d 点しか置けず、誤差が N − r / d N^{-r/d} N − r / d になります(定理 3.1[Monte Carlo 積分と分散低減] )。
準 Monte Carlo 法(quasi-Monte Carlo)は、この中間を狙います。乱数の代わりに、どの箱にも体積にほぼ比例した個数が入るように設計した決定的な点列を使い、Monte Carlo 法と同じ等重みの平均 N − 1 ∑ n f ( x n ) N^{-1}\sum_n f(x_n) N − 1 ∑ n f ( x n ) で積分を近似します。点の「むらのなさ」を測る量が食い違い量で、良い点列では O ( N − 1 ( log N ) d ) O(N^{-1}(\log N)^d) O ( N − 1 ( log N ) d ) です。d d d を固定して N N N を増やせば N − 1 / 2 N^{-1/2} N − 1/2 より速く、次元への依存は積型則の N − r / d N^{-r/d} N − r / d よりずっと穏やかです。
代償は 2 つあります。第 1 に、誤差評価が被積分関数の滑らかさ(混合偏導関数)を要求すること。第 2 に、決定的な方法なので、そのままでは標準誤差 が付かないこと。後者は無作為化(§7)で解決します。このテーマの物差しである「推定量の偏りと分散を定理として評価し、報告する数値に誤差を付ける」ことは、準 Monte Carlo 法でも保てます。
d ≥ 1 d \ge 1 d ≥ 1 とし、[ 0 , 1 ) d [0,1)^d [ 0 , 1 ) d の N N N 個の点 x 1 , … , x N x_1, \ldots, x_N x 1 , … , x N (重複があってもよい)の組を点集合 P P P と呼びます。[ 0 , 1 ] d [0,1]^d [ 0 , 1 ] d の部分集合 J J J について、J J J に入る点の個数を A ( J ; P ) = # { n : x n ∈ J } A(J; P) = \#\{n : x_n \in J\} A ( J ; P ) = # { n : x n ∈ J } と書きます。t ∈ [ 0 , 1 ] d t \in [0,1]^d t ∈ [ 0 , 1 ] d について [ 0 , t ) = ∏ j = 1 d [ 0 , t j ) [0, t) = \prod_{j=1}^d[0, t_j) [ 0 , t ) = ∏ j = 1 d [ 0 , t j ) とします。
定義 2.1 (局所食い違い関数・食い違い量 ) ↗
点集合 P P P の局所食い違い関数 を
δ P ( t ) = A ( [ 0 , t ) ; P ) N − ∏ j = 1 d t j ( t ∈ [ 0 , 1 ] d ) \delta_P(t) = \frac{A([0,t); P)}{N} - \prod_{j=1}^dt_j \qquad (t \in [0,1]^d) δ P ( t ) = N A ([ 0 , t ) ; P ) − j = 1 ∏ d t j ( t ∈ [ 0 , 1 ] d ) と定め、
D N ∗ ( P ) = sup t ∈ [ 0 , 1 ] d ∣ δ P ( t ) ∣ , D N ( P ) = sup 0 ≤ a j < b j ≤ 1 ∣ A ( ∏ j [ a j , b j ) ; P ) N − ∏ j = 1 d ( b j − a j ) ∣ D_N^*(P) = \sup_{t\in[0,1]^d}|\delta_P(t)|, \qquad D_N(P) = \sup_{0 \le a_j < b_j \le 1}\Bigl|\frac{A(\prod_j[a_j, b_j); P)}{N} - \prod_{j=1}^d(b_j - a_j)\Bigr| D N ∗ ( P ) = t ∈ [ 0 , 1 ] d sup ∣ δ P ( t ) ∣ , D N ( P ) = 0 ≤ a j < b j ≤ 1 sup N A ( ∏ j [ a j , b j ) ; P ) − j = 1 ∏ d ( b j − a j ) を星型食い違い量 (star discrepancy)、食い違い量 (extreme discrepancy)という。無限列 ( x n ) (x_n) ( x n ) については、最初の N N N 項のなす点集合の値を D N ∗ D_N^* D N ∗ 、D N D_N D N と書く。
D N ∗ D_N^* D N ∗ は、原点を頂点とする箱について「入っている点の割合」と「体積」の差の最大値です。N N N 個の独立な一様乱数では D N ∗ D_N^* D N ∗ は N − 1 / 2 N^{-1/2} N − 1/2 の大きさです。
補題 2.2 (2 つの食い違い量の関係 ) ✓
D N ∗ ( P ) ≤ D N ( P ) ≤ 2 d D N ∗ ( P ) D_N^*(P) \le D_N(P) \le 2^dD_N^*(P) D N ∗ ( P ) ≤ D N ( P ) ≤ 2 d D N ∗ ( P ) 。
証明(補題 2.2) 原点を頂点とする箱は a = 0 a = 0 a = 0 の箱なので D N ∗ ≤ D N D_N^* \le D_N D N ∗ ≤ D N です(t j = 0 t_j = 0 t j = 0 の成分があるときは箱が空で、差は 0 0 0 です)。逆向きを示します。箱 J = ∏ j [ a j , b j ) J = \prod_j[a_j, b_j) J = ∏ j [ a j , b j ) の定義関数は
1 J ( x ) = ∏ j = 1 d ( 1 [ 0 , b j ) ( x j ) − 1 [ 0 , a j ) ( x j ) ) = ∑ v ⊆ { 1 , … , d } ( − 1 ) ∣ v ∣ 1 [ 0 , c v ) ( x ) \mathbf{1}_J(x) = \prod_{j=1}^d\bigl(\mathbf{1}_{[0,b_j)}(x_j) - \mathbf{1}_{[0,a_j)}(x_j)\bigr) = \sum_{v\subseteq\{1,\ldots,d\}}(-1)^{|v|}\mathbf{1}_{[0, c^v)}(x) 1 J ( x ) = j = 1 ∏ d ( 1 [ 0 , b j ) ( x j ) − 1 [ 0 , a j ) ( x j ) ) = v ⊆ { 1 , … , d } ∑ ( − 1 ) ∣ v ∣ 1 [ 0 , c v ) ( x ) と展開できます。ここで c v c^v c v は、j ∈ v j \in v j ∈ v で c j v = a j c^v_j = a_j c j v = a j 、j ∉ v j \notin v j ∈ / v で c j v = b j c^v_j = b_j c j v = b j とした点です。点の個数 A ( ⋅ ; P ) A(\cdot; P) A ( ⋅ ; P ) も体積も、定義関数について線形なので、
A ( J ; P ) N − ∏ j ( b j − a j ) = ∑ v ( − 1 ) ∣ v ∣ δ P ( c v ) \frac{A(J; P)}{N} - \prod_j(b_j - a_j) = \sum_v(-1)^{|v|}\delta_P(c^v) N A ( J ; P ) − j ∏ ( b j − a j ) = v ∑ ( − 1 ) ∣ v ∣ δ P ( c v ) です。右辺は 2 d 2^d 2 d 項で、各項の絶対値は D N ∗ D_N^* D N ∗ 以下です。
∎
1 次元では D N ∗ D_N^* D N ∗ が閉じた形で求まります。
命題 2.3 (1 次元の星型食い違い量 ) ✓
[ 0 , 1 ) [0,1) [ 0 , 1 ) の N N N 個の点を小さい順に並べて x ( 1 ) ≤ ⋯ ≤ x ( N ) x_{(1)} \le \cdots \le x_{(N)} x ( 1 ) ≤ ⋯ ≤ x ( N ) とすると
D N ∗ = 1 2 N + max 1 ≤ i ≤ N ∣ x ( i ) − 2 i − 1 2 N ∣ . D_N^* = \frac{1}{2N} + \max_{1\le i\le N}\Bigl|x_{(i)} - \frac{2i-1}{2N}\Bigr|. D N ∗ = 2 N 1 + 1 ≤ i ≤ N max x ( i ) − 2 N 2 i − 1 . 特に D N ∗ ≥ 1 / ( 2 N ) D_N^* \ge 1/(2N) D N ∗ ≥ 1/ ( 2 N ) で、等号は x ( i ) = ( 2 i − 1 ) / ( 2 N ) x_{(i)} = (2i-1)/(2N) x ( i ) = ( 2 i − 1 ) / ( 2 N ) (区間を N N N 等分したときの中点)のときに限る。
証明(命題 2.3) x ( 0 ) = 0 x_{(0)} = 0 x ( 0 ) = 0 、x ( N + 1 ) = 1 x_{(N+1)} = 1 x ( N + 1 ) = 1 とおきます。[ 0 , t ) [0, t) [ 0 , t ) に入る点は x n < t x_n < t x n < t を満たすものなので、x ( i ) < t ≤ x ( i + 1 ) x_{(i)} < t \le x_{(i+1)} x ( i ) < t ≤ x ( i + 1 ) のとき A ( [ 0 , t ) ) = i A([0,t)) = i A ([ 0 , t )) = i です(i = 0 , … , N i = 0, \ldots, N i = 0 , … , N 。t = 0 t = 0 t = 0 では A = 0 A = 0 A = 0 )。この範囲で δ P ( t ) = i / N − t \delta_P(t) = i/N - t δ P ( t ) = i / N − t は t t t の 1 次関数なので、∣ δ P ∣ |\delta_P| ∣ δ P ∣ の上限は区間の両端での値 ∣ i / N − x ( i ) ∣ |i/N - x_{(i)}| ∣ i / N − x ( i ) ∣ 、∣ i / N − x ( i + 1 ) ∣ |i/N - x_{(i+1)}| ∣ i / N − x ( i + 1 ) ∣ の大きいほうです(左端は区間に含まれませんが、上限は変わりません)。x ( i ) = x ( i + 1 ) x_{(i)} = x_{(i+1)} x ( i ) = x ( i + 1 ) で区間が空のときは寄与がありません。
まず点がすべて異なる場合を考えます。i = 0 i = 0 i = 0 の区間からは ∣ 0 − x ( 1 ) ∣ |0 - x_{(1)}| ∣0 − x ( 1 ) ∣ 、i = N i = N i = N の区間からは ∣ 1 − x ( N ) ∣ |1 - x_{(N)}| ∣1 − x ( N ) ∣ が出るので、まとめると
D N ∗ = max 1 ≤ i ≤ N max ( ∣ x ( i ) − i N ∣ , ∣ x ( i ) − i − 1 N ∣ ) D_N^* = \max_{1\le i\le N}\max\Bigl(\Bigl|x_{(i)} - \frac iN\Bigr|,\ \Bigl|x_{(i)} - \frac{i-1}{N}\Bigr|\Bigr) D N ∗ = 1 ≤ i ≤ N max max ( x ( i ) − N i , x ( i ) − N i − 1 ) です(x ( i ) x_{(i)} x ( i ) は、i i i 番目の区間の左端と i − 1 i-1 i − 1 番目の区間の右端として 2 回現れます)。実数 x x x と α < β \alpha < \beta α < β について max ( ∣ x − α ∣ , ∣ x − β ∣ ) = ∣ x − ( α + β ) / 2 ∣ + ( β − α ) / 2 \max(|x - \alpha|, |x - \beta|) = |x - (\alpha+\beta)/2| + (\beta - \alpha)/2 max ( ∣ x − α ∣ , ∣ x − β ∣ ) = ∣ x − ( α + β ) /2∣ + ( β − α ) /2 なので、α = ( i − 1 ) / N \alpha = (i-1)/N α = ( i − 1 ) / N 、β = i / N \beta = i/N β = i / N として主張の式になります。
点に重複がある場合。x ( p ) < x ( p + 1 ) = ⋯ = x ( q ) < x ( q + 1 ) x_{(p)} < x_{(p+1)} = \cdots = x_{(q)} < x_{(q+1)} x ( p ) < x ( p + 1 ) = ⋯ = x ( q ) < x ( q + 1 ) とし、共通の値を x x x とします。上の議論で実際に現れるのは ∣ x − p / N ∣ |x - p/N| ∣ x − p / N ∣ (p p p 番目の区間の右端)と ∣ x − q / N ∣ |x - q/N| ∣ x − q / N ∣ (q q q 番目の区間の左端)です。p < i ≤ q p < i \le q p < i ≤ q について ( i − 1 ) / N (i-1)/N ( i − 1 ) / N と i / N i/N i / N は p / N p/N p / N と q / N q/N q / N の間にあるので、∣ x − ( i − 1 ) / N ∣ |x - (i-1)/N| ∣ x − ( i − 1 ) / N ∣ と ∣ x − i / N ∣ |x - i/N| ∣ x − i / N ∣ はこの 2 つの大きいほう以下です。したがって、空の区間に対応する項を最大に加えても値は変わらず、同じ式が成り立ちます。
最後の主張は、第 2 項が非負で、0 0 0 になるのがすべての i i i で x ( i ) = ( 2 i − 1 ) / ( 2 N ) x_{(i)} = (2i-1)/(2N) x ( i ) = ( 2 i − 1 ) / ( 2 N ) のときだけであることから従います。
∎
N N N 点の集合としては 1 / ( 2 N ) 1/(2N) 1/ ( 2 N ) が限界です。ただし中点の集合は N N N を決めないと作れません。N N N を増やしながら点を足していける無限列で、どの N N N でも D N ∗ D_N^* D N ∗ が小さいものを作るのが §5 の主題です。
箱ごとの条件を、関数についての条件に言い換えます。h ∈ Z d h \in \mathbb{Z}^d h ∈ Z d と x ∈ R d x \in \mathbb{R}^d x ∈ R d について h ⋅ x = ∑ j h j x j h\cdot x = \sum_jh_jx_j h ⋅ x = ∑ j h j x j 、e ( s ) = e 2 π i s e(s) = e^{2\pi is} e ( s ) = e 2 π i s と書きます。
定理 3.2 (Weyl の判定法 ) ✓
[ 0 , 1 ) d [0,1)^d [ 0 , 1 ) d の点列 ( x n ) n ≥ 1 (x_n)_{n\ge1} ( x n ) n ≥ 1 について、次は同値である。
( x n ) (x_n) ( x n ) は一様分布する。
すべての連続関数 f : [ 0 , 1 ] d → C f : [0,1]^d \to \mathbb{C} f : [ 0 , 1 ] d → C について lim N → ∞ 1 N ∑ n = 1 N f ( x n ) = ∫ [ 0 , 1 ] d f ( x ) d x \displaystyle\lim_{N\to\infty}\frac1N\sum_{n=1}^Nf(x_n) = \int_{[0,1]^d}f(x)\,dx N → ∞ lim N 1 n = 1 ∑ N f ( x n ) = ∫ [ 0 , 1 ] d f ( x ) d x 。
すべての h ∈ Z d ∖ { 0 } h \in \mathbb{Z}^d \setminus \{0\} h ∈ Z d ∖ { 0 } について lim N → ∞ 1 N ∑ n = 1 N e ( h ⋅ x n ) = 0 \displaystyle\lim_{N\to\infty}\frac1N\sum_{n=1}^Ne(h\cdot x_n) = 0 N → ∞ lim N 1 n = 1 ∑ N e ( h ⋅ x n ) = 0 。
証明は 1 ⇒ 2 ⇒ 3 ⇒ 1 の順に進みます。1 ⇒ 2 は、連続関数を階段関数ではさんで箱の条件に帰着させます。2 ⇒ 3 は指数関数が連続であることを使うだけです。3 ⇒ 1 では、指数関数の有限和(三角多項式)で周期的な連続関数を近似し、さらに箱を周期的な連続関数ではさみます。一番長いのは 3 ⇒ 1 です。
証明(定理 3.2) M N ( f ) = N − 1 ∑ n ≤ N f ( x n ) M_N(f) = N^{-1}\sum_{n\le N}f(x_n) M N ( f ) = N − 1 ∑ n ≤ N f ( x n ) 、I ( f ) = ∫ [ 0 , 1 ] d f I(f) = \int_{[0,1]^d}f I ( f ) = ∫ [ 0 , 1 ] d f と書きます。
1 ⇒ 2. 実部と虚部に分ければよいので、f f f は実数値とします。箱の定義関数の有限な一次結合(階段関数)s s s については、1 と線形性から M N ( s ) → I ( s ) M_N(s) \to I(s) M N ( s ) → I ( s ) です。ε > 0 \varepsilon > 0 ε > 0 を取ります。f f f はコンパクト集合 [ 0 , 1 ] d [0,1]^d [ 0 , 1 ] d 上で一様連続なので(補題 2.2[Arzelà–Ascoli と Stone–Weierstrass] )、自然数 m m m を大きく取れば、1 辺 1 / m 1/m 1/ m の各立方体 J c = ∏ j [ c j / m , ( c j + 1 ) / m ) J_c = \prod_j[c_j/m, (c_j+1)/m) J c = ∏ j [ c j / m , ( c j + 1 ) / m ) (c ∈ { 0 , … , m − 1 } d c \in \{0, \ldots, m-1\}^d c ∈ { 0 , … , m − 1 } d )の閉包の上で f f f の上限と下限の差が ε \varepsilon ε 以下になります。J c J_c J c の上で、その閉包での f f f の上限(下限)を値とする階段関数を s + s_+ s + (s − s_- s − )とすると、[ 0 , 1 ) d [0,1)^d [ 0 , 1 ) d 上で s − ≤ f ≤ s + s_- \le f \le s_+ s − ≤ f ≤ s + 、s + − s − ≤ ε s_+ - s_- \le \varepsilon s + − s − ≤ ε です。点はすべて [ 0 , 1 ) d [0,1)^d [ 0 , 1 ) d にあるので
lim sup N M N ( f ) ≤ lim N M N ( s + ) = I ( s + ) ≤ I ( f ) + ε , lim inf N M N ( f ) ≥ I ( s − ) ≥ I ( f ) − ε \limsup_N M_N(f) \le \lim_N M_N(s_+) = I(s_+) \le I(f) + \varepsilon, \qquad \liminf_N M_N(f) \ge I(s_-) \ge I(f) - \varepsilon N lim sup M N ( f ) ≤ N lim M N ( s + ) = I ( s + ) ≤ I ( f ) + ε , N lim inf M N ( f ) ≥ I ( s − ) ≥ I ( f ) − ε です。ε \varepsilon ε は任意なので M N ( f ) → I ( f ) M_N(f) \to I(f) M N ( f ) → I ( f ) です。
2 ⇒ 3. f ( x ) = e ( h ⋅ x ) f(x) = e(h\cdot x) f ( x ) = e ( h ⋅ x ) は連続で、h ≠ 0 h \ne 0 h = 0 なら、h j ≠ 0 h_j \ne 0 h j = 0 である座標 x j x_j x j について先に積分すると ∫ 0 1 e ( h j x j ) d x j = 0 \int_0^1e(h_jx_j)\,dx_j = 0 ∫ 0 1 e ( h j x j ) d x j = 0 なので I ( f ) = 0 I(f) = 0 I ( f ) = 0 です。
3 ⇒ 1. まず、R d \mathbb{R}^d R d 上の連続関数 g g g で各変数について周期 1 1 1 をもつものについて M N ( g ) → I ( g ) M_N(g) \to I(g) M N ( g ) → I ( g ) を示します。K = { z ∈ C d : ∣ z j ∣ = 1 } K = \{z \in \mathbb{C}^d : |z_j| = 1\} K = { z ∈ C d : ∣ z j ∣ = 1 } はコンパクト Hausdorff 空間で、g ( x ) = G ( e ( x 1 ) , … , e ( x d ) ) g(x) = G(e(x_1), \ldots, e(x_d)) g ( x ) = G ( e ( x 1 ) , … , e ( x d )) となる K K K 上の関数 G G G が定まります。x ↦ ( e ( x j ) ) j x \mapsto (e(x_j))_j x ↦ ( e ( x j ) ) j はコンパクト集合 [ 0 , 1 ] d [0,1]^d [ 0 , 1 ] d から K K K への連続な全射なので閉写像で、G G G は連続です。z h = ∏ j z j h j z^h = \prod_jz_j^{h_j} z h = ∏ j z j h j (h ∈ Z d h \in \mathbb{Z}^d h ∈ Z d )の有限な一次結合の全体は、積で閉じ、定数 1 = z 0 1 = z^0 1 = z 0 を含み、z h ‾ = z − h \overline{z^h} = z^{-h} z h = z − h から複素共役で閉じ、座標関数 z j z_j z j を含むので点を分離します。Stone–Weierstrass の定理(定理 4.7[Arzelà–Ascoli と Stone–Weierstrass] )から、ε > 0 \varepsilon > 0 ε > 0 に対して三角多項式 p ( x ) = ∑ h ∈ H c h e ( h ⋅ x ) p(x) = \sum_{h\in H}c_he(h\cdot x) p ( x ) = ∑ h ∈ H c h e ( h ⋅ x ) (H H H は有限集合)で sup x ∣ g ( x ) − p ( x ) ∣ ≤ ε \sup_x|g(x) - p(x)| \le \varepsilon sup x ∣ g ( x ) − p ( x ) ∣ ≤ ε となるものがあります。3 から、h ≠ 0 h \ne 0 h = 0 の各項で M N ( e ( h ⋅ ) ) → 0 = I ( e ( h ⋅ ) ) M_N(e(h\cdot{})) \to 0 = I(e(h\cdot{})) M N ( e ( h ⋅ )) → 0 = I ( e ( h ⋅ )) 、h = 0 h = 0 h = 0 の項では M N = I = c 0 M_N = I = c_0 M N = I = c 0 なので M N ( p ) → I ( p ) M_N(p) \to I(p) M N ( p ) → I ( p ) です。∣ M N ( g ) − M N ( p ) ∣ ≤ ε |M_N(g) - M_N(p)| \le \varepsilon ∣ M N ( g ) − M N ( p ) ∣ ≤ ε 、∣ I ( g ) − I ( p ) ∣ ≤ ε |I(g) - I(p)| \le \varepsilon ∣ I ( g ) − I ( p ) ∣ ≤ ε から lim sup N ∣ M N ( g ) − I ( g ) ∣ ≤ 2 ε \limsup_N|M_N(g) - I(g)| \le 2\varepsilon lim sup N ∣ M N ( g ) − I ( g ) ∣ ≤ 2 ε で、ε \varepsilon ε は任意なので M N ( g ) → I ( g ) M_N(g) \to I(g) M N ( g ) → I ( g ) です。
次に箱 J = ∏ j [ a j , b j ) J = \prod_j[a_j, b_j) J = ∏ j [ a j , b j ) を周期的な連続関数ではさみます。円周 R / Z \mathbb{R}/\mathbb{Z} R / Z 上の距離を d i s t \mathrm{dist} dist と書き、0 < η < 1 / 2 0 < \eta < 1/2 0 < η < 1/2 について
ψ j + ( x ) = max ( 0 , 1 − d i s t ( x , [ a j , b j ] ) η ) , ψ j − ( x ) = min ( 1 , d i s t ( x , ( R / Z ) ∖ ( a j , b j ) ) η ) \psi_j^+(x) = \max\Bigl(0,\ 1 - \frac{\mathrm{dist}(x, [a_j, b_j])}{\eta}\Bigr), \qquad \psi_j^-(x) = \min\Bigl(1,\ \frac{\mathrm{dist}(x, (\mathbb{R}/\mathbb{Z})\setminus(a_j, b_j))}{\eta}\Bigr) ψ j + ( x ) = max ( 0 , 1 − η dist ( x , [ a j , b j ]) ) , ψ j − ( x ) = min ( 1 , η dist ( x , ( R / Z ) ∖ ( a j , b j )) ) とおきます。どちらも周期 1 1 1 の連続関数で、0 ≤ ψ j − ≤ 1 [ a j , b j ) ≤ ψ j + ≤ 1 0 \le \psi_j^- \le \mathbf{1}_{[a_j, b_j)} \le \psi_j^+ \le 1 0 ≤ ψ j − ≤ 1 [ a j , b j ) ≤ ψ j + ≤ 1 です。ψ j + \psi_j^+ ψ j + は [ a j , b j ] [a_j, b_j] [ a j , b j ] から距離 η \eta η 以上で 0 0 0 、ψ j − \psi_j^- ψ j − は ( a j , b j ) (a_j, b_j) ( a j , b j ) の端から距離 η \eta η 以上内側で 1 1 1 なので、∫ 0 1 ( ψ j + − ψ j − ) ≤ 4 η \int_0^1(\psi_j^+ - \psi_j^-) \le 4\eta ∫ 0 1 ( ψ j + − ψ j − ) ≤ 4 η です(両端の幅 η \eta η ずつの範囲で差が 1 1 1 以下)。g ± ( x ) = ∏ j ψ j ± ( x j ) g^\pm(x) = \prod_j\psi_j^\pm(x_j) g ± ( x ) = ∏ j ψ j ± ( x j ) とおくと g − ≤ 1 J ≤ g + g^- \le \mathbf{1}_J \le g^+ g − ≤ 1 J ≤ g + で、[ 0 , 1 ] [0,1] [ 0 , 1 ] の数 u j , v j u_j, v_j u j , v j について ∣ ∏ j u j − ∏ j v j ∣ ≤ ∑ j ∣ u j − v j ∣ |\prod_ju_j - \prod_jv_j| \le \sum_j|u_j - v_j| ∣ ∏ j u j − ∏ j v j ∣ ≤ ∑ j ∣ u j − v j ∣ が成り立つこと(1 因子ずつ取り替える)から
I ( g + ) − I ( g − ) = ∏ j ∫ 0 1 ψ j + − ∏ j ∫ 0 1 ψ j − ≤ 4 d η I(g^+) - I(g^-) = \prod_j\int_0^1\psi_j^+ - \prod_j\int_0^1\psi_j^- \le 4d\eta I ( g + ) − I ( g − ) = j ∏ ∫ 0 1 ψ j + − j ∏ ∫ 0 1 ψ j − ≤ 4 d η です。前半から M N ( g ± ) → I ( g ± ) M_N(g^\pm) \to I(g^\pm) M N ( g ± ) → I ( g ± ) なので
lim sup N A ( J ) N ≤ I ( g + ) ≤ I ( g − ) + 4 d η ≤ ∏ j ( b j − a j ) + 4 d η , lim inf N A ( J ) N ≥ I ( g − ) ≥ ∏ j ( b j − a j ) − 4 d η \limsup_N\frac{A(J)}{N} \le I(g^+) \le I(g^-) + 4d\eta \le \prod_j(b_j - a_j) + 4d\eta, \qquad \liminf_N\frac{A(J)}{N} \ge I(g^-) \ge \prod_j(b_j - a_j) - 4d\eta N lim sup N A ( J ) ≤ I ( g + ) ≤ I ( g − ) + 4 d η ≤ j ∏ ( b j − a j ) + 4 d η , N lim inf N A ( J ) ≥ I ( g − ) ≥ j ∏ ( b j − a j ) − 4 d η です(I ( g − ) ≤ v o l ( J ) ≤ I ( g + ) I(g^-) \le \mathrm{vol}(J) \le I(g^+) I ( g − ) ≤ vol ( J ) ≤ I ( g + ) を使いました)。η → 0 \eta \to 0 η → 0 として 1 を得ます。
∎
この判定法の利点は、箱という扱いにくい集合の代わりに、指数関数という計算しやすい関数を調べればよいことです。最初の応用が次の系です。
系 3.3 (Kronecker 列の一様分布 ) ✓
実数 α 1 , … , α d \alpha_1, \ldots, \alpha_d α 1 , … , α d について、1 , α 1 , … , α d 1, \alpha_1, \ldots, \alpha_d 1 , α 1 , … , α d が有理数体上一次独立ならば、x n = ( { n α 1 } , … , { n α d } ) x_n = (\{n\alpha_1\}, \ldots, \{n\alpha_d\}) x n = ({ n α 1 } , … , { n α d }) ({ ⋅ } \{\cdot\} { ⋅ } は小数部分)は一様分布する。特に α \alpha α が無理数なら ( { n α } ) (\{n\alpha\}) ({ n α }) は [ 0 , 1 ) [0,1) [ 0 , 1 ) で一様分布する。
証明(系 3.3) h ∈ Z d ∖ { 0 } h \in \mathbb{Z}^d \setminus \{0\} h ∈ Z d ∖ { 0 } とし、θ = h ⋅ α = ∑ j h j α j \theta = h\cdot\alpha = \sum_jh_j\alpha_j θ = h ⋅ α = ∑ j h j α j とおきます。θ \theta θ が整数 k k k なら k ⋅ 1 − ∑ j h j α j = 0 k\cdot1 - \sum_jh_j\alpha_j = 0 k ⋅ 1 − ∑ j h j α j = 0 が自明でない有理係数の一次関係になり、仮定に反します。よって θ ∉ Z \theta \notin \mathbb{Z} θ ∈ / Z で e ( θ ) ≠ 1 e(\theta) \ne 1 e ( θ ) = 1 です。e ( h ⋅ x n ) = e ( n θ ) e(h\cdot x_n) = e(n\theta) e ( h ⋅ x n ) = e ( n θ ) (小数部分を取っても整数の差しかないため)なので、等比数列の和から
∣ 1 N ∑ n = 1 N e ( n θ ) ∣ = 1 N ∣ e ( θ ) ( e ( N θ ) − 1 ) e ( θ ) − 1 ∣ ≤ 2 N ∣ e ( θ ) − 1 ∣ = 1 N ∣ sin π θ ∣ → 0 \Bigl|\frac1N\sum_{n=1}^Ne(n\theta)\Bigr| = \frac1N\Bigl|\frac{e(\theta)(e(N\theta) - 1)}{e(\theta) - 1}\Bigr| \le \frac{2}{N|e(\theta) - 1|} = \frac{1}{N|\sin\pi\theta|} \to 0 N 1 n = 1 ∑ N e ( n θ ) = N 1 e ( θ ) − 1 e ( θ ) ( e ( N θ ) − 1 ) ≤ N ∣ e ( θ ) − 1∣ 2 = N ∣ sin π θ ∣ 1 → 0 です。定理 3.2 の 3 が成り立つので、一様分布します。
∎
例 3.4 (黄金比の Kronecker 列 )
α = ( 5 − 1 ) / 2 = 0.618 … \alpha = (\sqrt5 - 1)/2 = 0.618\ldots α = ( 5 − 1 ) /2 = 0.618 … は無理数なので、x n = { n α } x_n = \{n\alpha\} x n = { n α } は一様分布します。最初の数項は 0.618 , 0.236 , 0.854 , 0.472 , 0.090 , 0.708 , 0.326 , 0.944 0.618, 0.236, 0.854, 0.472, 0.090, 0.708, 0.326, 0.944 0.618 , 0.236 , 0.854 , 0.472 , 0.090 , 0.708 , 0.326 , 0.944 で、新しい点が既にある点の間の広い隙間に入っていきます。無理数回転がエルゴード的であること(定理 3.7[エルゴード定理] )は「ほとんどすべての出発点で時間平均が空間平均に一致する」ことを言いますが、系 3.3 は出発点を 0 0 0 に固定した列についての主張で、例外集合がありません。黄金比は連分数展開の部分商がすべて 1 1 1 で、有理数で最も近似しにくい無理数です。この列は D N ∗ = O ( N − 1 log N ) D_N^* = O(N^{-1}\log N) D N ∗ = O ( N − 1 log N ) を満たすことが、連分数を使って証明できます(Kuipers–Niederreiter の第 2 章)。
一様分布は N → ∞ N \to \infty N → ∞ の定性的な性質です。数値計算に必要なのは、有限の N N N での誤差の大きさです。次節で、誤差を D N ∗ D_N^* D N ∗ で抑えます。
定理 4.1 (Koksma の不等式(C¹ 級の場合) ) ✓
f : [ 0 , 1 ] → R f : [0,1] \to \mathbb{R} f : [ 0 , 1 ] → R を C 1 C^1 C 1 級、P = { x 1 , … , x N } ⊂ [ 0 , 1 ) P = \{x_1, \ldots, x_N\} \subset [0,1) P = { x 1 , … , x N } ⊂ [ 0 , 1 ) とする。このとき
1 N ∑ n = 1 N f ( x n ) − ∫ 0 1 f ( x ) d x = − ∫ 0 1 δ P ( t ) f ′ ( t ) d t \frac1N\sum_{n=1}^Nf(x_n) - \int_0^1f(x)\,dx = -\int_0^1\delta_P(t)f'(t)\,dt N 1 n = 1 ∑ N f ( x n ) − ∫ 0 1 f ( x ) d x = − ∫ 0 1 δ P ( t ) f ′ ( t ) d t (Zaremba の恒等式)が成り立ち、したがって
∣ 1 N ∑ n = 1 N f ( x n ) − ∫ 0 1 f ( x ) d x ∣ ≤ D N ∗ ( P ) ∫ 0 1 ∣ f ′ ( t ) ∣ d t . \Bigl|\frac1N\sum_{n=1}^Nf(x_n) - \int_0^1f(x)\,dx\Bigr| \le D_N^*(P)\int_0^1|f'(t)|\,dt. N 1 n = 1 ∑ N f ( x n ) − ∫ 0 1 f ( x ) d x ≤ D N ∗ ( P ) ∫ 0 1 ∣ f ′ ( t ) ∣ d t .
証明(定理 4.1) 微分積分学の基本定理(定理 5.4[積分の基本定理と定積分] )から、各点 x n x_n x n について
f ( x n ) = f ( 1 ) − ∫ x n 1 f ′ ( t ) d t = f ( 1 ) − ∫ 0 1 1 [ 0 , t ) ( x n ) f ′ ( t ) d t f(x_n) = f(1) - \int_{x_n}^1f'(t)\,dt = f(1) - \int_0^1\mathbf{1}_{[0,t)}(x_n)f'(t)\,dt f ( x n ) = f ( 1 ) − ∫ x n 1 f ′ ( t ) d t = f ( 1 ) − ∫ 0 1 1 [ 0 , t ) ( x n ) f ′ ( t ) d t です(1 [ 0 , t ) ( x n ) = 1 \mathbf{1}_{[0,t)}(x_n) = 1 1 [ 0 , t ) ( x n ) = 1 は x n < t x_n < t x n < t と同値)。n n n について平均すると、N − 1 ∑ n 1 [ 0 , t ) ( x n ) = A ( [ 0 , t ) ; P ) / N N^{-1}\sum_n\mathbf{1}_{[0,t)}(x_n) = A([0,t); P)/N N − 1 ∑ n 1 [ 0 , t ) ( x n ) = A ([ 0 , t ) ; P ) / N なので
1 N ∑ n f ( x n ) = f ( 1 ) − ∫ 0 1 A ( [ 0 , t ) ; P ) N f ′ ( t ) d t \frac1N\sum_nf(x_n) = f(1) - \int_0^1\frac{A([0,t); P)}{N}f'(t)\,dt N 1 n ∑ f ( x n ) = f ( 1 ) − ∫ 0 1 N A ([ 0 , t ) ; P ) f ′ ( t ) d t です。一方、部分積分(定理 6.2[積分の基本定理と定積分] )を u ( t ) = f ( t ) u(t) = f(t) u ( t ) = f ( t ) 、v ( t ) = t v(t) = t v ( t ) = t で使うと ∫ 0 1 f ( t ) d t = f ( 1 ) − ∫ 0 1 t f ′ ( t ) d t \int_0^1f(t)\,dt = f(1) - \int_0^1tf'(t)\,dt ∫ 0 1 f ( t ) d t = f ( 1 ) − ∫ 0 1 t f ′ ( t ) d t です。差を取ると − ∫ 0 1 ( A ( [ 0 , t ) ; P ) / N − t ) f ′ ( t ) d t = − ∫ 0 1 δ P ( t ) f ′ ( t ) d t -\int_0^1(A([0,t);P)/N - t)f'(t)\,dt = -\int_0^1\delta_P(t)f'(t)\,dt − ∫ 0 1 ( A ([ 0 , t ) ; P ) / N − t ) f ′ ( t ) d t = − ∫ 0 1 δ P ( t ) f ′ ( t ) d t で、恒等式を得ます。不等式は ∣ δ P ( t ) ∣ ≤ D N ∗ ( P ) |\delta_P(t)| \le D_N^*(P) ∣ δ P ( t ) ∣ ≤ D N ∗ ( P ) から従います。
∎
誤差の上界は、関数だけで決まる量 ∫ ∣ f ′ ∣ \int|f'| ∫ ∣ f ′ ∣ (f f f の全変動)と、点だけで決まる量 D N ∗ D_N^* D N ∗ の積です。命題 2.3 と合わせると、中点則の誤差が ∫ ∣ f ′ ∣ / ( 2 N ) \int|f'|/(2N) ∫ ∣ f ′ ∣/ ( 2 N ) 以下であることになります。
多次元では、導関数の役を混合偏導関数が果たします。u ⊆ { 1 , … , d } u \subseteq \{1, \ldots, d\} u ⊆ { 1 , … , d } について、u u u に属する各変数で 1 回ずつ偏微分したものを ∂ u f = ( ∏ j ∈ u ∂ / ∂ x j ) f \partial_uf = \bigl(\prod_{j\in u}\partial/\partial x_j\bigr)f ∂ u f = ( ∏ j ∈ u ∂ / ∂ x j ) f と書きます(∂ ∅ f = f \partial_\emptyset f = f ∂ ∅ f = f )。f f f が [ 0 , 1 ] d [0,1]^d [ 0 , 1 ] d を含む開集合の上で C d C^d C d 級なら、∂ u f \partial_uf ∂ u f は微分の順序によらず定まり連続です(定理 9.9[多変数関数の微分と偏微分] を繰り返し使います)。t u = ( t j ) j ∈ u ∈ [ 0 , 1 ] u t_u = (t_j)_{j\in u} \in [0,1]^u t u = ( t j ) j ∈ u ∈ [ 0 , 1 ] u について、u u u の座標を t j t_j t j 、それ以外の座標を 1 1 1 とした [ 0 , 1 ] d [0,1]^d [ 0 , 1 ] d の点を ( t u , 1 ) (t_u, 1) ( t u , 1 ) と書きます。
次の定義の直観を d = 2 d = 2 d = 2 で述べます。このとき u u u は { 1 } \{1\} { 1 } 、{ 2 } \{2\} { 2 } 、{ 1 , 2 } \{1,2\} { 1 , 2 } の 3 通りで、変動は
∫ 0 1 ∣ ∂ 1 f ( t 1 , 1 ) ∣ d t 1 + ∫ 0 1 ∣ ∂ 2 f ( 1 , t 2 ) ∣ d t 2 + ∬ ∣ ∂ 1 ∂ 2 f ( t 1 , t 2 ) ∣ d t 1 d t 2 \int_0^1|\partial_1f(t_1,1)|\,dt_1 + \int_0^1|\partial_2f(1,t_2)|\,dt_2 + \iint|\partial_1\partial_2f(t_1,t_2)|\,dt_1dt_2 ∫ 0 1 ∣ ∂ 1 f ( t 1 , 1 ) ∣ d t 1 + ∫ 0 1 ∣ ∂ 2 f ( 1 , t 2 ) ∣ d t 2 + ∬ ∣ ∂ 1 ∂ 2 f ( t 1 , t 2 ) ∣ d t 1 d t 2
です。はじめの 2 項は正方形の辺(x 2 = 1 x_2 = 1 x 2 = 1 の辺と x 1 = 1 x_1 = 1 x 1 = 1 の辺)に沿った関数の変化の大きさ、最後の項は正方形の内部での「ねじれ」の大きさです。1 次元の全変動の多次元版だと考えてください。
定義 4.2 (Hardy–Krause の意味の変動(滑らかな関数の場合) ) ↗
[ 0 , 1 ] d [0,1]^d [ 0 , 1 ] d を含む開集合の上で C d C^d C d 級の関数 f f f について
V H K ( f ) = ∑ ∅ ≠ u ⊆ { 1 , … , d } ∫ [ 0 , 1 ] u ∣ ∂ u f ( t u , 1 ) ∣ d t u V_{\mathrm{HK}}(f) = \sum_{\emptyset\ne u\subseteq\{1,\ldots,d\}}\int_{[0,1]^u}\bigl|\partial_uf(t_u, 1)\bigr|\,dt_u V HK ( f ) = ∅ = u ⊆ { 1 , … , d } ∑ ∫ [ 0 , 1 ] u ∂ u f ( t u , 1 ) d t u を f f f の Hardy–Krause の意味の変動 という。
和は 2 d − 1 2^d - 1 2 d − 1 項です。u u u の項は、f f f を面 { x j = 1 ( j ∉ u ) } \{x_j = 1\ (j \notin u)\} { x j = 1 ( j ∈ / u )} に制限した ∣ u ∣ |u| ∣ u ∣ 変数の関数の、最高階の混合偏導関数の L 1 L^1 L 1 ノルムです。d = 1 d = 1 d = 1 では ∫ 0 1 ∣ f ′ ∣ \int_0^1|f'| ∫ 0 1 ∣ f ′ ∣ です。
補題 4.3 (頂点 (1, …, 1) を基点とする展開 ) ✓
f f f を [ 0 , 1 ] d [0,1]^d [ 0 , 1 ] d を含む開集合の上で C d C^d C d 級の関数とする。すべての x ∈ [ 0 , 1 ] d x \in [0,1]^d x ∈ [ 0 , 1 ] d について
f ( x ) = ∑ u ⊆ { 1 , … , d } ( − 1 ) ∣ u ∣ ∫ [ 0 , 1 ] u ∏ j ∈ u 1 [ 0 , t j ) ( x j ) ∂ u f ( t u , 1 ) d t u f(x) = \sum_{u\subseteq\{1,\ldots,d\}}(-1)^{|u|}\int_{[0,1]^u}\prod_{j\in u}\mathbf{1}_{[0,t_j)}(x_j)\,\partial_uf(t_u, 1)\,dt_u f ( x ) = u ⊆ { 1 , … , d } ∑ ( − 1 ) ∣ u ∣ ∫ [ 0 , 1 ] u j ∈ u ∏ 1 [ 0 , t j ) ( x j ) ∂ u f ( t u , 1 ) d t u が成り立つ(u = ∅ u = \emptyset u = ∅ の項は f ( 1 , … , 1 ) f(1, \ldots, 1) f ( 1 , … , 1 ) )。
証明(補題 4.3) d d d についての帰納法で示します。d = 1 d = 1 d = 1 は 定理 4.1 の証明のはじめの式 f ( x ) = f ( 1 ) − ∫ 0 1 1 [ 0 , t ) ( x ) f ′ ( t ) d t f(x) = f(1) - \int_0^1\mathbf{1}_{[0,t)}(x)f'(t)\,dt f ( x ) = f ( 1 ) − ∫ 0 1 1 [ 0 , t ) ( x ) f ′ ( t ) d t です。
d − 1 d - 1 d − 1 変数で成り立つとし、x = ( x ′ , x d ) x = (x', x_d) x = ( x ′ , x d ) と書きます。x ′ x' x ′ を固定して x d x_d x d について d = 1 d = 1 d = 1 の場合を使うと
f ( x ′ , x d ) = f ( x ′ , 1 ) − ∫ 0 1 1 [ 0 , t d ) ( x d ) ∂ d f ( x ′ , t d ) d t d f(x', x_d) = f(x', 1) - \int_0^1\mathbf{1}_{[0,t_d)}(x_d)\,\partial_df(x', t_d)\,dt_d f ( x ′ , x d ) = f ( x ′ , 1 ) − ∫ 0 1 1 [ 0 , t d ) ( x d ) ∂ d f ( x ′ , t d ) d t d です。x ′ ↦ f ( x ′ , 1 ) x' \mapsto f(x', 1) x ′ ↦ f ( x ′ , 1 ) と、各 t d t_d t d についての x ′ ↦ ∂ d f ( x ′ , t d ) x' \mapsto \partial_df(x', t_d) x ′ ↦ ∂ d f ( x ′ , t d ) は、[ 0 , 1 ] d − 1 [0,1]^{d-1} [ 0 , 1 ] d − 1 を含む開集合の上で C d − 1 C^{d-1} C d − 1 級です。帰納法の仮定をこの 2 つに使います。u ′ ⊆ { 1 , … , d − 1 } u' \subseteq \{1, \ldots, d-1\} u ′ ⊆ { 1 , … , d − 1 } について、前者の ∂ u ′ \partial_{u'} ∂ u ′ を ( t u ′ , 1 ) (t_{u'}, 1) ( t u ′ , 1 ) で取った値は ∂ u ′ f ( t u ′ , 1 ) \partial_{u'}f(t_{u'}, 1) ∂ u ′ f ( t u ′ , 1 ) (d d d 番目の座標も 1 1 1 )、後者は ∂ u ′ ∪ { d } f \partial_{u'\cup\{d\}}f ∂ u ′ ∪ { d } f を「u ′ u' u ′ の座標が t j t_j t j 、d d d 番目が t d t_d t d 、残りが 1 1 1 」の点で取った値です。したがって
f ( x ) = ∑ u ′ ( − 1 ) ∣ u ′ ∣ ∫ ∏ j ∈ u ′ 1 [ 0 , t j ) ( x j ) ∂ u ′ f ( t u ′ , 1 ) d t u ′ + ∑ u ′ ( − 1 ) ∣ u ′ ∣ + 1 ∫ 0 1 ∫ ∏ j ∈ u ′ ∪ { d } 1 [ 0 , t j ) ( x j ) ∂ u ′ ∪ { d } f ( t u ′ ∪ { d } , 1 ) d t u ′ d t d f(x) = \sum_{u'}(-1)^{|u'|}\int\prod_{j\in u'}\mathbf{1}_{[0,t_j)}(x_j)\,\partial_{u'}f(t_{u'}, 1)\,dt_{u'} + \sum_{u'}(-1)^{|u'|+1}\int_0^1\!\!\int\prod_{j\in u'\cup\{d\}}\mathbf{1}_{[0,t_j)}(x_j)\,\partial_{u'\cup\{d\}}f(t_{u'\cup\{d\}}, 1)\,dt_{u'}\,dt_d f ( x ) = u ′ ∑ ( − 1 ) ∣ u ′ ∣ ∫ j ∈ u ′ ∏ 1 [ 0 , t j ) ( x j ) ∂ u ′ f ( t u ′ , 1 ) d t u ′ + u ′ ∑ ( − 1 ) ∣ u ′ ∣ + 1 ∫ 0 1 ∫ j ∈ u ′ ∪ { d } ∏ 1 [ 0 , t j ) ( x j ) ∂ u ′ ∪ { d } f ( t u ′ ∪ { d } , 1 ) d t u ′ d t d です。第 2 の和の被積分関数は立方体の上の有界な可測関数なので、累次積分は [ 0 , 1 ] u ′ ∪ { d } [0,1]^{u'\cup\{d\}} [ 0 , 1 ] u ′ ∪ { d } 上の重積分に等しくなります(定理 3.4[直積測度と Fubini–Tonelli の定理] )。第 1 の和は d ∉ u d \notin u d ∈ / u である u = u ′ u = u' u = u ′ の項、第 2 の和は d ∈ u d \in u d ∈ u である u = u ′ ∪ { d } u = u'\cup\{d\} u = u ′ ∪ { d } の項で、合わせて { 1 , … , d } \{1, \ldots, d\} { 1 , … , d } のすべての部分集合にわたる和になります。
∎
定理 4.4 (Koksma–Hlawka の不等式 ) ✓
f f f を [ 0 , 1 ] d [0,1]^d [ 0 , 1 ] d を含む開集合の上で C d C^d C d 級の実数値関数、P = { x 1 , … , x N } ⊂ [ 0 , 1 ) d P = \{x_1, \ldots, x_N\} \subset [0,1)^d P = { x 1 , … , x N } ⊂ [ 0 , 1 ) d とする。このとき
1 N ∑ n = 1 N f ( x n ) − ∫ [ 0 , 1 ] d f ( x ) d x = ∑ ∅ ≠ u ⊆ { 1 , … , d } ( − 1 ) ∣ u ∣ ∫ [ 0 , 1 ] u δ P ( t u , 1 ) ∂ u f ( t u , 1 ) d t u \frac1N\sum_{n=1}^Nf(x_n) - \int_{[0,1]^d}f(x)\,dx = \sum_{\emptyset\ne u\subseteq\{1,\ldots,d\}}(-1)^{|u|}\int_{[0,1]^u}\delta_P(t_u, 1)\,\partial_uf(t_u, 1)\,dt_u N 1 n = 1 ∑ N f ( x n ) − ∫ [ 0 , 1 ] d f ( x ) d x = ∅ = u ⊆ { 1 , … , d } ∑ ( − 1 ) ∣ u ∣ ∫ [ 0 , 1 ] u δ P ( t u , 1 ) ∂ u f ( t u , 1 ) d t u (Hlawka–Zaremba の恒等式)が成り立ち、したがって
∣ 1 N ∑ n = 1 N f ( x n ) − ∫ [ 0 , 1 ] d f ( x ) d x ∣ ≤ V H K ( f ) D N ∗ ( P ) . \Bigl|\frac1N\sum_{n=1}^Nf(x_n) - \int_{[0,1]^d}f(x)\,dx\Bigr| \le V_{\mathrm{HK}}(f)\,D_N^*(P). N 1 n = 1 ∑ N f ( x n ) − ∫ [ 0 , 1 ] d f ( x ) d x ≤ V HK ( f ) D N ∗ ( P ) .
証明(定理 4.4) 補題 4.3 の式で x = x n x = x_n x = x n とし、n n n について平均します。x n ∈ [ 0 , 1 ) d x_n \in [0,1)^d x n ∈ [ 0 , 1 ) d なので、j ∉ u j \notin u j ∈ / u の座標は自動的に x n , j < 1 x_{n,j} < 1 x n , j < 1 を満たし、
1 N ∑ n = 1 N ∏ j ∈ u 1 [ 0 , t j ) ( x n , j ) = A ( [ 0 , ( t u , 1 ) ) ; P ) N \frac1N\sum_{n=1}^N\prod_{j\in u}\mathbf{1}_{[0,t_j)}(x_{n,j}) = \frac{A([0, (t_u, 1)); P)}{N} N 1 n = 1 ∑ N j ∈ u ∏ 1 [ 0 , t j ) ( x n , j ) = N A ([ 0 , ( t u , 1 )) ; P ) です。次に同じ式を x ∈ [ 0 , 1 ] d x \in [0,1]^d x ∈ [ 0 , 1 ] d について積分します。右辺の各項は有界な可測関数の積分なので、Fubini の定理(定理 3.4[直積測度と Fubini–Tonelli の定理] )で x x x についての積分を先に行うと、∫ [ 0 , 1 ] d ∏ j ∈ u 1 [ 0 , t j ) ( x j ) d x = ∏ j ∈ u t j \int_{[0,1]^d}\prod_{j\in u}\mathbf{1}_{[0,t_j)}(x_j)\,dx = \prod_{j\in u}t_j ∫ [ 0 , 1 ] d ∏ j ∈ u 1 [ 0 , t j ) ( x j ) d x = ∏ j ∈ u t j で、これは箱 [ 0 , ( t u , 1 ) ) [0, (t_u, 1)) [ 0 , ( t u , 1 )) の体積です。2 つの式の差を取ると、u = ∅ u = \emptyset u = ∅ の項 f ( 1 , … , 1 ) f(1, \ldots, 1) f ( 1 , … , 1 ) は打ち消し合い、u ≠ ∅ u \ne \emptyset u = ∅ の項には
A ( [ 0 , ( t u , 1 ) ) ; P ) N − ∏ j ∈ u t j = δ P ( t u , 1 ) \frac{A([0,(t_u,1));P)}{N} - \prod_{j\in u}t_j = \delta_P(t_u, 1) N A ([ 0 , ( t u , 1 )) ; P ) − j ∈ u ∏ t j = δ P ( t u , 1 ) が現れて、恒等式を得ます。不等式は ∣ δ P ( t u , 1 ) ∣ ≤ D N ∗ ( P ) |\delta_P(t_u, 1)| \le D_N^*(P) ∣ δ P ( t u , 1 ) ∣ ≤ D N ∗ ( P ) と 定義 4.2 から従います。
∎
定義 5.1 (逆進関数・van der Corput 列・Halton 列・Hammersley 点集合 ) ↗
b ≥ 2 b \ge 2 b ≥ 2 を整数とする。非負整数 n n n の b b b 進展開を n = ∑ k ≥ 0 a k ( n ) b k n = \sum_{k\ge0}a_k(n)b^k n = ∑ k ≥ 0 a k ( n ) b k (a k ( n ) ∈ { 0 , … , b − 1 } a_k(n) \in \{0, \ldots, b-1\} a k ( n ) ∈ { 0 , … , b − 1 } 、有限個を除いて 0 0 0 )とするとき
φ b ( n ) = ∑ k ≥ 0 a k ( n ) b − k − 1 ∈ [ 0 , 1 ) \varphi_b(n) = \sum_{k\ge0}a_k(n)\,b^{-k-1} \in [0, 1) φ b ( n ) = k ≥ 0 ∑ a k ( n ) b − k − 1 ∈ [ 0 , 1 ) を基数 b b b の逆進関数 (radical inverse)という。b b b 進展開の桁を小数点について折り返したものである。
列 ( φ b ( n ) ) n ≥ 0 (\varphi_b(n))_{n\ge0} ( φ b ( n ) ) n ≥ 0 を基数 b b b の van der Corput 列 という。
整数 b 1 , … , b d ≥ 2 b_1, \ldots, b_d \ge 2 b 1 , … , b d ≥ 2 について、[ 0 , 1 ) d [0,1)^d [ 0 , 1 ) d の列 x n = ( φ b 1 ( n ) , … , φ b d ( n ) ) x_n = (\varphi_{b_1}(n), \ldots, \varphi_{b_d}(n)) x n = ( φ b 1 ( n ) , … , φ b d ( n )) (n ≥ 0 n \ge 0 n ≥ 0 )を Halton 列 という。
N ≥ 1 N \ge 1 N ≥ 1 について、[ 0 , 1 ) d [0,1)^d [ 0 , 1 ) d の N N N 点 ( n / N , φ b 1 ( n ) , … , φ b d − 1 ( n ) ) (n/N, \varphi_{b_1}(n), \ldots, \varphi_{b_{d-1}}(n)) ( n / N , φ b 1 ( n ) , … , φ b d − 1 ( n )) (n = 0 , … , N − 1 n = 0, \ldots, N-1 n = 0 , … , N − 1 )を Hammersley 点集合 という。
以下、これらの列の「最初の N N N 項」は n = 0 , … , N − 1 n = 0, \ldots, N-1 n = 0 , … , N − 1 の項を指す。
基数 2 2 2 では 0 , 1 2 , 1 4 , 3 4 , 1 8 , 5 8 , 3 8 , 7 8 , … 0, \tfrac12, \tfrac14, \tfrac34, \tfrac18, \tfrac58, \tfrac38, \tfrac78, \ldots 0 , 2 1 , 4 1 , 4 3 , 8 1 , 8 5 , 8 3 , 8 7 , … です。区間を半分、そのまた半分と、粗いほうから順に埋めていきます。この「どの段階で止めても均等」という性質を、次の補題が表します。c b − m c\,b^{-m} c b − m を左端とする長さ b − m b^{-m} b − m の区間 [ c b − m , ( c + 1 ) b − m ) [c\,b^{-m}, (c+1)b^{-m}) [ c b − m , ( c + 1 ) b − m ) (0 ≤ c < b m 0 \le c < b^m 0 ≤ c < b m )を、基数 b b b の階数 m m m の基本区間 と呼びます。
補題 5.2 (基本区間に入る条件は合同式 ) ✓
b ≥ 2 b \ge 2 b ≥ 2 、m ≥ 0 m \ge 0 m ≥ 0 とする。{ 0 , … , b m − 1 } \{0, \ldots, b^m - 1\} { 0 , … , b m − 1 } からそれ自身への全単射 c ↦ r ( c ) c \mapsto r(c) c ↦ r ( c ) があって、すべての n ≥ 0 n \ge 0 n ≥ 0 と 0 ≤ c < b m 0 \le c < b^m 0 ≤ c < b m について
φ b ( n ) ∈ [ c b − m , ( c + 1 ) b − m ) ⟺ n ≡ r ( c ) ( m o d b m ) \varphi_b(n) \in [c\,b^{-m}, (c+1)b^{-m}) \iff n \equiv r(c) \pmod{b^m} φ b ( n ) ∈ [ c b − m , ( c + 1 ) b − m ) ⟺ n ≡ r ( c ) ( mod b m ) が成り立つ。
証明(補題 5.2) n = r + b m q n = r + b^mq n = r + b m q (0 ≤ r < b m 0 \le r < b^m 0 ≤ r < b m 、q ≥ 0 q \ge 0 q ≥ 0 )と書きます。n n n の b b b 進展開の下位 m m m 桁は r r r の桁 a 0 , … , a m − 1 a_0, \ldots, a_{m-1} a 0 , … , a m − 1 、それより上は q q q の桁なので
φ b ( n ) = ∑ k = 0 m − 1 a k b − k − 1 + b − m φ b ( q ) = ρ ( r ) b m + φ b ( q ) b m , ρ ( r ) = ∑ k = 0 m − 1 a k b m − 1 − k \varphi_b(n) = \sum_{k=0}^{m-1}a_kb^{-k-1} + b^{-m}\varphi_b(q) = \frac{\rho(r)}{b^m} + \frac{\varphi_b(q)}{b^m}, \qquad \rho(r) = \sum_{k=0}^{m-1}a_kb^{m-1-k} φ b ( n ) = k = 0 ∑ m − 1 a k b − k − 1 + b − m φ b ( q ) = b m ρ ( r ) + b m φ b ( q ) , ρ ( r ) = k = 0 ∑ m − 1 a k b m − 1 − k です。ρ ( r ) \rho(r) ρ ( r ) は r r r の m m m 桁を逆順に読んだ整数で、ρ \rho ρ は { 0 , … , b m − 1 } \{0, \ldots, b^m-1\} { 0 , … , b m − 1 } の全単射です(2 回行うと元に戻ります)。φ b ( q ) \varphi_b(q) φ b ( q ) は有限個の桁の和なので 0 ≤ φ b ( q ) < ∑ k ≥ 0 ( b − 1 ) b − k − 1 = 1 0 \le \varphi_b(q) < \sum_{k\ge0}(b-1)b^{-k-1} = 1 0 ≤ φ b ( q ) < ∑ k ≥ 0 ( b − 1 ) b − k − 1 = 1 です。したがって φ b ( n ) ∈ [ ρ ( r ) b − m , ( ρ ( r ) + 1 ) b − m ) \varphi_b(n) \in [\rho(r)b^{-m}, (\rho(r)+1)b^{-m}) φ b ( n ) ∈ [ ρ ( r ) b − m , ( ρ ( r ) + 1 ) b − m ) で、φ b ( n ) \varphi_b(n) φ b ( n ) が c c c 番目の基本区間に入ることは ρ ( r ) = c \rho(r) = c ρ ( r ) = c 、すなわち n ≡ ρ − 1 ( c ) ( m o d b m ) n \equiv \rho^{-1}(c) \pmod{b^m} n ≡ ρ − 1 ( c ) ( mod b m ) と同値です。r ( c ) = ρ − 1 ( c ) r(c) = \rho^{-1}(c) r ( c ) = ρ − 1 ( c ) とすればよい。
∎
定理 5.3 (van der Corput 列の食い違い量 ) ✓
基数 b ≥ 2 b \ge 2 b ≥ 2 の van der Corput 列の最初の N N N 項(N ≥ 1 N \ge 1 N ≥ 1 )について
N D N ∗ ≤ ( b − 1 ) ( ⌊ log b N ⌋ + 1 ) ≤ ( b − 1 ) log N log b + b − 1. N\,D_N^* \le (b-1)\bigl(\lfloor\log_bN\rfloor + 1\bigr) \le (b-1)\frac{\log N}{\log b} + b - 1. N D N ∗ ≤ ( b − 1 ) ( ⌊ log b N ⌋ + 1 ) ≤ ( b − 1 ) log b log N + b − 1.
証明(定理 5.3) ブロックの評価。 m ≥ 0 m \ge 0 m ≥ 0 、k ≥ 0 k \ge 0 k ≥ 0 とし、連続する b m b^m b m 個の添字 n = k b m , … , ( k + 1 ) b m − 1 n = kb^m, \ldots, (k+1)b^m - 1 n = k b m , … , ( k + 1 ) b m − 1 の項からなる点集合を Q Q Q とします。この添字は b m b^m b m を法とする各剰余類をちょうど 1 回ずつ通るので、補題 5.2 から、階数 m m m の各基本区間に Q Q Q の点がちょうど 1 個ずつ入ります。t ∈ [ 0 , 1 ] t \in [0,1] t ∈ [ 0 , 1 ] とし c = ⌊ t b m ⌋ c = \lfloor tb^m\rfloor c = ⌊ t b m ⌋ とおくと、[ 0 , t ) [0, t) [ 0 , t ) は c c c 個の基本区間 [ 0 , c b − m ) [0, cb^{-m}) [ 0 , c b − m ) を含み、c + 1 c+1 c + 1 個の基本区間 [ 0 , ( c + 1 ) b − m ) [0, (c+1)b^{-m}) [ 0 , ( c + 1 ) b − m ) (c = b m c = b^m c = b m のときは [ 0 , 1 ) [0,1) [ 0 , 1 ) )に含まれます。よって c ≤ A ( [ 0 , t ) ; Q ) ≤ c + 1 c \le A([0,t); Q) \le c+1 c ≤ A ([ 0 , t ) ; Q ) ≤ c + 1 で、c ≤ t b m < c + 1 c \le tb^m < c + 1 c ≤ t b m < c + 1 と合わせて
∣ A ( [ 0 , t ) ; Q ) − b m t ∣ ≤ 1 \bigl|A([0,t); Q) - b^mt\bigr| \le 1 A ([ 0 , t ) ; Q ) − b m t ≤ 1 です。
分割。 L = ⌊ log b N ⌋ L = \lfloor\log_bN\rfloor L = ⌊ log b N ⌋ とし、N = ∑ m = 0 L a m b m N = \sum_{m=0}^La_mb^m N = ∑ m = 0 L a m b m を b b b 進展開とします。添字の集合 { 0 , … , N − 1 } \{0, \ldots, N-1\} { 0 , … , N − 1 } を、先頭から順に、長さ b L b^L b L のブロック a L a_L a L 個、長さ b L − 1 b^{L-1} b L − 1 のブロック a L − 1 a_{L-1} a L − 1 個、…、長さ 1 1 1 のブロック a 0 a_0 a 0 個に分けます。長さ b m b^m b m のブロックが始まる位置は ∑ i > m a i b i + j b m \sum_{i>m}a_ib^i + jb^m ∑ i > m a i b i + j b m (0 ≤ j < a m 0 \le j < a_m 0 ≤ j < a m )で、b m b^m b m の倍数です。したがって各ブロックは上の Q Q Q の形で、ブロックごとに ∣ A ( [ 0 , t ) ; Q ) − b m t ∣ ≤ 1 |A([0,t); Q) - b^mt| \le 1 ∣ A ([ 0 , t ) ; Q ) − b m t ∣ ≤ 1 です。全部で ∑ m a m ≤ ( b − 1 ) ( L + 1 ) \sum_ma_m \le (b-1)(L+1) ∑ m a m ≤ ( b − 1 ) ( L + 1 ) 個のブロックについて足すと
∣ A ( [ 0 , t ) ; P N ) − N t ∣ ≤ ( b − 1 ) ( L + 1 ) \bigl|A([0,t); P_N) - Nt\bigr| \le (b-1)(L+1) A ([ 0 , t ) ; P N ) − N t ≤ ( b − 1 ) ( L + 1 ) がすべての t t t で成り立ちます。N N N で割って上限を取れば主張の式です。第 2 の不等式は ⌊ log b N ⌋ ≤ log N / log b \lfloor\log_bN\rfloor \le \log N/\log b ⌊ log b N ⌋ ≤ log N / log b です。
∎
独立な乱数の D N ∗ ∼ N − 1 / 2 D_N^* \sim N^{-1/2} D N ∗ ∼ N − 1/2 に対し、O ( N − 1 log N ) O(N^{-1}\log N) O ( N − 1 log N ) です。定理 4.1 と合わせると、C 1 C^1 C 1 級の関数の積分誤差が O ( N − 1 log N ) O(N^{-1}\log N) O ( N − 1 log N ) になります。
多次元では、座標ごとに異なる基数を使います。基数が互いに素であることが、座標どうしの「独立性」の代わりをします。
定理 5.4 (Halton 列の食い違い量 ) ✓
b 1 , … , b d ≥ 2 b_1, \ldots, b_d \ge 2 b 1 , … , b d ≥ 2 をどの 2 つも互いに素な整数とする。基数 b 1 , … , b d b_1, \ldots, b_d b 1 , … , b d の Halton 列の最初の N N N 項(N ≥ 2 N \ge 2 N ≥ 2 )について
N D N ∗ ≤ ∏ j = 1 d ( ( b j − 1 ) ⌈ log b j N ⌉ + 1 ) . N\,D_N^* \le \prod_{j=1}^d\Bigl((b_j - 1)\lceil\log_{b_j}N\rceil + 1\Bigr). N D N ∗ ≤ j = 1 ∏ d ( ( b j − 1 ) ⌈ log b j N ⌉ + 1 ) . 特に D N ∗ = O ( N − 1 ( log N ) d ) D_N^* = O(N^{-1}(\log N)^d) D N ∗ = O ( N − 1 ( log N ) d ) である。
証明の方針は van der Corput 列と同じ数え方です。[ 0 , t ) [0, t) [ 0 , t ) を、基本区間の積である箱と、はみ出す小さな箱に分け、どの箱でも点の個数が体積の N N N 倍から高々 1 1 1 しかずれないことを示します。箱の数が上界の右辺の積になります。基数が互いに素であることは、各座標の条件をまとめて 1 つの合同式に直す中国剰余定理を使うために要ります。
証明(定理 5.4) 最初の N N N 項を P N P_N P N と書きます。
基本的な箱。 各 j j j について基数 b j b_j b j の階数 m j m_j m j の基本区間 E j E_j E j を取り、E = ∏ j E j E = \prod_jE_j E = ∏ j E j 、Q = ∏ j b j m j Q = \prod_jb_j^{m_j} Q = ∏ j b j m j とします(v o l ( E ) = 1 / Q \mathrm{vol}(E) = 1/Q vol ( E ) = 1/ Q )。補題 5.2 から、x n ∈ E x_n \in E x n ∈ E は連立合同式 n ≡ r j ( m o d b j m j ) n \equiv r_j \pmod{b_j^{m_j}} n ≡ r j ( mod b j m j ) (j = 1 , … , d j = 1, \ldots, d j = 1 , … , d )と同値です。b j b_j b j がどの 2 つも互いに素なので、法 b j m j b_j^{m_j} b j m j もそうです。中国剰余定理(系 6.3[整除と素因数分解] )から、この連立合同式は Q Q Q を法としてただ 1 つの解をもちます。したがって、連続する Q Q Q 個の整数の中に x n ∈ E x_n \in E x n ∈ E となる n n n がちょうど 1 個あり、{ 0 , … , N − 1 } \{0, \ldots, N-1\} { 0 , … , N − 1 } の中には ⌊ N / Q ⌋ \lfloor N/Q\rfloor ⌊ N / Q ⌋ 個または ⌈ N / Q ⌉ \lceil N/Q\rceil ⌈ N / Q ⌉ 個あります。よって
∣ A ( E ; P N ) − N v o l ( E ) ∣ ≤ 1 , Q ≥ N ならば A ( E ; P N ) ≤ 1. \bigl|A(E; P_N) - N\,\mathrm{vol}(E)\bigr| \le 1, \qquad Q \ge N \text{ ならば } A(E; P_N) \le 1. A ( E ; P N ) − N vol ( E ) ≤ 1 , Q ≥ N ならば A ( E ; P N ) ≤ 1. 区間の分解。 t ∈ [ 0 , 1 ] d t \in [0,1]^d t ∈ [ 0 , 1 ] d とし、L j = ⌈ log b j N ⌉ L_j = \lceil\log_{b_j}N\rceil L j = ⌈ log b j N ⌉ (b j L j ≥ N b_j^{L_j} \ge N b j L j ≥ N )とおきます。各 j j j で、c j = ⌊ t j b j L j ⌋ c_j = \lfloor t_jb_j^{L_j}\rfloor c j = ⌊ t j b j L j ⌋ 、s j = c j b j − L j ≤ t j s_j = c_jb_j^{-L_j} \le t_j s j = c j b j − L j ≤ t j とします。c j c_j c j を c j = ∑ k = 0 L j τ k b j L j − k c_j = \sum_{k=0}^{L_j}\tau_kb_j^{L_j-k} c j = ∑ k = 0 L j τ k b j L j − k (τ 0 ∈ { 0 , 1 } \tau_0 \in \{0, 1\} τ 0 ∈ { 0 , 1 } 、k ≥ 1 k \ge 1 k ≥ 1 で τ k ∈ { 0 , … , b j − 1 } \tau_k \in \{0, \ldots, b_j-1\} τ k ∈ { 0 , … , b j − 1 } 。τ 0 = 1 \tau_0 = 1 τ 0 = 1 は c j = b j L j c_j = b_j^{L_j} c j = b j L j のときだけで、そのとき他の桁は 0 0 0 )と展開すると、[ 0 , s j ) [0, s_j) [ 0 , s j ) は左から順に、階数 k k k の基本区間 τ k \tau_k τ k 個(k = 0 , 1 , … , L j k = 0, 1, \ldots, L_j k = 0 , 1 , … , L j )の交わりのない和に分かれます。階数 k k k の区間の左端は ∑ i < k τ i b j − i + a b j − k \sum_{i<k}\tau_ib_j^{-i} + ab_j^{-k} ∑ i < k τ i b j − i + a b j − k (0 ≤ a < τ k 0 \le a < \tau_k 0 ≤ a < τ k )で b j − k b_j^{-k} b j − k の倍数なので、確かに基本区間です。個数は ( b j − 1 ) L j (b_j - 1)L_j ( b j − 1 ) L j 以下です(τ 0 = 1 \tau_0 = 1 τ 0 = 1 のときは 1 1 1 個)。残りの [ s j , t j ) [s_j, t_j) [ s j , t j ) は長さが b j − L j b_j^{-L_j} b j − L j 未満で、階数 L j L_j L j の 1 つの基本区間 R j R_j R j に含まれます(s j = t j s_j = t_j s j = t j なら空)。こうして [ 0 , t j ) [0, t_j) [ 0 , t j ) は、高々 ( b j − 1 ) L j + 1 (b_j-1)L_j + 1 ( b j − 1 ) L j + 1 個の交わりのない区間(基本区間と、高々 1 個の「端切れ」[ s j , t j ) [s_j, t_j) [ s j , t j ) )に分かれます。
箱の分解。 各座標の区間の積を取ると、[ 0 , t ) [0, t) [ 0 , t ) は高々 ∏ j ( ( b j − 1 ) L j + 1 ) \prod_j((b_j-1)L_j + 1) ∏ j (( b j − 1 ) L j + 1 ) 個の交わりのない箱 B B B に分かれます。各 B B B で ∣ A ( B ; P N ) − N v o l ( B ) ∣ ≤ 1 |A(B; P_N) - N\,\mathrm{vol}(B)| \le 1 ∣ A ( B ; P N ) − N vol ( B ) ∣ ≤ 1 を示します。
B B B の因子がすべて基本区間のとき。B B B は基本的な箱なので、はじめの評価そのものです。
B B B の因子に端切れがあるとき。端切れを、それを含む階数 L j L_j L j の基本区間 R j R_j R j で置き換えた箱を E ′ E' E ′ とすると B ⊆ E ′ B \subseteq E' B ⊆ E ′ で、E ′ E' E ′ は基本的な箱です。端切れのある座標 j 0 j_0 j 0 について Q ′ ≥ b j 0 L j 0 ≥ N Q' \ge b_{j_0}^{L_{j_0}} \ge N Q ′ ≥ b j 0 L j 0 ≥ N なので A ( B ; P N ) ≤ A ( E ′ ; P N ) ≤ 1 A(B; P_N) \le A(E'; P_N) \le 1 A ( B ; P N ) ≤ A ( E ′ ; P N ) ≤ 1 、また N v o l ( B ) ≤ N v o l ( E ′ ) = N / Q ′ ≤ 1 N\,\mathrm{vol}(B) \le N\,\mathrm{vol}(E') = N/Q' \le 1 N vol ( B ) ≤ N vol ( E ′ ) = N / Q ′ ≤ 1 です。A ( B ; P N ) A(B; P_N) A ( B ; P N ) と N v o l ( B ) N\,\mathrm{vol}(B) N vol ( B ) はどちらも [ 0 , 1 ] [0,1] [ 0 , 1 ] にあるので、差は 1 1 1 以下です。
点の個数も体積も交わりのない和について加法的なので、
∣ A ( [ 0 , t ) ; P N ) − N ∏ j t j ∣ ≤ ∑ B ∣ A ( B ; P N ) − N v o l ( B ) ∣ ≤ ∏ j = 1 d ( ( b j − 1 ) L j + 1 ) \bigl|A([0,t); P_N) - N\textstyle\prod_jt_j\bigr| \le \sum_B\bigl|A(B; P_N) - N\,\mathrm{vol}(B)\bigr| \le \prod_{j=1}^d\bigl((b_j-1)L_j + 1\bigr) A ([ 0 , t ) ; P N ) − N ∏ j t j ≤ ∑ B A ( B ; P N ) − N vol ( B ) ≤ ∏ j = 1 d ( ( b j − 1 ) L j + 1 ) です。t t t について上限を取れば主張を得ます。
∎
定理 4.4 と合わせると、C d C^d C d 級の関数の積分誤差は O ( N − 1 ( log N ) d ) O(N^{-1}(\log N)^d) O ( N − 1 ( log N ) d ) です。基数は、小さいほうから d d d 個の素数 2 , 3 , 5 , … 2, 3, 5, \ldots 2 , 3 , 5 , … を使うのが普通です。Hammersley 点集合は、第 1 座標を n / N n/N n / N にすることで対数の指数が 1 つ下がり、D N ∗ = O ( N − 1 ( log N ) d − 1 ) D_N^* = O(N^{-1}(\log N)^{d-1}) D N ∗ = O ( N − 1 ( log N ) d − 1 ) になります(証明は上と同じ数え方です。N N N を先に決める必要があります)。
例 5.6 (大きな基数の Halton 列の相関 )
基数 17 17 17 と 19 19 19 の Halton 列の 2 次元の射影を考えます。n < 17 n < 17 n < 17 では φ 17 ( n ) = n / 17 \varphi_{17}(n) = n/17 φ 17 ( n ) = n /17 、φ 19 ( n ) = n / 19 \varphi_{19}(n) = n/19 φ 19 ( n ) = n /19 なので、最初の 17 点はすべて直線 x 2 = ( 17 / 19 ) x 1 x_2 = (17/19)x_1 x 2 = ( 17/19 ) x 1 の上に並びます。箱 J = [ 0 , 1 / 2 ) × [ 1 / 2 , 1 ) J = [0, 1/2) \times [1/2, 1) J = [ 0 , 1/2 ) × [ 1/2 , 1 ) に入るには n / 19 ≥ 1 / 2 n/19 \ge 1/2 n /19 ≥ 1/2 、すなわち n ≥ 10 n \ge 10 n ≥ 10 が要りますが、そのとき n / 17 ≥ 10 / 17 > 1 / 2 n/17 \ge 10/17 > 1/2 n /17 ≥ 10/17 > 1/2 なので、J J J には 1 点も入りません。体積は 1 / 4 1/4 1/4 なので D 17 ≥ 1 / 4 D_{17} \ge 1/4 D 17 ≥ 1/4 です。定理 5.4 の上界は N = 17 N = 17 N = 17 で ( 16 + 1 ) ( 18 + 1 ) / 17 = 19 (16 + 1)(18 + 1)/17 = 19 ( 16 + 1 ) ( 18 + 1 ) /17 = 19 となり、何も言っていません。上界が意味をもつのは N N N が 17 × 19 = 323 17 \times 19 = 323 17 × 19 = 323 よりずっと大きくなってからです。
高次元の Halton 列では、後ろのほうの座標(大きな素数を基数とする座標)の組にこの種の相関が残ります。対策は、桁に置換を施すこと(スクランブルした Halton 列)や、Sobol’ 列のように全座標で基数 2 2 2 を使う構成に替えることです。「準 Monte Carlo 法は高次元で効かない」と言われるときの原因の 1 つがこれで、もう 1 つの面は §7.2 で扱います。
独立な一様乱数 Halton 列(基数 2, 3) Fibonacci 格子 g = (1, 55)
[0,1)² の 89 点。左から、独立な一様乱数(種 20261008)、基数 2・3 の Halton 列の最初の 89 項、N = 89・生成ベクトル (1, 55) の Fibonacci 格子。乱数には塊と隙間があり、Halton 列と格子では点が互いを避けて並ぶ。
Halton 列の誤差 O ( N − 1 ( log N ) d ) O(N^{-1}(\log N)^d) O ( N − 1 ( log N ) d ) は、関数が C d C^d C d 級より滑らかでも改善しません。周期的で滑らかな関数に対しては、滑らかさに応じて速く収束する点集合があります。1 次元の周期関数に対する台形則が代数的な次数を超えて速く収束すること(定理 3.2[数値積分 II] )の多次元版です。
定義 6.1 (階数 1 の格子則・双対格子 ) ↗
N ≥ 1 N \ge 1 N ≥ 1 、g = ( g 1 , … , g d ) ∈ Z d g = (g_1, \ldots, g_d) \in \mathbb{Z}^d g = ( g 1 , … , g d ) ∈ Z d とする。点集合 x n = { n g / N } = ( { n g 1 / N } , … , { n g d / N } ) x_n = \{ng/N\} = (\{ng_1/N\}, \ldots, \{ng_d/N\}) x n = { n g / N } = ({ n g 1 / N } , … , { n g d / N }) (n = 0 , … , N − 1 n = 0, \ldots, N-1 n = 0 , … , N − 1 )による求積
Q N ( f ) = 1 N ∑ n = 0 N − 1 f ( { n g N } ) Q_N(f) = \frac1N\sum_{n=0}^{N-1}f\Bigl(\Bigl\{\frac{ng}{N}\Bigr\}\Bigr) Q N ( f ) = N 1 n = 0 ∑ N − 1 f ( { N n g } ) を、生成ベクトル g g g の階数 1 の格子則 という。
L ⊥ = L ⊥ ( g , N ) = { h ∈ Z d : h ⋅ g ≡ 0 ( m o d N ) } L^\perp = L^\perp(g, N) = \{h \in \mathbb{Z}^d : h\cdot g \equiv 0 \pmod N\} L ⊥ = L ⊥ ( g , N ) = { h ∈ Z d : h ⋅ g ≡ 0 ( mod N )} をその双対格子 という。
d = 1 d = 1 d = 1 、g = 1 g = 1 g = 1 は等間隔の点での平均(周期関数に対する台形則)です。d ≥ 2 d \ge 2 d ≥ 2 では、N N N 点が 1 本の「巻きついた直線」の上に等間隔に並びます。双対格子の直観は次の定理の 1 で分かります。格子則の誤差は、双対格子の点 h h h に対応する Fourier 係数だけの和で決まるので、双対格子に 0 0 0 に近い点(r ( h ) r(h) r ( h ) の小さい点)が無いほど誤差は小さくなります。生成ベクトル g g g を選ぶことは、この双対格子の形を選ぶことです。関数は R d \mathbb{R}^d R d 上で各変数について周期 1 1 1 とし、Fourier 係数を f ^ ( h ) = ∫ [ 0 , 1 ] d f ( x ) e ( − h ⋅ x ) d x \hat f(h) = \int_{[0,1]^d}f(x)e(-h\cdot x)\,dx f ^ ( h ) = ∫ [ 0 , 1 ] d f ( x ) e ( − h ⋅ x ) d x (h ∈ Z d h \in \mathbb{Z}^d h ∈ Z d )と書きます。r ( h ) = ∏ j = 1 d max ( 1 , ∣ h j ∣ ) r(h) = \prod_{j=1}^d\max(1, |h_j|) r ( h ) = ∏ j = 1 d max ( 1 , ∣ h j ∣ ) とおきます。
補題 6.2 (指標の直交性 ) ✓
整数 k k k と N ≥ 1 N \ge 1 N ≥ 1 について、1 N ∑ n = 0 N − 1 e ( n k N ) \dfrac1N\displaystyle\sum_{n=0}^{N-1}e\Bigl(\frac{nk}{N}\Bigr) N 1 n = 0 ∑ N − 1 e ( N nk ) は N ∣ k N \mid k N ∣ k のとき 1 1 1 、そうでないとき 0 0 0 である。
証明(補題 6.2) N ∣ k N \mid k N ∣ k なら各項が 1 1 1 です。そうでなければ w = e ( k / N ) ≠ 1 w = e(k/N) \ne 1 w = e ( k / N ) = 1 、w N = e ( k ) = 1 w^N = e(k) = 1 w N = e ( k ) = 1 で、等比数列の和は ( w N − 1 ) / ( w − 1 ) = 0 (w^N - 1)/(w - 1) = 0 ( w N − 1 ) / ( w − 1 ) = 0 です。
∎
定理 6.3 (格子則の誤差と、良い生成ベクトルの存在 ) ✓
定義 6.1 の記号で次が成り立つ。
f f f が各変数について周期 1 1 1 の連続関数で ∑ h ∈ Z d ∣ f ^ ( h ) ∣ < ∞ \sum_{h\in\mathbb{Z}^d}|\hat f(h)| < \infty ∑ h ∈ Z d ∣ f ^ ( h ) ∣ < ∞ ならば
Q N ( f ) − ∫ [ 0 , 1 ] d f ( x ) d x = ∑ h ∈ L ⊥ ∖ { 0 } f ^ ( h ) . Q_N(f) - \int_{[0,1]^d}f(x)\,dx = \sum_{h\in L^\perp\setminus\{0\}}\hat f(h). Q N ( f ) − ∫ [ 0 , 1 ] d f ( x ) d x = h ∈ L ⊥ ∖ { 0 } ∑ f ^ ( h ) .
α > 1 \alpha > 1 α > 1 、C > 0 C > 0 C > 0 とし、周期 1 1 1 の連続関数で ∣ f ^ ( h ) ∣ ≤ C r ( h ) − α |\hat f(h)| \le C\,r(h)^{-\alpha} ∣ f ^ ( h ) ∣ ≤ C r ( h ) − α (すべての h h h )を満たすものの全体を E α ( C ) E_\alpha(C) E α ( C ) とする。このとき
sup f ∈ E α ( C ) ∣ Q N ( f ) − ∫ [ 0 , 1 ] d f ∣ = C P α ( g , N ) , P α ( g , N ) = ∑ h ∈ L ⊥ ∖ { 0 } r ( h ) − α . \sup_{f\in E_\alpha(C)}\Bigl|Q_N(f) - \int_{[0,1]^d}f\Bigr| = C\,P_\alpha(g, N), \qquad P_\alpha(g, N) = \sum_{h\in L^\perp\setminus\{0\}}r(h)^{-\alpha}. f ∈ E α ( C ) sup Q N ( f ) − ∫ [ 0 , 1 ] d f = C P α ( g , N ) , P α ( g , N ) = h ∈ L ⊥ ∖ { 0 } ∑ r ( h ) − α .
N N N を素数で N ≥ 3 N \ge 3 N ≥ 3 かつ 1 + 1 / ln N ≤ α 1 + 1/\ln N \le \alpha 1 + 1/ ln N ≤ α を満たすものとする。このとき g ∈ { 0 , 1 , … , N − 1 } d g \in \{0, 1, \ldots, N-1\}^d g ∈ { 0 , 1 , … , N − 1 } d で
P α ( g , N ) ≤ ( 2 e ) α ( 3 + 2 ln N ) α d N α P_\alpha(g, N) \le (2e)^\alpha\,\frac{(3 + 2\ln N)^{\alpha d}}{N^\alpha} P α ( g , N ) ≤ ( 2 e ) α N α ( 3 + 2 ln N ) α d
を満たすものが存在する。
1 と 2 は Fourier 級数と指標の直交性(補題 6.2 )から直接出ます。3 は「良い g g g を具体的に作る」のではなく、「すべての g g g について P β P_\beta P β を平均すると十分小さい。最小値は平均以下なので、平均以下の g g g が少なくとも 1 つある」という論法で存在を示します。まず β \beta β で平均を評価し、次に不等式で β \beta β から α \alpha α に移ります。
証明(定理 6.3) 1. S ( x ) = ∑ h f ^ ( h ) e ( h ⋅ x ) S(x) = \sum_h\hat f(h)e(h\cdot x) S ( x ) = ∑ h f ^ ( h ) e ( h ⋅ x ) とおきます。∣ f ^ ( h ) e ( h ⋅ x ) ∣ = ∣ f ^ ( h ) ∣ |\hat f(h)e(h\cdot x)| = |\hat f(h)| ∣ f ^ ( h ) e ( h ⋅ x ) ∣ = ∣ f ^ ( h ) ∣ の和が有限なので、この級数は一様に絶対収束し、S S S は周期 1 1 1 の連続関数です。一様収束する級数は項別に積分できるので、S S S の Fourier 係数は f ^ ( h ) \hat f(h) f ^ ( h ) です。f − S f - S f − S は Fourier 係数がすべて 0 0 0 の連続関数なので、f = S f = S f = S です(命題 7.1[フーリエ級数] 。変数を θ = 2 π x \theta = 2\pi x θ = 2 π x と取り替えて使います)。x n = { n g / N } x_n = \{ng/N\} x n = { n g / N } を代入すると e ( h ⋅ x n ) = e ( n ( h ⋅ g ) / N ) e(h\cdot x_n) = e(n(h\cdot g)/N) e ( h ⋅ x n ) = e ( n ( h ⋅ g ) / N ) で、絶対収束から和の順序を入れ替えて
Q N ( f ) = ∑ h ∈ Z d f ^ ( h ) ⋅ 1 N ∑ n = 0 N − 1 e ( n ( h ⋅ g ) N ) = ∑ h ∈ L ⊥ f ^ ( h ) Q_N(f) = \sum_{h\in\mathbb{Z}^d}\hat f(h)\cdot\frac1N\sum_{n=0}^{N-1}e\Bigl(\frac{n(h\cdot g)}{N}\Bigr) = \sum_{h\in L^\perp}\hat f(h) Q N ( f ) = h ∈ Z d ∑ f ^ ( h ) ⋅ N 1 n = 0 ∑ N − 1 e ( N n ( h ⋅ g ) ) = h ∈ L ⊥ ∑ f ^ ( h ) です(補題 6.2 を k = h ⋅ g k = h\cdot g k = h ⋅ g で使いました)。h = 0 h = 0 h = 0 の項は f ^ ( 0 ) = ∫ f \hat f(0) = \int f f ^ ( 0 ) = ∫ f です。
2. ∑ h ∈ Z d r ( h ) − α = ∏ j = 1 d ∑ h j ∈ Z max ( 1 , ∣ h j ∣ ) − α = ( 1 + 2 ζ ( α ) ) d < ∞ \sum_{h\in\mathbb{Z}^d}r(h)^{-\alpha} = \prod_{j=1}^d\sum_{h_j\in\mathbb{Z}}\max(1, |h_j|)^{-\alpha} = (1 + 2\zeta(\alpha))^d < \infty ∑ h ∈ Z d r ( h ) − α = ∏ j = 1 d ∑ h j ∈ Z max ( 1 , ∣ h j ∣ ) − α = ( 1 + 2 ζ ( α ) ) d < ∞ です(ζ ( α ) = ∑ k ≥ 1 k − α \zeta(\alpha) = \sum_{k\ge1}k^{-\alpha} ζ ( α ) = ∑ k ≥ 1 k − α )。したがって f ∈ E α ( C ) f \in E_\alpha(C) f ∈ E α ( C ) は 1 の仮定を満たし、∣ Q N ( f ) − ∫ f ∣ ≤ ∑ h ∈ L ⊥ ∖ { 0 } ∣ f ^ ( h ) ∣ ≤ C P α ( g , N ) |Q_N(f) - \int f| \le \sum_{h\in L^\perp\setminus\{0\}}|\hat f(h)| \le C\,P_\alpha(g, N) ∣ Q N ( f ) − ∫ f ∣ ≤ ∑ h ∈ L ⊥ ∖ { 0 } ∣ f ^ ( h ) ∣ ≤ C P α ( g , N ) です。等号は f ∗ ( x ) = C ∑ h r ( h ) − α e ( h ⋅ x ) f^*(x) = C\sum_hr(h)^{-\alpha}e(h\cdot x) f ∗ ( x ) = C ∑ h r ( h ) − α e ( h ⋅ x ) で成り立ちます。この級数は一様収束するので f ∗ f^* f ∗ は周期 1 1 1 の連続関数で、Fourier 係数は C r ( h ) − α C\,r(h)^{-\alpha} C r ( h ) − α です。f ∗ ∈ E α ( C ) f^* \in E_\alpha(C) f ∗ ∈ E α ( C ) で、1 から誤差はちょうど C P α ( g , N ) C\,P_\alpha(g, N) C P α ( g , N ) です。
3. まず 1 < β ≤ α 1 < \beta \le \alpha 1 < β ≤ α である β \beta β について、g g g を { 0 , … , N − 1 } d \{0, \ldots, N-1\}^d { 0 , … , N − 1 } d の全体で動かした P β ( g , N ) P_\beta(g, N) P β ( g , N ) の平均 M β M_\beta M β を評価します。
M β = 1 N d ∑ g ∑ h ≠ 0 1 [ h ⋅ g ≡ 0 ] r ( h ) − β = ∑ h ≠ 0 r ( h ) − β ⋅ # { g : h ⋅ g ≡ 0 ( m o d N ) } N d M_\beta = \frac{1}{N^d}\sum_g\sum_{h\ne0}\mathbf{1}[h\cdot g \equiv 0]\,r(h)^{-\beta} = \sum_{h\ne0}r(h)^{-\beta}\cdot\frac{\#\{g : h\cdot g \equiv 0 \pmod N\}}{N^d} M β = N d 1 g ∑ h = 0 ∑ 1 [ h ⋅ g ≡ 0 ] r ( h ) − β = h = 0 ∑ r ( h ) − β ⋅ N d # { g : h ⋅ g ≡ 0 ( mod N )} です。h h h の成分のうちに N N N で割り切れないもの h j h_{j} h j があるとき、N N N が素数なので h j h_j h j は N N N を法として逆元をもち、他の成分 g i g_i g i (i ≠ j i \ne j i = j )を任意に決めると g j g_j g j が N N N を法としてただ 1 つ決まります。解は N d − 1 N^{d-1} N d − 1 個で、割合は 1 / N 1/N 1/ N です。すべての成分が N N N で割り切れるときは、すべての g g g が解で、割合は 1 1 1 です。後者の h h h は h = N k h = Nk h = N k (k ∈ Z d ∖ { 0 } k \in \mathbb{Z}^d\setminus\{0\} k ∈ Z d ∖ { 0 } )と書け、k j ≠ 0 k_j \ne 0 k j = 0 の成分で max ( 1 , N ∣ k j ∣ ) = N ∣ k j ∣ \max(1, N|k_j|) = N|k_j| max ( 1 , N ∣ k j ∣ ) = N ∣ k j ∣ 、その他の成分で 1 1 1 なので r ( N k ) ≥ N r ( k ) r(Nk) \ge N\,r(k) r ( N k ) ≥ N r ( k ) です。よって
M β ≤ 1 N ∑ h ≠ 0 r ( h ) − β + ∑ k ≠ 0 ( N r ( k ) ) − β ≤ 2 N ( 1 + 2 ζ ( β ) ) d M_\beta \le \frac1N\sum_{h\ne0}r(h)^{-\beta} + \sum_{k\ne0}\bigl(N\,r(k)\bigr)^{-\beta} \le \frac{2}{N}\bigl(1 + 2\zeta(\beta)\bigr)^d M β ≤ N 1 h = 0 ∑ r ( h ) − β + k = 0 ∑ ( N r ( k ) ) − β ≤ N 2 ( 1 + 2 ζ ( β ) ) d です(N − β ≤ N − 1 N^{-\beta} \le N^{-1} N − β ≤ N − 1 )。最小値は平均以下なので、P β ( g , N ) ≤ M β P_\beta(g, N) \le M_\beta P β ( g , N ) ≤ M β を満たす g g g があります。
次に β \beta β から α \alpha α へ移ります。非負の数 a i a_i a i と p ≥ 1 p \ge 1 p ≥ 1 について ∑ i a i p ≤ ( ∑ i a i ) p \sum_ia_i^p \le (\sum_ia_i)^p ∑ i a i p ≤ ( ∑ i a i ) p です(S = ∑ i a i > 0 S = \sum_ia_i > 0 S = ∑ i a i > 0 として a i / S ≤ 1 a_i/S \le 1 a i / S ≤ 1 から ( a i / S ) p ≤ a i / S (a_i/S)^p \le a_i/S ( a i / S ) p ≤ a i / S を足します)。a h = r ( h ) − β a_h = r(h)^{-\beta} a h = r ( h ) − β 、p = α / β p = \alpha/\beta p = α / β とすると、同じ g g g について
P α ( g , N ) = ∑ h ∈ L ⊥ ∖ { 0 } ( r ( h ) − β ) α / β ≤ P β ( g , N ) α / β ≤ M β α / β P_\alpha(g, N) = \sum_{h\in L^\perp\setminus\{0\}}\bigl(r(h)^{-\beta}\bigr)^{\alpha/\beta} \le P_\beta(g, N)^{\alpha/\beta} \le M_\beta^{\alpha/\beta} P α ( g , N ) = h ∈ L ⊥ ∖ { 0 } ∑ ( r ( h ) − β ) α / β ≤ P β ( g , N ) α / β ≤ M β α / β です。ここで β = 1 + 1 / ln N \beta = 1 + 1/\ln N β = 1 + 1/ ln N と選びます(仮定から β ≤ α \beta \le \alpha β ≤ α )。ζ ( β ) ≤ 1 + ∫ 1 ∞ x − β d x = 1 + 1 / ( β − 1 ) = 1 + ln N \zeta(\beta) \le 1 + \int_1^\infty x^{-\beta}dx = 1 + 1/(\beta - 1) = 1 + \ln N ζ ( β ) ≤ 1 + ∫ 1 ∞ x − β d x = 1 + 1/ ( β − 1 ) = 1 + ln N なので
M β ≤ y , y = 2 ( 3 + 2 ln N ) d N ≥ 1 N M_\beta \le y, \qquad y = \frac{2(3 + 2\ln N)^d}{N} \ge \frac1N M β ≤ y , y = N 2 ( 3 + 2 ln N ) d ≥ N 1 です。y α / β ≤ e α y α y^{\alpha/\beta} \le e^\alpha y^\alpha y α / β ≤ e α y α を示します。y ≥ 1 y \ge 1 y ≥ 1 なら α / β ≤ α \alpha/\beta \le \alpha α / β ≤ α から y α / β ≤ y α y^{\alpha/\beta} \le y^\alpha y α / β ≤ y α です。y < 1 y < 1 y < 1 なら y α / β = y α ⋅ y − α ( 1 − 1 / β ) y^{\alpha/\beta} = y^\alpha\cdot y^{-\alpha(1 - 1/\beta)} y α / β = y α ⋅ y − α ( 1 − 1/ β ) で、1 − 1 / β = ( β − 1 ) / β ≤ β − 1 = 1 / ln N 1 - 1/\beta = (\beta-1)/\beta \le \beta - 1 = 1/\ln N 1 − 1/ β = ( β − 1 ) / β ≤ β − 1 = 1/ ln N と y ≥ 1 / N y \ge 1/N y ≥ 1/ N から y − α ( 1 − 1 / β ) ≤ N α / ln N = e α y^{-\alpha(1-1/\beta)} \le N^{\alpha/\ln N} = e^\alpha y − α ( 1 − 1/ β ) ≤ N α / l n N = e α です。以上から
P α ( g , N ) ≤ e α y α = ( 2 e ) α ( 3 + 2 ln N ) α d N α . P_\alpha(g, N) \le e^\alpha y^\alpha = (2e)^\alpha\frac{(3 + 2\ln N)^{\alpha d}}{N^\alpha}. P α ( g , N ) ≤ e α y α = ( 2 e ) α N α ( 3 + 2 ln N ) α d . ∎
3 の主張は「良い g g g がある」という存在定理で、平均が小さいことから導いています。ほとんどの g g g が悪くないということでもあります。実際に g g g を見つけるには、P α P_\alpha P α を計算して探します。α \alpha α が偶数のとき P α P_\alpha P α は Bernoulli 多項式で閉じた形に書け(次の例)、1 つの g g g について O ( N d ) O(Nd) O ( N d ) の手間で計算できます。成分を 1 つずつ決めていく構成法(component-by-component 構成)は、Dick–Kuo–Sloan の総説にあります。
収束の次数は α \alpha α 、すなわち関数の滑らかさで決まります。f f f の混合偏導関数が各変数について α \alpha α 階まで連続かつ周期的なら、部分積分から ∣ f ^ ( h ) ∣ ≤ C r ( h ) − α |\hat f(h)| \le C\,r(h)^{-\alpha} ∣ f ^ ( h ) ∣ ≤ C r ( h ) − α です。滑らかな周期関数ほど速く収束し、Halton 列のような N − 1 N^{-1} N − 1 の壁がありません。周期的でない関数に格子則をそのまま使うと、境界での跳びが Fourier 係数の減衰を r ( h ) − 1 r(h)^{-1} r ( h ) − 1 に落とし、利点が消えます。
次の例は、2 次元で具体的に良い g g g の一つを挙げるものです。g = ( 1 , F m − 1 ) g = (1, F_{m-1}) g = ( 1 , F m − 1 ) の比 F m − 1 / F m F_{m-1}/F_m F m − 1 / F m は黄金比に近く、§3 で見たとおり黄金比は有理数で最も近似しにくい無理数です。そのため双対格子の点で r ( h ) r(h) r ( h ) が小さいものが現れにくくなる、というのがこの選び方の動機で、例ではそれを実際に確かめます。
例 6.4 (Fibonacci 格子(d = 2) )
Fibonacci 数を F 1 = F 2 = 1 F_1 = F_2 = 1 F 1 = F 2 = 1 、F k + 1 = F k + F k − 1 F_{k+1} = F_k + F_{k-1} F k + 1 = F k + F k − 1 とし、N = F m N = F_m N = F m 、g = ( 1 , F m − 1 ) g = (1, F_{m-1}) g = ( 1 , F m − 1 ) とします。双対格子は { h : h 1 + F m − 1 h 2 ≡ 0 ( m o d F m ) } \{h : h_1 + F_{m-1}h_2 \equiv 0 \pmod{F_m}\} { h : h 1 + F m − 1 h 2 ≡ 0 ( mod F m )} です。恒等式 F m − 1 F k − F m F k − 1 = ( − 1 ) k − 1 F m − k F_{m-1}F_k - F_mF_{k-1} = (-1)^{k-1}F_{m-k} F m − 1 F k − F m F k − 1 = ( − 1 ) k − 1 F m − k (1 ≤ k ≤ m − 1 1 \le k \le m-1 1 ≤ k ≤ m − 1 。k k k についての帰納法で確かめられます)から、
h ( k ) = ( ( − 1 ) k F m − k , F k ) ∈ L ⊥ , r ( h ( k ) ) = F k F m − k h^{(k)} = \bigl((-1)^kF_{m-k},\ F_k\bigr) \in L^\perp, \qquad r(h^{(k)}) = F_kF_{m-k} h ( k ) = ( ( − 1 ) k F m − k , F k ) ∈ L ⊥ , r ( h ( k ) ) = F k F m − k です。F k F m − k + F k − 1 F m − k − 1 = F m − 1 F_kF_{m-k} + F_{k-1}F_{m-k-1} = F_{m-1} F k F m − k + F k − 1 F m − k − 1 = F m − 1 から r ( h ( k ) ) ≥ F m − 1 / 2 r(h^{(k)}) \ge F_{m-1}/2 r ( h ( k ) ) ≥ F m − 1 /2 で、これらの双対格子の点はどれも r ( h ) r(h) r ( h ) が N N N に比例する大きさです。双対格子の 0 0 0 でない点すべてについて r ( h ) ≥ c N r(h) \ge cN r ( h ) ≥ c N (c > 0 c > 0 c > 0 は m m m によらない定数)が成り立つことが連分数の理論から分かり、それを使うと P α = O ( N − α log N ) P_\alpha = O(N^{-\alpha}\log N) P α = O ( N − α log N ) が出ます(Niederreiter の本の第 5 章、Sloan–Joe の本)。2 次元では対数が 1 個で済みます。
α = 2 \alpha = 2 α = 2 では、∑ h ∈ Z max ( 1 , ∣ h ∣ ) − 2 e ( h x ) = 1 + 2 π 2 B 2 ( { x } ) \sum_{h\in\mathbb{Z}}\max(1,|h|)^{-2}e(hx) = 1 + 2\pi^2B_2(\{x\}) ∑ h ∈ Z max ( 1 , ∣ h ∣ ) − 2 e ( h x ) = 1 + 2 π 2 B 2 ({ x }) (B 2 ( x ) = x 2 − x + 1 / 6 B_2(x) = x^2 - x + 1/6 B 2 ( x ) = x 2 − x + 1/6 は Bernoulli 多項式)なので、定理 6.3 の 2 の f ∗ f^* f ∗ (C = 1 C = 1 C = 1 )は ∏ j ( 1 + 2 π 2 B 2 ( { x j } ) ) \prod_j(1 + 2\pi^2B_2(\{x_j\})) ∏ j ( 1 + 2 π 2 B 2 ({ x j })) で、
P 2 ( g , N ) = 1 N ∑ n = 0 N − 1 ∏ j = 1 d ( 1 + 2 π 2 B 2 ( { n g j N } ) ) − 1 P_2(g, N) = \frac1N\sum_{n=0}^{N-1}\prod_{j=1}^d\Bigl(1 + 2\pi^2B_2\Bigl(\Bigl\{\frac{ng_j}{N}\Bigr\}\Bigr)\Bigr) - 1 P 2 ( g , N ) = N 1 n = 0 ∑ N − 1 j = 1 ∏ d ( 1 + 2 π 2 B 2 ( { N n g j } ) ) − 1 と有限和で計算できます。§8 で Fibonacci 格子についてこの値を計算し、N 2 P 2 / ln N N^2P_2/\ln N N 2 P 2 / ln N がほぼ一定であることを確かめます。
準 Monte Carlo 法の点集合は決定的なので、1 回の計算では誤差の大きさが分かりません。定理 4.4 の上界は計算できないうえに過大です。点集合全体を無作為にずらすと、統計的な誤差評価が戻ってきます。
定義 7.1 (無作為な平行移動(Cranley–Patterson) ) ↗
点集合 P = { x 1 , … , x N } ⊂ [ 0 , 1 ) d P = \{x_1, \ldots, x_N\} \subset [0,1)^d P = { x 1 , … , x N } ⊂ [ 0 , 1 ) d と、[ 0 , 1 ) d [0,1)^d [ 0 , 1 ) d 上の一様分布に従う確率変数 U U U について、点集合 { x n + U } \{x_n + U\} { x n + U } (成分ごとに小数部分を取る)を P P P の無作為な平行移動 といい、
Q U ( f ) = 1 N ∑ n = 1 N f ( { x n + U } ) Q_U(f) = \frac1N\sum_{n=1}^Nf(\{x_n + U\}) Q U ( f ) = N 1 n = 1 ∑ N f ({ x n + U }) をそれによる推定量という。
命題 7.2 (無作為な平行移動による推定量は不偏 ) ✓
f : [ 0 , 1 ) d → R f : [0,1)^d \to \mathbb{R} f : [ 0 , 1 ) d → R を可積分な関数とし、I = ∫ [ 0 , 1 ) d f I = \int_{[0,1)^d}f I = ∫ [ 0 , 1 ) d f とする。
各 x ∈ [ 0 , 1 ) d x \in [0,1)^d x ∈ [ 0 , 1 ) d について { x + U } \{x + U\} { x + U } は [ 0 , 1 ) d [0,1)^d [ 0 , 1 ) d 上の一様分布に従う。したがって E [ Q U ( f ) ] = I \mathbb{E}[Q_U(f)] = I E [ Q U ( f )] = I 。
f f f が 2 乗可積分とする。独立な平行移動 U 1 , … , U M U_1, \ldots, U_M U 1 , … , U M (M ≥ 2 M \ge 2 M ≥ 2 )について、Q ˉ = M − 1 ∑ k Q U k ( f ) \bar Q = M^{-1}\sum_kQ_{U_k}(f) Q ˉ = M − 1 ∑ k Q U k ( f ) は E [ Q ˉ ] = I \mathbb{E}[\bar Q] = I E [ Q ˉ ] = I 、V a r ( Q ˉ ) = V a r ( Q U ( f ) ) / M \mathrm{Var}(\bar Q) = \mathrm{Var}(Q_U(f))/M Var ( Q ˉ ) = Var ( Q U ( f )) / M を満たし、標本分散 s 2 = ( M − 1 ) − 1 ∑ k ( Q U k ( f ) − Q ˉ ) 2 s^2 = (M-1)^{-1}\sum_k(Q_{U_k}(f) - \bar Q)^2 s 2 = ( M − 1 ) − 1 ∑ k ( Q U k ( f ) − Q ˉ ) 2 について E [ s 2 / M ] = V a r ( Q ˉ ) \mathbb{E}[s^2/M] = \mathrm{Var}(\bar Q) E [ s 2 / M ] = Var ( Q ˉ ) である。
証明(命題 7.2) 1. [ 0 , 1 ) d [0,1)^d [ 0 , 1 ) d 上の有界な可測関数 ϕ \phi ϕ を、各変数について周期 1 1 1 に延長した関数も ϕ \phi ϕ と書きます。ϕ ( { x + u } ) = ϕ ( x + u ) \phi(\{x + u\}) = \phi(x + u) ϕ ({ x + u }) = ϕ ( x + u ) です。1 変数では、周期 1 1 1 の関数の長さ 1 1 1 の区間での積分は区間の位置によらないので ∫ 0 1 ϕ ( x + u ) d u = ∫ x x + 1 ϕ ( v ) d v = ∫ 0 1 ϕ ( v ) d v \int_0^1\phi(x + u)\,du = \int_x^{x+1}\phi(v)\,dv = \int_0^1\phi(v)\,dv ∫ 0 1 ϕ ( x + u ) d u = ∫ x x + 1 ϕ ( v ) d v = ∫ 0 1 ϕ ( v ) d v です。d d d 変数では、Fubini の定理(定理 3.4[直積測度と Fubini–Tonelli の定理] )で座標ごとにこの置き換えを行って
E [ ϕ ( { x + U } ) ] = ∫ [ 0 , 1 ) d ϕ ( x + u ) d u = ∫ [ 0 , 1 ) d ϕ ( v ) d v \mathbb{E}[\phi(\{x + U\})] = \int_{[0,1)^d}\phi(x + u)\,du = \int_{[0,1)^d}\phi(v)\,dv E [ ϕ ({ x + U })] = ∫ [ 0 , 1 ) d ϕ ( x + u ) d u = ∫ [ 0 , 1 ) d ϕ ( v ) d v です。ϕ \phi ϕ を可測集合の定義関数にすれば、{ x + U } \{x + U\} { x + U } の分布が一様分布であることになります。したがって可積分な f f f について E [ f ( { x n + U } ) ] = I \mathbb{E}[f(\{x_n + U\})] = I E [ f ({ x n + U })] = I で、n n n について平均して E [ Q U ( f ) ] = I \mathbb{E}[Q_U(f)] = I E [ Q U ( f )] = I です。
2. Y k = Q U k ( f ) Y_k = Q_{U_k}(f) Y k = Q U k ( f ) は独立同分布です。( N − 1 ∑ n a n ) 2 ≤ N − 1 ∑ n a n 2 (N^{-1}\sum_na_n)^2 \le N^{-1}\sum_na_n^2 ( N − 1 ∑ n a n ) 2 ≤ N − 1 ∑ n a n 2 と 1 から E [ Y k 2 ] ≤ N − 1 ∑ n E [ f ( { x n + U } ) 2 ] = ∫ f 2 < ∞ \mathbb{E}[Y_k^2] \le N^{-1}\sum_n\mathbb{E}[f(\{x_n + U\})^2] = \int f^2 < \infty E [ Y k 2 ] ≤ N − 1 ∑ n E [ f ({ x n + U } ) 2 ] = ∫ f 2 < ∞ なので分散は有限です。独立同分布な標本の平均と標本分散についての主張(定理 2.2[Monte Carlo 積分と分散低減] の 1〜3)から結論を得ます。
∎
平行移動しても、格子則の点集合は格子のままです(双対格子は変わりません)。一般の点集合でも、箱を平行移動すると高々 2 d 2^d 2 d 個の箱に分かれるので、食い違い量は定数倍しか悪くなりません。つまり、点集合の良さを保ったまま無作為性が入ります。使い方は次のとおりです。全部で N M NM N M 回の関数評価を、M M M 個(10〜50 個)の独立な平行移動に分け、M M M 個の値の平均を答え、s / M s/\sqrt M s / M を標準誤差とします。M M M を大きくしすぎると N N N が小さくなって準 Monte Carlo 法の利点が減るので、M M M は誤差の推定に必要な最小限にします。
定理 5.4 の上界 ( log N ) d / N (\log N)^d/N ( log N ) d / N が N − 1 / 2 N^{-1/2} N − 1/2 より小さくなるのは、N N N が d d d について指数的に大きくなってからです。それでも、金融の経路依存型の積分のような数百次元の問題で、準 Monte Carlo 法は実際に Monte Carlo 法より良い結果を出します。その理由は、被積分関数が「見かけの次元」ほど高次元でないことにあります。これを分散の分解で表します。
考え方は次のとおりです。多変数の関数 f f f を、「x 1 x_1 x 1 だけに依存する部分」「x 2 x_2 x 2 だけに依存する部分」「x 1 , x 2 x_1, x_2 x 1 , x 2 の組に依存する部分」…というように、依存する変数の組ごとの部分に分けます。各部分の分散を足すと全体の分散になるようにできます。そのとき、依存する変数の数が少ない部分に分散のほとんどがあるなら、見かけの次元が高くても実質的には低次元の積分とみなせます。次の定義と命題はこれを正確に述べたものです。
D = { 1 , … , d } D = \{1, \ldots, d\} D = { 1 , … , d } とし、f ∈ L 2 ( [ 0 , 1 ] d ) f \in L^2([0,1]^d) f ∈ L 2 ([ 0 , 1 ] d ) 、u ⊆ D u \subseteq D u ⊆ D について、u u u に属さない変数で積分した関数を
( Π u f ) ( x u ) = ∫ [ 0 , 1 ] D ∖ u f ( x ) d x D ∖ u (\Pi_uf)(x_u) = \int_{[0,1]^{D\setminus u}}f(x)\,dx_{D\setminus u} ( Π u f ) ( x u ) = ∫ [ 0 , 1 ] D ∖ u f ( x ) d x D ∖ u
と書きます(Π ∅ f = I = ∫ f \Pi_\emptyset f = I = \int f Π ∅ f = I = ∫ f 、Π D f = f \Pi_Df = f Π D f = f )。
定義 7.3 (ANOVA 分解・有効次元 ) ↗
f ∈ L 2 ( [ 0 , 1 ] d ) f \in L^2([0,1]^d) f ∈ L 2 ([ 0 , 1 ] d ) について、∣ u ∣ |u| ∣ u ∣ の小さい順に
f u = Π u f − ∑ v ⊊ u f v f_u = \Pi_uf - \sum_{v\subsetneq u}f_v f u = Π u f − v ⊊ u ∑ f v と定め、f = ∑ u ⊆ D f u f = \sum_{u\subseteq D}f_u f = ∑ u ⊆ D f u を f f f の ANOVA 分解 という。σ u 2 = ∫ [ 0 , 1 ] d f u 2 \sigma_u^2 = \int_{[0,1]^d}f_u^2 σ u 2 = ∫ [ 0 , 1 ] d f u 2 (u ≠ ∅ u \ne \emptyset u = ∅ )、σ 2 = ∫ ( f − I ) 2 \sigma^2 = \int(f - I)^2 σ 2 = ∫ ( f − I ) 2 とする。0 < p < 1 0 < p < 1 0 < p < 1 について、∑ 0 < ∣ u ∣ ≤ s σ u 2 ≥ p σ 2 \sum_{0<|u|\le s}\sigma_u^2 \ge p\,\sigma^2 ∑ 0 < ∣ u ∣ ≤ s σ u 2 ≥ p σ 2 となる最小の s s s を、f f f の(重ね合わせの意味の)有効次元 という(p = 0.99 p = 0.99 p = 0.99 がよく使われる)。
命題 7.4 (ANOVA 分解の直交性と、無作為化した準 Monte Carlo 法の誤差 ) ✓
f ∈ L 2 ( [ 0 , 1 ] d ) f \in L^2([0,1]^d) f ∈ L 2 ([ 0 , 1 ] d ) とし、定義 7.3 の記号を使う。
f u f_u f u は x u x_u x u だけの関数で、j ∈ u j \in u j ∈ u ならば ∫ 0 1 f u d x j = 0 \int_0^1f_u\,dx_j = 0 ∫ 0 1 f u d x j = 0 。
u ≠ v u \ne v u = v ならば ∫ [ 0 , 1 ] d f u f v d x = 0 \int_{[0,1]^d}f_uf_v\,dx = 0 ∫ [ 0 , 1 ] d f u f v d x = 0 。したがって σ 2 = ∑ ∅ ≠ u ⊆ D σ u 2 \sigma^2 = \sum_{\emptyset\ne u\subseteq D}\sigma_u^2 σ 2 = ∑ ∅ = u ⊆ D σ u 2 。
1 ≤ s ≤ d 1 \le s \le d 1 ≤ s ≤ d とし、f ≤ s = ∑ ∣ u ∣ ≤ s f u f_{\le s} = \sum_{|u|\le s}f_u f ≤ s = ∑ ∣ u ∣ ≤ s f u とおく。点集合 P ⊂ [ 0 , 1 ) d P \subset [0,1)^d P ⊂ [ 0 , 1 ) d の無作為な平行移動による推定量 Q U Q_U Q U について
E [ ( Q U ( f ) − I ) 2 ] ≤ E [ ( Q U ( f ≤ s ) − I ) 2 ] + ( ∑ ∣ u ∣ > s σ u 2 ) 1 / 2 . \sqrt{\mathbb{E}\bigl[(Q_U(f) - I)^2\bigr]} \le \sqrt{\mathbb{E}\bigl[(Q_U(f_{\le s}) - I)^2\bigr]} + \Bigl(\sum_{|u|>s}\sigma_u^2\Bigr)^{1/2}. E [ ( Q U ( f ) − I ) 2 ] ≤ E [ ( Q U ( f ≤ s ) − I ) 2 ] + ( ∣ u ∣ > s ∑ σ u 2 ) 1/2 .
証明(命題 7.4) 1. Π u f \Pi_uf Π u f は x u x_u x u だけの関数で、∣ u ∣ |u| ∣ u ∣ についての帰納法から f u f_u f u もそうです(v ⊊ u v \subsetneq u v ⊊ u の f v f_v f v は x v x_v x v だけの関数)。2 乗可積分性も同様です(Π u \Pi_u Π u は平均を取る操作で、Cauchy–Schwarz の不等式から ∫ ( Π u f ) 2 ≤ ∫ f 2 \int(\Pi_uf)^2 \le \int f^2 ∫ ( Π u f ) 2 ≤ ∫ f 2 )。積分が 0 0 0 になることを ∣ u ∣ |u| ∣ u ∣ についての帰納法で示します。j ∈ u j \in u j ∈ u とします。Fubini の定理(定理 3.4[直積測度と Fubini–Tonelli の定理] )から ∫ 0 1 Π u f d x j = Π u ∖ { j } f \int_0^1\Pi_uf\,dx_j = \Pi_{u\setminus\{j\}}f ∫ 0 1 Π u f d x j = Π u ∖ { j } f です。v ⊊ u v \subsetneq u v ⊊ u について、j ∉ v j \notin v j ∈ / v なら f v f_v f v は x j x_j x j によらないので ∫ 0 1 f v d x j = f v \int_0^1f_v\,dx_j = f_v ∫ 0 1 f v d x j = f v 、j ∈ v j \in v j ∈ v なら帰納法の仮定(∣ v ∣ < ∣ u ∣ |v| < |u| ∣ v ∣ < ∣ u ∣ )から ∫ 0 1 f v d x j = 0 \int_0^1f_v\,dx_j = 0 ∫ 0 1 f v d x j = 0 です。j ∉ v j \notin v j ∈ / v かつ v ⊊ u v \subsetneq u v ⊊ u となる v v v は、u ∖ { j } u\setminus\{j\} u ∖ { j } の部分集合の全体なので
∫ 0 1 f u d x j = Π u ∖ { j } f − ∑ v ⊆ u ∖ { j } f v = Π u ∖ { j } f − f u ∖ { j } − ∑ v ⊊ u ∖ { j } f v = 0 \int_0^1f_u\,dx_j = \Pi_{u\setminus\{j\}}f - \sum_{v\subseteq u\setminus\{j\}}f_v = \Pi_{u\setminus\{j\}}f - f_{u\setminus\{j\}} - \sum_{v\subsetneq u\setminus\{j\}}f_v = 0 ∫ 0 1 f u d x j = Π u ∖ { j } f − v ⊆ u ∖ { j } ∑ f v = Π u ∖ { j } f − f u ∖ { j } − v ⊊ u ∖ { j } ∑ f v = 0 です。最後の等号は f u ∖ { j } f_{u\setminus\{j\}} f u ∖ { j } の定義です。
2. u ≠ v u \ne v u = v なら、一方だけに属する添字があります。j ∈ u ∖ v j \in u\setminus v j ∈ u ∖ v とします(逆の場合も同じです)。f u f v f_uf_v f u f v は可積分で、f v f_v f v は x j x_j x j によらないので、Fubini の定理で x j x_j x j について先に積分すると、1 から
∫ f u f v d x = ∫ ( ∫ 0 1 f u d x j ) f v d x D ∖ { j } = 0 \int f_uf_v\,dx = \int\Bigl(\int_0^1f_u\,dx_j\Bigr)f_v\,dx_{D\setminus\{j\}} = 0 ∫ f u f v d x = ∫ ( ∫ 0 1 f u d x j ) f v d x D ∖ { j } = 0 です。f D f_D f D の定義から f = ∑ u ⊆ D f u f = \sum_{u\subseteq D}f_u f = ∑ u ⊆ D f u 、f ∅ = I f_\emptyset = I f ∅ = I なので f − I = ∑ u ≠ ∅ f u f - I = \sum_{u\ne\emptyset}f_u f − I = ∑ u = ∅ f u で、直交性から σ 2 = ∑ u ≠ ∅ σ u 2 \sigma^2 = \sum_{u\ne\emptyset}\sigma_u^2 σ 2 = ∑ u = ∅ σ u 2 です。
3. g = f − f ≤ s = ∑ ∣ u ∣ > s f u g = f - f_{\le s} = \sum_{|u|>s}f_u g = f − f ≤ s = ∑ ∣ u ∣ > s f u とおくと、2 から ∫ g 2 = ∑ ∣ u ∣ > s σ u 2 \int g^2 = \sum_{|u|>s}\sigma_u^2 ∫ g 2 = ∑ ∣ u ∣ > s σ u 2 です。Q U Q_U Q U は線形なので Q U ( f ) − I = ( Q U ( f ≤ s ) − I ) + Q U ( g ) Q_U(f) - I = (Q_U(f_{\le s}) - I) + Q_U(g) Q U ( f ) − I = ( Q U ( f ≤ s ) − I ) + Q U ( g ) で、2 乗平均のノルムについての三角不等式(Minkowski の不等式、定理 4.5[L^p 空間と関数解析への導入] )から
E [ ( Q U ( f ) − I ) 2 ] ≤ E [ ( Q U ( f ≤ s ) − I ) 2 ] + E [ Q U ( g ) 2 ] \sqrt{\mathbb{E}[(Q_U(f) - I)^2]} \le \sqrt{\mathbb{E}[(Q_U(f_{\le s}) - I)^2]} + \sqrt{\mathbb{E}[Q_U(g)^2]} E [( Q U ( f ) − I ) 2 ] ≤ E [( Q U ( f ≤ s ) − I ) 2 ] + E [ Q U ( g ) 2 ] です。( N − 1 ∑ n a n ) 2 ≤ N − 1 ∑ n a n 2 (N^{-1}\sum_na_n)^2 \le N^{-1}\sum_na_n^2 ( N − 1 ∑ n a n ) 2 ≤ N − 1 ∑ n a n 2 と、{ x n + U } \{x_n + U\} { x n + U } が一様分布に従うこと(命題 7.2 の 1)から
E [ Q U ( g ) 2 ] ≤ 1 N ∑ n = 1 N E [ g ( { x n + U } ) 2 ] = ∫ g 2 = ∑ ∣ u ∣ > s σ u 2 \mathbb{E}[Q_U(g)^2] \le \frac1N\sum_{n=1}^N\mathbb{E}\bigl[g(\{x_n + U\})^2\bigr] = \int g^2 = \sum_{|u|>s}\sigma_u^2 E [ Q U ( g ) 2 ] ≤ N 1 n = 1 ∑ N E [ g ({ x n + U } ) 2 ] = ∫ g 2 = ∣ u ∣ > s ∑ σ u 2 です。
∎
3 の右辺の第 1 項は、高々 s s s 個の変数の関数の和 f ≤ s f_{\le s} f ≤ s に対する誤差です。f u f_u f u の積分には点集合の u u u 座標への射影しか効かず、射影の食い違い量は ∣ u ∣ |u| ∣ u ∣ 次元のものなので、f u f_u f u が滑らかなら誤差は 定理 4.4 から O ( N − 1 ( log N ) ∣ u ∣ ) O(N^{-1}(\log N)^{|u|}) O ( N − 1 ( log N ) ∣ u ∣ ) です。第 2 項は高次の成分の大きさで、N N N によらず、しかも Monte Carlo 法の誤差 σ / N \sigma/\sqrt N σ / N と違って N N N で減りませんが、有効次元が小さければはじめから小さい量です。つまり、準 Monte Carlo 法が高次元で効く条件は「d d d が小さいこと」ではなく、「分散の大部分が少数の変数の成分にあり、点集合の低次元の射影が良いこと」です。変数の順序や取り方を変えて有効次元を下げる工夫(Brown 運動を Brown 橋で構成して、重要な変動をはじめの座標に集めるなど)が効くのもこのためです。
例 7.5 (積の形の関数の ANOVA 分解 )
f ( x ) = ∏ j = 1 d ( 1 + a j ( x j − 1 / 2 ) ) f(x) = \prod_{j=1}^d(1 + a_j(x_j - 1/2)) f ( x ) = ∏ j = 1 d ( 1 + a j ( x j − 1/2 )) とします。∫ 0 1 ( x j − 1 / 2 ) d x j = 0 \int_0^1(x_j - 1/2)\,dx_j = 0 ∫ 0 1 ( x j − 1/2 ) d x j = 0 なので、積を展開した各項 ∏ j ∈ u a j ( x j − 1 / 2 ) \prod_{j\in u}a_j(x_j - 1/2) ∏ j ∈ u a j ( x j − 1/2 ) は 命題 7.4 の 1 の性質をもち、これが f u f_u f u です(分解の一意性は 演習 9.4 と同じ計算で確かめられます)。I = 1 I = 1 I = 1 で、
σ u 2 = ∏ j ∈ u a j 2 12 , σ 2 = ∏ j = 1 d ( 1 + a j 2 12 ) − 1 \sigma_u^2 = \prod_{j\in u}\frac{a_j^2}{12}, \qquad \sigma^2 = \prod_{j=1}^d\Bigl(1 + \frac{a_j^2}{12}\Bigr) - 1 σ u 2 = j ∈ u ∏ 12 a j 2 , σ 2 = j = 1 ∏ d ( 1 + 12 a j 2 ) − 1 です。d = 5 d = 5 d = 5 、a j = 1 / j a_j = 1/j a j = 1/ j では σ 2 = 0.12570 \sigma^2 = 0.12570 σ 2 = 0.12570 、1 変数の成分の和は ∑ j a j 2 / 12 = 0.12197 \sum_ja_j^2/12 = 0.12197 ∑ j a j 2 /12 = 0.12197 で全体の 97.0 % 97.0\% 97.0% 、2 変数の成分まで入れると 99.97 % 99.97\% 99.97% です。見かけは 5 次元でも、有効次元は 2 2 2 (p = 0.99 p = 0.99 p = 0.99 )です。a j = 1 a_j = 1 a j = 1 で d = 100 d = 100 d = 100 とすると、σ 2 = ( 13 / 12 ) 100 − 1 ≈ 2.99 × 10 3 \sigma^2 = (13/12)^{100} - 1 \approx 2.99\times10^3 σ 2 = ( 13/12 ) 100 − 1 ≈ 2.99 × 1 0 3 に対し 1 変数の成分の和は 100 / 12 = 8.3 100/12 = 8.3 100/12 = 8.3 で、分散のほとんどが高次の成分にあります。同じ形の関数でも、係数の減り方で難しさがまったく違います。
コードは Python 3.9.6・NumPy 2.0.2・SciPy 1.13.1 で実行し、出力をそのまま載せています。乱数は numpy.random.default_rng(20261008) です。
1 次元は 命題 2.3 の式で計算します。2 次元では、点の座標の作る格子の各長方形の内部で A ( [ 0 , t ) ; P ) A([0,t); P) A ([ 0 , t ) ; P ) が一定で、δ P ( t ) = 定数 − t 1 t 2 \delta_P(t) = \text{定数} - t_1t_2 δ P ( t ) = 定数 − t 1 t 2 は各変数について単調なので、上限は長方形の頂点(格子点)での極限値、すなわち格子点での値(境界の点を含める数え方と含めない数え方の両方)の最大です。これを全格子点について計算します。
def radical_inverse ( n , b ) :
x = np. sort ( x ); n = len ( x )
return 0.5 / n + np. abs ( x - ( 2 * np. arange ( 1 , n + 1 ) - 1 ) / ( 2 * n) ). max ()
# 格子 (X ∪ {1}) × (Y ∪ {1}) の全点で、閉じた箱と開いた箱の点の個数を数える
xs, ys = np. append ( np. sort ( p [ :, 0 ]) , 1.0 ), np. append ( np. sort ( p [ :, 1 ]) , 1.0 )
ix = np. searchsorted ( xs [ : - 1 ] , p [ :, 0 ]); iy = np. searchsorted ( ys [ : - 1 ] , p [ :, 1 ])
cnt = np. zeros ( (n + 1 , n + 1 ) ); np.add. at ( cnt , (ix, iy) , 1.0 )
closed = cnt. cumsum ( axis = 0 ). cumsum ( axis = 1 ) # #{x <= xs[i], y <= ys[j]}
opened = np. zeros_like ( closed ); opened[ 1 :, 1 :] = closed[: - 1 , : - 1 ] # #{x < xs[i], y < ys[j]}
return max ( (closed / n - vol). max () , (vol - opened / n). max ())
print ( " N N*D(vdC,b=2) bound N*D(vdC,b=3) bound N*D(Halton 2,3) bound " )
for N in ( 10 , 100 , 1000 , 4000 ):
v2 = np. array ( [ radical_inverse ( n , 2 ) for n in range ( N ) ] )
v3 = np. array ( [ radical_inverse ( n , 3 ) for n in range ( N ) ] )
ilog = lambda N , b : len ( np. base_repr ( N , b )) - 1 # floor(log_b N)
clog = lambda N , b : len ( np. base_repr ( N - 1 , b )) # ceil(log_b N) (N >= 2)
b2, b3 = ( ilog ( N , 2 ) + 1 ), 2 * ( ilog ( N , 3 ) + 1 )
bh = ( clog ( N , 2 ) + 1 ) * ( 2 * clog ( N , 3 ) + 1 )
print ( f " {N :6d } {N * star_disc_1d ( v2 ) :8.3f } {b2 :4d } {N * star_disc_1d ( v3 ) :8.3f } {b3 :4d } "
f " {N * star_disc_2d ( np. column_stack ( [ v2, v3 ] )) :8.3f } {bh :5d } " )
N N*D(vdC,b=2) bound N*D(vdC,b=3) bound N*D(Halton 2,3) bound
10 1.750 4 1.889 6 2.667 35
100 2.313 7 2.951 10 5.024 88
1000 2.453 10 3.476 14 6.848 165
4000 2.453 12 4.749 16 9.136 221
bound は 定理 5.3 の ( b − 1 ) ( ⌊ log b N ⌋ + 1 ) (b-1)(\lfloor\log_bN\rfloor + 1) ( b − 1 ) (⌊ log b N ⌋ + 1 ) と 定理 5.4 の ∏ j ( ( b j − 1 ) ⌈ log b j N ⌉ + 1 ) \prod_j((b_j-1)\lceil\log_{b_j}N\rceil + 1) ∏ j (( b j − 1 ) ⌈ log b j N ⌉ + 1 ) です。N D N ∗ N D_N^* N D N ∗ は上界の中にあり、N N N とともにゆっくり(対数的に)増えています。独立な乱数なら N D N ∗ ND_N^* N D N ∗ は N \sqrt N N の大きさ(N = 4000 N = 4000 N = 4000 で N ≈ 63 \sqrt N \approx 63 N ≈ 63 )です。2 次元の上界は実際の値の 13 13 13 〜24 24 24 倍で、上界の定数が粗いことも分かります。
d = 5 d = 5 d = 5 で、2 つの被積分関数(どちらも積分は 1 1 1 )を使います。
f A ( x ) = ∏ j ( 1 + ( x j − 1 / 2 ) / j ) f_A(x) = \prod_j(1 + (x_j - 1/2)/j) f A ( x ) = ∏ j ( 1 + ( x j − 1/2 ) / j ) 。滑らかですが周期的ではありません(例 7.5 の関数)。
f B ( x ) = ∏ j ( 1 + 2 π 2 γ j B 2 ( x j ) ) f_B(x) = \prod_j(1 + 2\pi^2\gamma_jB_2(x_j)) f B ( x ) = ∏ j ( 1 + 2 π 2 γ j B 2 ( x j )) 、γ j = 1 / j 2 \gamma_j = 1/j^2 γ j = 1/ j 2 。周期的で、Fourier 係数は ∏ h j ≠ 0 γ j ∣ h j ∣ − 2 \prod_{h_j\ne0}\gamma_j|h_j|^{-2} ∏ h j = 0 γ j ∣ h j ∣ − 2 です(例 6.4 の関数に重みを付けたもの)。
Monte Carlo 法、Halton 列(基数 2 , 3 , 5 , 7 , 11 2, 3, 5, 7, 11 2 , 3 , 5 , 7 , 11 )、Sobol’ 列(scipy.stats.qmc)、格子則を N = 2 6 , 2 8 , … , 2 16 N = 2^6, 2^8, \ldots, 2^{16} N = 2 6 , 2 8 , … , 2 16 で比べます。格子則の生成ベクトルは Korobov 型 g = ( 1 , a , a 2 , a 3 , a 4 ) m o d N g = (1, a, a^2, a^3, a^4) \bmod N g = ( 1 , a , a 2 , a 3 , a 4 ) mod N とし、a a a は無作為に選んだ高々 200 個の奇数の候補のうち、f B f_B f B に対する誤差(定理 6.3 の 2 から、重みつきの P 2 P_2 P 2 に等しい)が最小のものにします。
from scipy.stats import qmc
a = 1.0 / np. arange ( 1 , d + 1 )
f_a = lambda x : np. prod ( 1.0 + a * (x - 0.5 ) , axis = 1 ) # 非周期。積分 1
b2 = lambda x : x * x - x + 1.0 / 6.0
gam = 1.0 / np. arange ( 1 , d + 1 ) ** 2
f_b = lambda x : np. prod ( 1.0 + gam * 2 * np.pi ** 2 * b2 ( x ) , axis = 1 ) # 周期的。積分 1
return (np. arange ( N ) [ :, None ] * g[ None , :] % N) / N
def korobov ( N , rng , tries= 200 ) :
# g = (1, a, a^2, ...) mod N のうち P_2 が最小のもの(a は奇数の候補から探す)
for a_ in np. unique ( rng. integers ( 1 , N // 2 , size = tries ) * 2 + 1 ):
g = np. array ( [ pow ( int ( a_ ) , j , N ) for j in range ( d ) ] )
p2 = f_b ( lattice ( N , g )). mean () - 1.0
if best is None or p2 < best[ 0 ]:
rng = np.random. default_rng ( 20261008 )
halton = qmc. Halton ( d = d , scramble = False ). random ( 2 ** 16 )
sobol = qmc. Sobol ( d = d , scramble = False ). random_base2 ( 16 )
for f, label in ((f_a, " f_A " ), (f_b, " f_B " )):
print ( " log2N MC err (MC se) Halton Sobol lattice gen. a " )
for k in range ( 6 , 17 , 2 ):
y = f ( rng. random ( (N, d) ))
e = [ abs ( y. mean () - 1 ), abs ( f ( halton [ :N ]) . mean () - 1 ), abs ( f ( sobol [ :N ]) . mean () - 1 ), abs ( f ( lattice ( N , g )) . mean () - 1 ) ]
print ( f " {k :3d } {e [ 0 ] :.2e } ( {y. std ( ddof = 1 ) / np. sqrt ( N ) :.2e } ) {e [ 1 ] :.2e } {e [ 2 ] :.2e } {e [ 3 ] :.2e } {g [ 1 ] :6d } " )
sl = [ np. polyfit ( ks , np. log2 ( np. array ( errs ) [ :, j ] ) , 1 ) [ 0 ] for j in range ( 4 ) ]
print ( " slope %.2f %.2f %.2f %.2f " % tuple ( sl ))
log2N MC err (MC se) Halton Sobol lattice gen. a
6 4.46e-02 (3.93e-02) 4.12e-02 1.79e-02 4.67e-03 23
8 6.70e-03 (2.23e-02) 1.24e-02 4.60e-03 3.68e-03 69
10 7.76e-03 (1.15e-02) 3.22e-03 1.10e-03 1.87e-03 469
12 5.85e-03 (5.58e-03) 1.01e-03 2.81e-04 7.42e-04 3739
14 1.83e-03 (2.77e-03) 2.88e-04 6.81e-05 9.76e-05 7185
16 1.20e-03 (1.39e-03) 7.51e-05 1.74e-05 2.08e-05 10759
slope -0.46 -0.91 -1.00 -0.80
log2N MC err (MC se) Halton Sobol lattice gen. a
6 4.68e-01 (2.42e-01) 8.31e-02 7.22e-02 7.42e-02 23
8 2.20e-01 (9.33e-02) 2.27e-02 1.30e-02 1.02e-02 69
10 1.17e-02 (5.12e-02) 2.81e-03 2.45e-03 1.27e-03 555
12 2.37e-02 (2.57e-02) 7.60e-06 5.34e-04 1.68e-04 3543
14 1.16e-02 (1.31e-02) 1.55e-05 1.39e-04 1.82e-05 8603
16 2.29e-03 (6.46e-03) 1.52e-05 3.73e-05 2.29e-06 7531
slope -0.72 -1.46 -1.09 -1.50
slope は log 2 ( 誤差 ) \log_2(\text{誤差}) log 2 ( 誤差 ) を log 2 N \log_2N log 2 N に最小二乗であてはめた傾きです。6 点からの値で、決定的な方法の誤差は N N N について滑らかに減るとは限らないので、目安として読んでください。
Monte Carlo 法 の誤差は標準誤差 (MC se) の 0.2 0.2 0.2 〜2.4 2.4 2.4 倍の範囲にあり、標準誤差は N N N が 4 倍になるごとに半分になっています(傾き − 1 / 2 -1/2 − 1/2 )。
Halton 列と Sobol’ 列 は f A f_A f A で傾きがほぼ − 1 -1 − 1 で、定理 4.4 と 定理 5.4 の O ( N − 1 ( log N ) d ) O(N^{-1}(\log N)^d) O ( N − 1 ( log N ) d ) と整合します。N = 2 16 N = 2^{16} N = 2 16 での誤差は Monte Carlo 法の標準誤差の約 1 / 20 1/20 1/20 (Halton 列)と 1 / 80 1/80 1/80 (Sobol’ 列)です。f B f_B f B での Halton 列の誤差は N = 2 12 N = 2^{12} N = 2 12 で偶然小さくなっていて、傾きの値はこの 1 点に引きずられています。
格子則 は、周期的な f B f_B f B では N = 2 16 N = 2^{16} N = 2 16 で誤差 2.3 × 10 − 6 2.3\times10^{-6} 2.3 × 1 0 − 6 と最も良く、傾きは − 1.5 -1.5 − 1.5 です。定理 6.3 の 3 の上界 N − 2 ( log N ) 10 N^{-2}(\log N)^{10} N − 2 ( log N ) 10 の、この範囲での見かけの傾きは − 2 + 10 / ln N -2 + 10/\ln N − 2 + 10/ ln N (N = 2 16 N = 2^{16} N = 2 16 で − 1.1 -1.1 − 1.1 )なので、− 2 -2 − 2 より緩いのは対数の因子の分です。周期的でない f A f_A f A では格子則に特別な利点はなく、Sobol’ 列と同程度かそれ以下です。
b2 = lambda x : x * x - x + 1.0 / 6.0
print ( " Fibonacci lattice (d = 2): P_2 = (1/N) sum prod (1 + 2 pi^2 B_2) - 1 " )
print ( " N P_2 N^2 P_2 / ln N " )
for m in range ( 10 , len ( F ) , 3 ):
N, g = F[m], np. array ( [ 1 , F [ m - 1 ] ] )
x = (np. arange ( N ) [ :, None ] * g[ None , :] % N) / N
p2 = np. prod ( 1.0 + 2 * np.pi ** 2 * b2 ( x ) , axis = 1 ). mean () - 1.0
print ( f " {N :7d } {p2 :.3e } {N * N * p2 / np. log ( N ) :8.2f } " )
# 無作為な平行移動: d = 5, N = 4096, 生成ベクトル (1, a, a^2, a^3, a^4) mod N, a = 3543
d, N, a_gen, M = 5 , 4096 , 3543 , 32
g = np. array ( [ pow ( a_gen , j , N ) for j in range ( d ) ] )
pts = (np. arange ( N ) [ :, None ] * g[ None , :] % N) / N
a = 1.0 / np. arange ( 1 , d + 1 )
gam = 1.0 / np. arange ( 1 , d + 1 ) ** 2
f_a = lambda x : np. prod ( 1.0 + a * (x - 0.5 ) , axis = 1 )
f_b = lambda x : np. prod ( 1.0 + gam * 2 * np.pi ** 2 * b2 ( x ) , axis = 1 )
rng = np.random. default_rng ( 20261008 )
print ( " random shifts (M = 32, N = 4096) " )
print ( " mean - 1 std.err |mean - 1|/se rms of single-shift error " )
for f, label in ((f_a, " f_A " ), (f_b, " f_B " )):
q = np. array ( [ f ( (pts + rng. random ( d ) ) % 1.0 ) . mean () for _ in range ( M ) ] )
se = q. std ( ddof = 1 ) / np. sqrt ( M )
print ( f " {label} {q. mean () - 1 :+.3e } {se :.3e } { abs ( q. mean () - 1 ) / se :6.2f } {np. sqrt ( np. mean ( (q - 1 ) ** 2 )) :.3e } " )
Fibonacci lattice (d = 2): P_2 = (1/N) sum prod (1 + 2 pi^2 B_2) - 1
random shifts (M = 32, N = 4096)
mean - 1 std.err |mean - 1|/se rms of single-shift error
f_A +3.797e-06 2.195e-05 0.17 1.223e-04
f_B +2.932e-07 4.140e-06 0.07 2.305e-05
Fibonacci 格子では N 2 P 2 / ln N N^2P_2/\ln N N 2 P 2 / ln N が 26 26 26 〜28 28 28 でほぼ一定で、P 2 = O ( N − 2 log N ) P_2 = O(N^{-2}\log N) P 2 = O ( N − 2 log N ) が見えます(例 6.4 )。N N N を 1364 1364 1364 倍にすると誤差は 8 × 10 5 8\times10^5 8 × 1 0 5 分の 1 になります。
無作為な平行移動では、32 個の平均の真値からのずれが、32 個のばらつきから求めた標準誤差の 0.17 0.17 0.17 倍と 0.07 0.07 0.07 倍でした(どちらも 1 倍以内です。2 例だけなので、標準誤差が正しい大きさであることの確認としては弱く、矛盾がないことを見たにとどまります)。真値を知らなくても誤差の大きさが分かるというのが、命題 7.2 の内容です。全体の関数評価は 32 × 4096 ≈ 1.3 × 10 5 32 \times 4096 \approx 1.3\times10^5 32 × 4096 ≈ 1.3 × 1 0 5 回で、同じ回数の Monte Carlo 法の標準誤差は f A f_A f A で約 9.8 × 10 − 4 9.8\times10^{-4} 9.8 × 1 0 − 4 (§8.2 の N = 2 16 N = 2^{16} N = 2 16 の値の 1 / 2 1/\sqrt2 1/ 2 )なので、f A f_A f A でも約 45 45 45 分の 1 です。f B f_B f B では、平行移動しない格子則の誤差 1.68 × 10 − 4 1.68\times10^{-4} 1.68 × 1 0 − 4 (§8.2 の N = 2 12 N = 2^{12} N = 2 12 )より、平行移動 1 個あたりの誤差の 2 乗平均の平方根 2.3 × 10 − 5 2.3\times10^{-5} 2.3 × 1 0 − 5 のほうが小さくなっています。f B f_B f B の Fourier 係数がすべて正なので、平行移動なし(U = 0 U = 0 U = 0 )が双対格子の上の係数の位相がそろう最悪の場合に当たるためです。
演習 9.1 易
[ 0 , 1 ) [0,1) [ 0 , 1 ) の N N N 点 { 0 , 1 / N , … , ( N − 1 ) / N } \{0, 1/N, \ldots, (N-1)/N\} { 0 , 1/ N , … , ( N − 1 ) / N } の D N ∗ D_N^* D N ∗ を求めよ。これから、基数 2 2 2 の van der Corput 列の最初の N = 2 m N = 2^m N = 2 m 項について N D N ∗ = 1 ND_N^* = 1 N D N ∗ = 1 であることを示せ。
解答 x ( i ) = ( i − 1 ) / N x_{(i)} = (i-1)/N x ( i ) = ( i − 1 ) / N なので ∣ x ( i ) − ( 2 i − 1 ) / ( 2 N ) ∣ = 1 / ( 2 N ) |x_{(i)} - (2i-1)/(2N)| = 1/(2N) ∣ x ( i ) − ( 2 i − 1 ) / ( 2 N ) ∣ = 1/ ( 2 N ) で、命題 2.3 から D N ∗ = 1 / ( 2 N ) + 1 / ( 2 N ) = 1 / N D_N^* = 1/(2N) + 1/(2N) = 1/N D N ∗ = 1/ ( 2 N ) + 1/ ( 2 N ) = 1/ N です。van der Corput 列の最初の 2 m 2^m 2 m 項は、補題 5.2 の証明の式で q = 0 q = 0 q = 0 とした φ 2 ( r ) = ρ ( r ) / 2 m \varphi_2(r) = \rho(r)/2^m φ 2 ( r ) = ρ ( r ) / 2 m (0 ≤ r < 2 m 0 \le r < 2^m 0 ≤ r < 2 m )で、ρ \rho ρ が全単射なので集合として { c / 2 m : 0 ≤ c < 2 m } \{c/2^m : 0 \le c < 2^m\} { c / 2 m : 0 ≤ c < 2 m } に等しく、N D N ∗ = 1 ND_N^* = 1 N D N ∗ = 1 です。§8.1 の表で N N N が 2 2 2 の冪でないときの値が 1 1 1 より大きいのは、最後のブロックが途中で切れているためです。
演習 9.2 標準
f ( x ) = x 2 f(x) = x^2 f ( x ) = x 2 と点集合 P = { 0 , 1 / N , … , ( N − 1 ) / N } P = \{0, 1/N, \ldots, (N-1)/N\} P = { 0 , 1/ N , … , ( N − 1 ) / N } について、定理 4.1 の恒等式の両辺を直接計算して一致を確かめ、不等式の上界と比べよ。
解答 左辺は N − 1 ∑ i = 0 N − 1 ( i / N ) 2 − 1 / 3 = ( N − 1 ) ( 2 N − 1 ) 6 N 2 − 1 3 = − 1 2 N + 1 6 N 2 N^{-1}\sum_{i=0}^{N-1}(i/N)^2 - 1/3 = \dfrac{(N-1)(2N-1)}{6N^2} - \dfrac13 = -\dfrac{1}{2N} + \dfrac{1}{6N^2} N − 1 ∑ i = 0 N − 1 ( i / N ) 2 − 1/3 = 6 N 2 ( N − 1 ) ( 2 N − 1 ) − 3 1 = − 2 N 1 + 6 N 2 1 です。右辺について、i / N < t ≤ ( i + 1 ) / N i/N < t \le (i+1)/N i / N < t ≤ ( i + 1 ) / N で A ( [ 0 , t ) ) = i + 1 A([0,t)) = i + 1 A ([ 0 , t )) = i + 1 なので δ P ( t ) = ( i + 1 ) / N − t \delta_P(t) = (i+1)/N - t δ P ( t ) = ( i + 1 ) / N − t で、
− ∫ 0 1 δ P ( t ) 2 t d t = − ∑ i = 0 N − 1 ∫ i / N ( i + 1 ) / N 2 t ( i + 1 N − t ) d t -\int_0^1\delta_P(t)\,2t\,dt = -\sum_{i=0}^{N-1}\int_{i/N}^{(i+1)/N}2t\Bigl(\frac{i+1}{N} - t\Bigr)dt − ∫ 0 1 δ P ( t ) 2 t d t = − i = 0 ∑ N − 1 ∫ i / N ( i + 1 ) / N 2 t ( N i + 1 − t ) d t です。t = i / N + s t = i/N + s t = i / N + s とおくと、被積分関数は 2 ( i / N + s ) ( 1 / N − s ) 2(i/N + s)(1/N - s) 2 ( i / N + s ) ( 1/ N − s ) で、∫ 0 1 / N ( 1 / N − s ) d s = 1 / ( 2 N 2 ) \int_0^{1/N}(1/N - s)\,ds = 1/(2N^2) ∫ 0 1/ N ( 1/ N − s ) d s = 1/ ( 2 N 2 ) 、∫ 0 1 / N s ( 1 / N − s ) d s = 1 / ( 6 N 3 ) \int_0^{1/N}s(1/N - s)\,ds = 1/(6N^3) ∫ 0 1/ N s ( 1/ N − s ) d s = 1/ ( 6 N 3 ) から、各区間の積分は i / N 3 + 1 / ( 3 N 3 ) i/N^3 + 1/(3N^3) i / N 3 + 1/ ( 3 N 3 ) です。i i i について足すと ( N − 1 ) / ( 2 N 2 ) + 1 / ( 3 N 2 ) = 1 / ( 2 N ) − 1 / ( 6 N 2 ) (N-1)/(2N^2) + 1/(3N^2) = 1/(2N) - 1/(6N^2) ( N − 1 ) / ( 2 N 2 ) + 1/ ( 3 N 2 ) = 1/ ( 2 N ) − 1/ ( 6 N 2 ) で、符号を付けると左辺に一致します。上界は D N ∗ ∫ 0 1 ∣ f ′ ∣ = ( 1 / N ) ⋅ 1 = 1 / N D_N^*\int_0^1|f'| = (1/N)\cdot1 = 1/N D N ∗ ∫ 0 1 ∣ f ′ ∣ = ( 1/ N ) ⋅ 1 = 1/ N で、実際の誤差の約 2 倍です。δ P ≥ 0 \delta_P \ge 0 δ P ≥ 0 で f ′ ≥ 0 f' \ge 0 f ′ ≥ 0 なので打ち消しがなく、上界に近い値になっています。
演習 9.3 標準
d = 2 d = 2 d = 2 、N = 5 N = 5 N = 5 、g = ( 1 , 2 ) g = (1, 2) g = ( 1 , 2 ) の格子則について、双対格子の 0 0 0 でない点のうち r ( h ) r(h) r ( h ) が最小のものを求めよ。f 1 ( x ) = cos ( 2 π ( x 1 + x 2 ) ) f_1(x) = \cos(2\pi(x_1 + x_2)) f 1 ( x ) = cos ( 2 π ( x 1 + x 2 )) と f 2 ( x ) = cos ( 2 π ( x 1 + 2 x 2 ) ) f_2(x) = \cos(2\pi(x_1 + 2x_2)) f 2 ( x ) = cos ( 2 π ( x 1 + 2 x 2 )) のそれぞれについて Q 5 ( f ) Q_5(f) Q 5 ( f ) を求めよ。
解答 双対格子は h 1 + 2 h 2 ≡ 0 ( m o d 5 ) h_1 + 2h_2 \equiv 0 \pmod 5 h 1 + 2 h 2 ≡ 0 ( mod 5 ) です。r ( h ) = 1 r(h) = 1 r ( h ) = 1 の点 ( ± 1 , 0 ) (\pm1, 0) ( ± 1 , 0 ) 、( 0 , ± 1 ) (0, \pm1) ( 0 , ± 1 ) 、( ± 1 , ± 1 ) (\pm1, \pm1) ( ± 1 , ± 1 ) は h ⋅ g = ± 1 , ± 2 , ± 3 , ± 1 h\cdot g = \pm1, \pm2, \pm3, \pm1 h ⋅ g = ± 1 , ± 2 , ± 3 , ± 1 で条件を満たしません。r ( h ) = 2 r(h) = 2 r ( h ) = 2 の点のうち ( 1 , 2 ) (1, 2) ( 1 , 2 ) は 1 + 4 = 5 1 + 4 = 5 1 + 4 = 5 、( 2 , − 1 ) (2, -1) ( 2 , − 1 ) は 2 − 2 = 0 2 - 2 = 0 2 − 2 = 0 で条件を満たします(符号を反転した点も)。よって最小値は 2 2 2 です。
f 1 = ( e ( h ⋅ x ) + e ( − h ⋅ x ) ) / 2 f_1 = (e(h\cdot x) + e(-h\cdot x))/2 f 1 = ( e ( h ⋅ x ) + e ( − h ⋅ x )) /2 、h = ( 1 , 1 ) h = (1, 1) h = ( 1 , 1 ) で、± h ∉ L ⊥ \pm h \notin L^\perp ± h ∈ / L ⊥ なので 定理 6.3 の 1 から Q 5 ( f 1 ) = ∫ f 1 = 0 Q_5(f_1) = \int f_1 = 0 Q 5 ( f 1 ) = ∫ f 1 = 0 (厳密)です。f 2 f_2 f 2 は h = ( 1 , 2 ) ∈ L ⊥ h = (1, 2) \in L^\perp h = ( 1 , 2 ) ∈ L ⊥ で、Q 5 ( f 2 ) = f ^ 2 ( h ) + f ^ 2 ( − h ) = 1 / 2 + 1 / 2 = 1 Q_5(f_2) = \hat f_2(h) + \hat f_2(-h) = 1/2 + 1/2 = 1 Q 5 ( f 2 ) = f ^ 2 ( h ) + f ^ 2 ( − h ) = 1/2 + 1/2 = 1 です。実際、点 x n = ( n / 5 , { 2 n / 5 } ) x_n = (n/5, \{2n/5\}) x n = ( n /5 , { 2 n /5 }) では x 1 + 2 x 2 ≡ 5 n / 5 = n ≡ 0 ( m o d 1 ) x_1 + 2x_2 \equiv 5n/5 = n \equiv 0 \pmod 1 x 1 + 2 x 2 ≡ 5 n /5 = n ≡ 0 ( mod 1 ) なので、f 2 f_2 f 2 はすべての点で 1 1 1 です。積分は 0 0 0 なので誤差は 1 1 1 で、格子則は双対格子の上の振動数を定数と区別できません。
演習 9.4 標準
f ( x 1 , x 2 ) = x 1 x 2 f(x_1, x_2) = x_1x_2 f ( x 1 , x 2 ) = x 1 x 2 の ANOVA 分解を定義に従って求め、σ 2 = σ { 1 } 2 + σ { 2 } 2 + σ { 1 , 2 } 2 \sigma^2 = \sigma_{\{1\}}^2 + \sigma_{\{2\}}^2 + \sigma_{\{1,2\}}^2 σ 2 = σ { 1 } 2 + σ { 2 } 2 + σ { 1 , 2 } 2 を確かめよ。
解答 f ∅ = I = 1 / 4 f_\emptyset = I = 1/4 f ∅ = I = 1/4 。Π { 1 } f = x 1 / 2 \Pi_{\{1\}}f = x_1/2 Π { 1 } f = x 1 /2 から f { 1 } = x 1 / 2 − 1 / 4 = ( x 1 − 1 / 2 ) / 2 f_{\{1\}} = x_1/2 - 1/4 = (x_1 - 1/2)/2 f { 1 } = x 1 /2 − 1/4 = ( x 1 − 1/2 ) /2 、同様に f { 2 } = ( x 2 − 1 / 2 ) / 2 f_{\{2\}} = (x_2 - 1/2)/2 f { 2 } = ( x 2 − 1/2 ) /2 。
f { 1 , 2 } = x 1 x 2 − 1 4 − x 1 − 1 / 2 2 − x 2 − 1 / 2 2 = ( x 1 − 1 2 ) ( x 2 − 1 2 ) f_{\{1,2\}} = x_1x_2 - \frac14 - \frac{x_1 - 1/2}{2} - \frac{x_2 - 1/2}{2} = \Bigl(x_1 - \frac12\Bigr)\Bigl(x_2 - \frac12\Bigr) f { 1 , 2 } = x 1 x 2 − 4 1 − 2 x 1 − 1/2 − 2 x 2 − 1/2 = ( x 1 − 2 1 ) ( x 2 − 2 1 ) です。∫ 0 1 ( x − 1 / 2 ) 2 d x = 1 / 12 \int_0^1(x - 1/2)^2dx = 1/12 ∫ 0 1 ( x − 1/2 ) 2 d x = 1/12 から σ { 1 } 2 = σ { 2 } 2 = 1 / 48 \sigma_{\{1\}}^2 = \sigma_{\{2\}}^2 = 1/48 σ { 1 } 2 = σ { 2 } 2 = 1/48 、σ { 1 , 2 } 2 = 1 / 144 \sigma_{\{1,2\}}^2 = 1/144 σ { 1 , 2 } 2 = 1/144 です。一方 σ 2 = ∫ x 1 2 x 2 2 − 1 / 16 = 1 / 9 − 1 / 16 = 7 / 144 \sigma^2 = \int x_1^2x_2^2 - 1/16 = 1/9 - 1/16 = 7/144 σ 2 = ∫ x 1 2 x 2 2 − 1/16 = 1/9 − 1/16 = 7/144 で、3 / 144 + 3 / 144 + 1 / 144 = 7 / 144 3/144 + 3/144 + 1/144 = 7/144 3/144 + 3/144 + 1/144 = 7/144 と一致します。1 変数の成分が分散の 6 / 7 ≈ 86 % 6/7 \approx 86\% 6/7 ≈ 86% を占めます。x 1 x 2 = ( 1 / 2 + ( x 1 − 1 / 2 ) ) ( 1 / 2 + ( x 2 − 1 / 2 ) ) x_1x_2 = (1/2 + (x_1 - 1/2))(1/2 + (x_2 - 1/2)) x 1 x 2 = ( 1/2 + ( x 1 − 1/2 )) ( 1/2 + ( x 2 − 1/2 )) と書いて展開しても同じ分解が得られます。例 7.5 はこの形の一般化です。
L. Kuipers, H. Niederreiter, Uniform Distribution of Sequences , Wiley, 1974 — 第 1 章(Weyl の判定法)、第 2 章(食い違い量、Koksma–Hlawka の不等式、van der Corput 列・Halton 列)。
H. Niederreiter, Random Number Generation and Quasi-Monte Carlo Methods , SIAM, 1992 — 第 2〜5 章(食い違い量、低食い違い量列、ネット、格子則)。
I. H. Sloan, S. Joe, Lattice Methods for Multiple Integration , Oxford University Press, 1994 — 格子則の誤差、P α P_\alpha P α 、良い格子の存在。
J. Dick, F. Y. Kuo, I. H. Sloan, “High-dimensional integration: the quasi-Monte Carlo way”, Acta Numerica 22 (2013), 133–288 — 無作為化、重みつき空間、成分ごとの構成法、有効次元。
K. F. Roth, “On irregularities of distribution”, Mathematika 1 (1954), 73–79 — 食い違い量の下界。
A. B. Owen, “Scrambled net variance for integrals of smooth functions”, The Annals of Statistics 25 (1997), 1541–1562 — スクランブルしたネットの分散。
執筆: Claude Code(Opus 5.5)、Claude Code(Sonnet 5.5)・監査 2 回(Claude Code)・最終 2026-10-12