{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 13 Euler-Maclaurinの和公式\n", "\n", "黒木玄\n", "\n", "2018-07-04~2019-04-03, 2023-06-22\n", "\n", "* Copyright 2018,2019,2023 Gen Kuroki\n", "* License: MIT https://opensource.org/licenses/MIT\n", "* Repository: https://github.com/genkuroki/Calculus\n", "\n", "このファイルは次の場所できれいに閲覧できる:\n", "\n", "* http://nbviewer.jupyter.org/github/genkuroki/Calculus/blob/master/13%20Euler-Maclaurin%20summation%20formula.ipynb\n", "\n", "* https://genkuroki.github.io/documents/Calculus/13%20Euler-Maclaurin%20summation%20formula.pdf\n", "\n", "このファイルは Julia Box で利用できる.\n", "\n", "自分のパソコンにJulia言語をインストールしたい場合には\n", "\n", "* [WindowsへのJulia言語のインストール](http://nbviewer.jupyter.org/gist/genkuroki/81de23edcae631a995e19a2ecf946a4f)\n", "\n", "* [Julia v1.1.0 の Windows 8.1 へのインストール](https://nbviewer.jupyter.org/github/genkuroki/msfd28/blob/master/install.ipynb)\n", "\n", "を参照せよ. 前者は古く, 後者の方が新しい.\n", "\n", "論理的に完璧な説明をするつもりはない. 細部のいい加減な部分は自分で訂正・修正せよ.\n", "\n", "$\n", "\\newcommand\\eps{\\varepsilon}\n", "\\newcommand\\ds{\\displaystyle}\n", "\\newcommand\\Z{{\\mathbb Z}}\n", "\\newcommand\\R{{\\mathbb R}}\n", "\\newcommand\\C{{\\mathbb C}}\n", "\\newcommand\\QED{\\text{□}}\n", "\\newcommand\\root{\\sqrt}\n", "\\newcommand\\bra{\\langle}\n", "\\newcommand\\ket{\\rangle}\n", "\\newcommand\\d{\\partial}\n", "\\newcommand\\sech{\\operatorname{sech}}\n", "\\newcommand\\cosec{\\operatorname{cosec}}\n", "\\newcommand\\sign{\\operatorname{sign}}\n", "\\newcommand\\real{\\operatorname{Re}}\n", "\\newcommand\\imag{\\operatorname{Im}}\n", "$" ] }, { "cell_type": "markdown", "metadata": { "toc": true }, "source": [ "

目次

\n", "
" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "using Base.MathConstants\n", "using Base64\n", "using Printf\n", "using Statistics\n", "const e = ℯ\n", "endof(a) = lastindex(a)\n", "linspace(start, stop, length) = range(start, stop, length=length)\n", "\n", "using Plots\n", "#gr(); ENV[\"PLOTS_TEST\"] = \"true\"\n", "#clibrary(:colorcet)\n", "#clibrary(:misc)\n", "default(fmt=:png)\n", "\n", "function pngplot(P...; kwargs...)\n", " sleep(0.1)\n", " pngfile = tempname() * \".png\"\n", " savefig(plot(P...; kwargs...), pngfile)\n", " showimg(\"image/png\", pngfile)\n", "end\n", "pngplot(; kwargs...) = pngplot(plot!(; kwargs...))\n", "\n", "showimg(mime, fn) = open(fn) do f\n", " base64 = base64encode(f)\n", " display(\"text/html\", \"\"\"\"\"\")\n", "end\n", "\n", "using SymPy\n", "#sympy.init_printing(order=\"lex\") # default\n", "#sympy.init_printing(order=\"rev-lex\")\n", "\n", "using SpecialFunctions\n", "using QuadGK" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# Override the Base.show definition of SymPy.jl:\n", "# https://github.com/JuliaPy/SymPy.jl/blob/29c5bfd1d10ac53014fa7fef468bc8deccadc2fc/src/types.jl#L87-L105\n", "\n", "@eval SymPy function Base.show(io::IO, ::MIME\"text/latex\", x::SymbolicObject)\n", " print(io, as_markdown(\"\\\\displaystyle \" * sympy.latex(x, mode=\"plain\", fold_short_frac=false)))\n", "end\n", "@eval SymPy function Base.show(io::IO, ::MIME\"text/latex\", x::AbstractArray{Sym})\n", " function toeqnarray(x::Vector{Sym})\n", " a = join([\"\\\\displaystyle \" * sympy.latex(x[i]) for i in 1:length(x)], \"\\\\\\\\\")\n", " \"\"\"\\\\left[ \\\\begin{array}{r}$a\\\\end{array} \\\\right]\"\"\"\n", " end\n", " function toeqnarray(x::AbstractArray{Sym,2})\n", " sz = size(x)\n", " a = join([join(\"\\\\displaystyle \" .* map(sympy.latex, x[i,:]), \"&\") for i in 1:sz[1]], \"\\\\\\\\\")\n", " \"\\\\left[ \\\\begin{array}{\" * repeat(\"r\",sz[2]) * \"}\" * a * \"\\\\end{array}\\\\right]\"\n", " end\n", " print(io, as_markdown(toeqnarray(x)))\n", "end" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Bernoulli多項式" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Bernoulli多項式の定義\n", "\n", "**定義(Bernoulli多項式):** Bernoulli多項式** $B_n(x)$ ($n=0,1,2,\\ldots$)を\n", "\n", "$$\n", "\\frac{ze^{zx}}{e^z-1} = \\sum_{n=0}^\\infty \\frac{B_n(x)}{n!}z^n\n", "$$\n", "\n", "によって定義する. $\\QED$\n", "\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Bernoulli多項式の基本性質\n", "\n", "**一般化Bernoulli多項式の基本性質:** Bernoulli多項式 $B_n(x)$ は以下の性質を満たしている:\n", "\n", "(1) $B_0(x)=1$.\n", "\n", "(2) $\\ds\\int_0^1 B_n(x)\\,dx = \\delta_{n,0}$.\n", "\n", "(3) $\\ds B_n(x+h) = \\sum_{k=0}^n\\binom{n}{k}B_{n-k}(x)h^k = \n", "\\sum_{k=0}^n \\binom{n}{k} B_k(x) h^{n-k}$.\n", "\n", "(4) $B_n'(x)=nB_{n-1}(x)$.\n", "\n", "(5) $\\ds B_n(x+1)=B_n(x)+nx^{n-1}$.\n", "\n", "(6) $B_n(1-x)=(-1)^n B_n(x)$.\n", "\n", "(7) $B_n(1)=B_n(0)+\\delta_{n,1}$ となる.\n", "\n", "(8) $B_n(0)=1$, $\\ds B_n(0)=-\\frac{1}{2}$ とな, $n$ が3以上の奇数ならば $B_n(0)=0$ となる.\n", "\n", "**証明:** (1) $e^{zx}=1+O(z)$, $\\ds\\frac{e^z-1}{z}=1+O(z)$ より, $\\ds\\frac{ze^{zx}}{e^z-1}=1+O(z)$ なので $B_0(x) = 1$.\n", "\n", "(2)を示そう.\n", "\n", "$$\n", "\\begin{aligned}\n", "&\n", "\\int_0^1 \\frac{ze^{zx}}{e^z-1}\\,dx = \\frac{z}{e^z-1}\\int_0^1 e^{zx}\\,dx = \n", "\\frac{z}{e^z-1}\\frac{e^z-1}{z} = 1, \n", "\\\\ &\n", "\\int_0^1\\frac{ze^{zx}}{e^z-1}\\,dx = \\sum_{n=0}^\\infty\\frac{z^n}{n!}\\int_0^1 B_n(x)\\,dx\n", "\\end{aligned}\n", "$$\n", "\n", "なので, これらを比較して $\\ds\\int_0^1 B_n(x)\\,dx = \\delta_{n,0}$.\n", "\n", "(3) 二項定理より,\n", "\n", "$$\n", "\\int_0^1 (x+y)^n\\,dy = \n", "\\sum_{k=0}^n \\binom{n}{k} x^{n-k} \\int_0^1 y^k\\,dy.\n", "$$\n", "\n", "ゆえに, $x$ の函数を $x$ の函数に移す線形写像(前方移動平均)\n", "\n", "$$\n", "f(x)\\mapsto \\int_0^1 f(x+y)\\,dy\n", "$$\n", "\n", "は多項式を多項式に移し, 最高次の係数が1の多項式を最高次の係数が1の同次の多項式に移す. これより, 線形写像 $\\ds f(x)\\mapsto \\int_0^1 f(x+y)\\,dy$ は多項式どうしの一対一対応を与える線形写像になっていることがわかる. そして,\n", "\n", "$$\n", "\\begin{aligned}\n", "&\n", "\\int_0^1\\frac{ze^{z(x+y)}}{e^z-1}\\,dx = \n", "\\sum_{n=0}^\\infty\\frac{\\int_0^1 B_n(x+y)\\,dy}{n!}z^n, \n", "\\\\ &\n", "\\int_0^1\\frac{ze^{z(x+y)}}{e^z-1}\\,dx = \n", "\\frac{ze^{zx}}{e^z-1}\\int_0^1 e^{zy}\\,dy =\n", "\\frac{ze^{zx}}{e^z-1}\\frac{e^z-1}{z} =\n", "e^{zx} =\n", "\\sum_{n=0}^\\infty \\frac{x^n}{n!}z^n\n", "\\end{aligned}\n", "$$\n", "\n", "なので, これらを比較して,\n", "\n", "$$\n", "\\int_0^1 B_n(x+y)\\,dy = x^n\n", "$$\n", "\n", "が成立することがわかる. ゆえに, \n", "\n", "$$\n", "\\int_0^1 B_n(x+h+y)\\,dy = (x+h)^n = \\sum_{k=0}^n \\binom{n}{k}x^{n-k}h^k =\n", "\\int_0^1 \\sum_{k=0}^n \\binom{n}{k}B_{n-k}(x+y)h^k \\,dy\n", "$$\n", "\n", "より\n", "\n", "$$\n", "B_n(x+h) = \\sum_{k=0}^n \\binom{n}{k}B_{n-k}(x)h^k.\n", "$$\n", "\n", "(4) すぐ上の等式の右辺の $h$ の係数を見ることによって,\n", "\n", "$$\n", "B_n'(x) = n B_{n-1}(x).\n", "$$\n", "\n", "(5) Bernoulli多項式の母函数の $x$ に $x+1$ を代入すると,\n", "\n", "$$\n", "\\frac{ze^{z(x+1)}}{e^z-1} = \\frac{ze^z e^{zx}}{e^z-1} =\n", "\\frac{z(1+(e^z-1))e^{zx}}{e^z-1} = \\frac{ze^{zx}}{e^z-1} + ze^{zx}\n", "$$\n", "\n", "なので両辺を $z$ について展開して比較すれば(5)が得られる.\n", "\n", "(6) Bernoulli多項式の母函数の $x$ に $1-x$ を代入すると,\n", "\n", "$$\n", "\\frac{ze^{z(1-x)}}{e^z-1} = \\frac{ze^z e^{-zx}}{e^z-1} =\n", "\\frac{ze^{-zx}}{1-e^{-z}} = \\frac{-ze^{-zx}}{e^{-z}-1}\n", "$$\n", "\n", "とBernoulli多項式の母函数の $z$ に $-z$ を代入したものになるので, 両辺を $z$ について展開して比較すれば(5)が得られる.\n", "\n", "(7) 上の(2)と(4)より, $n$ が2以上のとき,\n", "\n", "$$\n", "B_n(1)-B_n(0) = \\int_0^1 B_n'(x)\\,dx = n\\int_0^1 B_{n-1}(x)\\,dx = n\\delta_{n-1,0} = \\delta_{n,1}\n", "$$\n", "\n", "ゆえに $n$ が2以上のとき $B_n(1)=B_n(0)+\\delta_{n,1}$.\n", "\n", "(8) 次の函数が $z$ の偶函数で $z\\to 0$ で $1$ になることから, (6)が得られる:\n", "\n", "$$\n", "\\frac{z}{e^z-1} + \\frac{z}{2} = \\frac{z}{2}\\frac{e^{z/2}+e^{-z/2}}{e^{z/2}-e^{-z/2}}.\n", "\\qquad \\QED\n", "$$\n", "\n", "**注意:** $B_n=B_n(0)$ は**Bernoulli数**と呼ばれている. (3)で $(x,h)$ を $(0,x)$ で置き換えると, Bernoulli多項式がBernoulli数で表わされることがわかる:\n", "\n", "$$\n", "B_n(x) = \\sum_{k=0}^n \\binom{n}{k}B_k x^{n-k}.\n", "$$\n", "\n", "上の定理の条件(1),(2),(4)によってBernoulli多項式 $B_n(x)$ が $n$ について帰納的に一意的に決まる. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**例:** \n", "$$\n", "B_0 = 1, \\quad B_1 = -\\frac{1}{2}, \\quad\n", "B_2 = \\frac{1}{6}, \\quad B_3=0, \\quad B_4 = -\\frac{1}{30}\n", "$$\n", "\n", "なので\n", "\n", "$$\n", "\\begin{aligned}\n", "&\n", "B_0(x)=1, \\quad \n", "B_1(x)=x-\\frac{1}{2}, \\quad\n", "B_2(x)=x^2-x+\\frac{1}{6}, \n", "\\\\ &\n", "B_3(x)=x^3-\\frac{3}{2}x^2+\\frac{1}{2}x, \\quad\n", "B_4(x)=x^4-2x^3+x^2-\\frac{1}{30}.\n", "\\qquad\\QED\n", "\\end{aligned}\n", "$$" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\left[ \\begin{array}{r}\\displaystyle 1\\\\\\displaystyle x - \\frac{1}{2}\\\\\\displaystyle x^{2} - x + \\frac{1}{6}\\\\\\displaystyle x^{3} - \\frac{3 x^{2}}{2} + \\frac{x}{2}\\\\\\displaystyle x^{4} - 2 x^{3} + x^{2} - \\frac{1}{30}\\\\\\displaystyle x^{5} - \\frac{5 x^{4}}{2} + \\frac{5 x^{3}}{3} - \\frac{x}{6}\\\\\\displaystyle x^{6} - 3 x^{5} + \\frac{5 x^{4}}{2} - \\frac{x^{2}}{2} + \\frac{1}{42}\\\\\\displaystyle x^{7} - \\frac{7 x^{6}}{2} + \\frac{7 x^{5}}{2} - \\frac{7 x^{3}}{6} + \\frac{x}{6}\\\\\\displaystyle x^{8} - 4 x^{7} + \\frac{14 x^{6}}{3} - \\frac{7 x^{4}}{3} + \\frac{2 x^{2}}{3} - \\frac{1}{30}\\\\\\displaystyle x^{9} - \\frac{9 x^{8}}{2} + 6 x^{7} - \\frac{21 x^{5}}{5} + 2 x^{3} - \\frac{3 x}{10}\\\\\\displaystyle x^{10} - 5 x^{9} + \\frac{15 x^{8}}{2} - 7 x^{6} + 5 x^{4} - \\frac{3 x^{2}}{2} + \\frac{5}{66}\\end{array} \\right]$\n" ], "text/plain": [ "11-element Vector{Sym}:\n", " 1\n", " x - 1/2\n", " x^2 - x + 1/6\n", " x^3 - 3*x^2/2 + x/2\n", " x^4 - 2*x^3 + x^2 - 1/30\n", " x^5 - 5*x^4/2 + 5*x^3/3 - x/6\n", " x^6 - 3*x^5 + 5*x^4/2 - x^2/2 + 1/42\n", " x^7 - 7*x^6/2 + 7*x^5/2 - 7*x^3/6 + x/6\n", " x^8 - 4*x^7 + 14*x^6/3 - 7*x^4/3 + 2*x^2/3 - 1/30\n", " x^9 - 9*x^8/2 + 6*x^7 - 21*x^5/5 + 2*x^3 - 3*x/10\n", " x^10 - 5*x^9 + 15*x^8/2 - 7*x^6 + 5*x^4 - 3*x^2/2 + 5/66" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "BernoulliPolynomial(n,x) = sympy.bernoulli(n,x)\n", "x = symbols(\"x\", real=true)\n", "[BernoulliPolynomial(n,x) for n in 0:10]" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\left[ \\begin{array}{rrrrrrrrrrr}\\displaystyle 1&\\displaystyle 0&\\displaystyle 0&\\displaystyle 0&\\displaystyle 0&\\displaystyle 0&\\displaystyle 0&\\displaystyle 0&\\displaystyle 0&\\displaystyle 0&\\displaystyle 0\\end{array}\\right]$\n" ], "text/plain": [ "1×11 adjoint(::Vector{Sym}) with eltype Sym:\n", " 1 0 0 0 0 0 0 0 0 0 0" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# (2) ∫_0^1 B_n(x) dx = δ_{n0}\n", "\n", "BernoulliPolynomial(n,x) = sympy.bernoulli(n,x)\n", "x = symbols(\"x\", real=true)\n", "[integrate(BernoulliPolynomial(n,x), (x,0,1)) for n = 0:10]'" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1×11 adjoint(::Vector{Bool}) with eltype Bool:\n", " 1 1 1 1 1 1 1 1 1 1 1" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# (3) B_n(x+h) = Σ_{k=0}^n binom(n,k) B_{n-k}(x) h^k\n", "\n", "BernoulliNumber(n) = sympy.bernoulli(n)\n", "BernoulliPolynomial(n,x) = sympy.bernoulli(n,x)\n", "BinomCoeff(n,k) = sympy.binomial_coefficients_list(n)[k+1]\n", "x, h = symbols(\"x h\", real=true)\n", "[BernoulliPolynomial(n,x) == sum(k->BinomCoeff(n,k)*BernoulliNumber(k)*x^(n-k), 0:n) for n in 0:10]'" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1×10 adjoint(::Vector{Bool}) with eltype Bool:\n", " 1 1 1 1 1 1 1 1 1 1" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# (4) B_n'(x) = n B_{n-1}(x)\n", "\n", "BernoulliPolynomial(n,x) = sympy.bernoulli(n,x)\n", "x = symbols(\"x\", real=true)\n", "[diff(BernoulliPolynomial(n,x), x) == n*BernoulliPolynomial(n-1,x) for n = 1:10]'" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\left[ \\begin{array}{r}\\displaystyle 0\\\\\\displaystyle 1\\\\\\displaystyle 2 x\\\\\\displaystyle 3 x^{2}\\\\\\displaystyle 4 x^{3}\\\\\\displaystyle 5 x^{4}\\\\\\displaystyle 6 x^{5}\\\\\\displaystyle 7 x^{6}\\\\\\displaystyle 8 x^{7}\\\\\\displaystyle 9 x^{8}\\\\\\displaystyle 10 x^{9}\\end{array} \\right]$\n" ], "text/plain": [ "11-element Vector{Sym}:\n", " 0\n", " 1\n", " 2*x\n", " 3*x^2\n", " 4*x^3\n", " 5*x^4\n", " 6*x^5\n", " 7*x^6\n", " 8*x^7\n", " 9*x^8\n", " 10*x^9" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# (5) B_n(x+1) = B_n(x) + n x^{n-1}\n", "\n", "BernoulliPolynomial(n,x) = sympy.bernoulli(n,x)\n", "x = symbols(\"x\", real=true)\n", "[simplify(BernoulliPolynomial(n,x+1) - BernoulliPolynomial(n,x)) for n in 0:10]" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1×11 adjoint(::Vector{Bool}) with eltype Bool:\n", " 1 1 1 1 1 1 1 1 1 1 1" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# (6) B_n(1-x) = (-1)^n B_n(x)\n", "\n", "BernoulliPolynomial(n,x) = sympy.bernoulli(n,x)\n", "x = symbols(\"x\", real=true)\n", "[expand(BernoulliPolynomial(n,1-x)) == (-1)^n*BernoulliPolynomial(n,x) for n in 0:10]'" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\left[ \\begin{array}{rrrrrrrrrrr}\\displaystyle 0&\\displaystyle 1&\\displaystyle 0&\\displaystyle 0&\\displaystyle 0&\\displaystyle 0&\\displaystyle 0&\\displaystyle 0&\\displaystyle 0&\\displaystyle 0&\\displaystyle 0\\end{array}\\right]$\n" ], "text/plain": [ "1×11 adjoint(::Vector{Sym}) with eltype Sym:\n", " 0 1 0 0 0 0 0 0 0 0 0" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# (7) B_n(1) = B_n(0) + δ_{n1}\n", "\n", "BernoulliPolynomial(n,x) = sympy.bernoulli(n,x)\n", "x = symbols(\"x\", real=true)\n", "[expand(BernoulliPolynomial(n,1)) - BernoulliPolynomial(n,0) for n in 0:10]'" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "11-element Vector{Tuple{Int64, Sym}}:\n", " (0, 1)\n", " (1, -1/2)\n", " (2, 1/6)\n", " (3, 0)\n", " (4, -1/30)\n", " (5, 0)\n", " (6, 1/42)\n", " (7, 0)\n", " (8, -1/30)\n", " (9, 0)\n", " (10, 5/66)" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# (8) B_n = B_n(0) は n が3以上の奇数ならば0になる.\n", "\n", "BernoulliNumber(n) = sympy.bernoulli(n)\n", "[(n, BernoulliNumber(n)) for n in 0:10]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### べき乗和\n", "\n", "$m$ は正の整数であるする. Bernoulli多項式について, \n", "\n", "$$\n", "B_{m+1}(x+1)-B_{m+1}(x) = (m+1)x^m, \n", "\\quad\\text{i.e.}\\quad\n", "x^m = \\frac{B_{m+1}(x+1)-B_{m+1}(x)}{m+1}\n", "$$\n", "\n", "が成立しているので, これを $x=0,1,\\ldots,n$ について足し上げると,\n", "\n", "$$\n", "\\sum_{j=1}^n j^m = \\frac{B_{m+1}(n+1)-B_{m+1}}{m+1}.\n", "\\qquad \\QED\n", "$$" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "10-element Vector{Tuple{Int64, Int64, Sym}}:\n", " (1, 55, 55)\n", " (2, 385, 385)\n", " (3, 3025, 3025)\n", " (4, 25333, 25333)\n", " (5, 220825, 220825)\n", " (6, 1978405, 1978405)\n", " (7, 18080425, 18080425)\n", " (8, 167731333, 167731333)\n", " (9, 1574304985, 1574304985)\n", " (10, 14914341925, 14914341925)" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "PowerSum(m, n) = sum(j->j^m, 1:n)\n", "BernoulliNumber(n) = sympy.bernoulli(n)\n", "BernoulliPolynomial(n,x) = sympy.bernoulli(n,x)\n", "PowerSumFormula(m, n) = (BernoulliPolynomial(m+1,n+1)-BernoulliNumber(m+1))/(m+1)\n", "[(m, PowerSum(m,10), PowerSumFormula(m, 10)) for m in 1:10]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Bernoulli数の計算法\n", "\n", "Bernoulli数 $B_n$ は\n", "\n", "$$\\displaystyle\n", "\\frac{z}{e^z-1}=\\sum_{n=1}^\\infty B_n\\frac{z^n}{n!}\n", "$$\n", "\n", "で定義される. しかし, この展開を直接計算することによって Bernoulli 数を求めるのは効率が悪い.\n", "\n", "まず, 左辺の $z\\to 0$ の極限を取ることによって $B_0=1$ であることはすぐにわかる.\n", "\n", "次に, $n$ が $3$ 以上の奇数のとき $B_n=0$ となることを(再び)示そう. \n", "\n", "$$\\displaystyle\n", "\\frac{z}{e^z-1} + \\frac z2\n", "=\\frac z2\\frac{e^z+1}{e^z-1} \n", "=\\frac z2\\frac{e^{z/2}+e^{-z/2}}{e^{z/2}-e^{-z/2}}\n", "$$\n", "\n", "より, 左辺は偶函数になるので, その展開の奇数次の項は消える. このことから, $B_1=-1/2$ でかつ, $0=B_3=B_5=B_7=\\cdots$ であることもわかる.\n", "\n", "$$\\displaystyle\n", "\\frac{ze^z}{e^z-1}\n", "=\\sum_{j,k=0}^\\infty \\frac{z^j}{j!}\\frac{B_k z^k}{k!}\n", "=\\sum_{n=0}^\\infty\\left(\\sum_{k=0}^n \\binom{n}{k} B_k\\right)\\frac{z^n}{n!}\n", "$$\n", "\n", "でかつ\n", "\n", "$$\\displaystyle\n", "\\frac{ze^z}{e^z-1}\n", "=\\frac{z}{e^z-1}+z\n", "=\\sum_{n=0}^\\infty(B_n+\\delta_{n1})\\frac{z^n}{n!}\n", "$$\n", "\n", "なので, これらを比較すると\n", "\n", "$$\\displaystyle\n", "\\sum_{k=0}^{n-1} \\binom{n}{k} B_k = \\delta_{n1}.\n", "$$\n", "\n", "ゆえに, $n$ を $n+1$ で置き換え, $n\\geqq 1$ とし, $B_n$ を他で表わす式に書き直すと\n", "\n", "$$\\displaystyle\n", "B_n = -\\frac{1}{n+1}\\sum_{k=0}^{n-1}\\binom{n+1}{k}B_k\n", "\\qquad (n\\geqq 1).\n", "$$\n", "\n", "これを使えば帰納的に $B_n$ を求めることができる. $B_0=1$, $B_1=-1/2$, $0=B_3=B_5=B_7=\\cdots$ であることを使うと, \n", "\n", "$$\\displaystyle\n", "B_{2m} = -\\frac{1}{2m+1}\\left(\n", "1 -\\frac{2m+1}{2}\n", "+\\sum_{k=1}^{m-1}\\binom{2m+1}{2k}B_{2k}\n", "\\right).\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**問題:** 上の方ではSymPyにおけるBernoulli数の函数を利用した. Bernoulli数を計算するためのプログラムを自分で書け. $\\QED$\n", "\n", "**解答例:** 次のセルの通り. $\\QED$" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "binom(Rational(big\"100\") / 3, 30) = 11240781188817808072725280//984770902183611232881\n", " 1.173728 seconds (12.36 M allocations: 261.706 MiB, 19.32% gc time, 19.96% compilation time)\n", "B_eq_B = [B(n) == BernoulliNumber(n) for n = 0:maxn] = Bool[1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1]\n", "\n", "all(B_eq_B) = true\n", "\n", "B(0) = 1//1\n", "B(1) = -1//2\n", "B(2) = 1//6\n", "B(4) = -1//30\n", "B(6) = 1//42\n", "B(8) = -1//30\n", "B(10) = 5//66\n", "B(12) = -691//2730\n", "B(14) = 7//6\n", "B(16) = -3617//510\n", "B(18) = 43867//798\n", "B(20) = -174611//330\n", "B(22) = 854513//138\n", "B(24) = -236364091//2730\n", "B(26) = 8553103//6\n", "B(28) = -23749461029//870\n", "B(30) = 8615841276005//14322\n", "\n", "BB(0) = 1.0\n", "BB(1) = -0.5\n", "BB(2) = 0.1666666666666666666666666666666666666666666666666666666666666666666666666666674\n", "BB(4) = -0.03333333333333333333333333333333333333333333333333333333333333333333333333333359\n", "BB(6) = 0.02380952380952380952380952380952380952380952380952380952380952380952380952380947\n", "BB(8) = -0.03333333333333333333333333333333333333333333333333333333333333333333333333333359\n", "BB(10) = 0.0757575757575757575757575757575757575757575757575757575757575757575757575757578\n", "BB(12) = -0.2531135531135531135531135531135531135531135531135531135531135531135531135531131\n", "BB(14) = 1.166666666666666666666666666666666666666666666666666666666666666666666666666661\n", "BB(16) = -7.092156862745098039215686274509803921568627450980392156862745098039215686274513\n", "BB(18) = 54.97117794486215538847117794486215538847117794486215538847117794486215538847111\n", "BB(20) = -529.1242424242424242424242424242424242424242424242424242424242424242424242424247\n", "BB(22) = 6192.123188405797101449275362318840579710144927536231884057971014492753623188388\n", "BB(24) = -86580.25311355311355311355311355311355311355311355311355311355311355311355311313\n", "BB(26) = 1.425517166666666666666666666666666666666666666666666666666666666666666666666661e+06\n", "BB(28) = -2.729823106781609195402298850574712643678160919540229885057471264367816091954032e+07\n", "BB(30) = 6.015808739006423683843038681748359167714006423683843038681748359167714006423638e+08\n" ] } ], "source": [ "# binomial coefficient: binom(n,k) = n(n-1)・(n-k+1)/k!\n", "#\n", "mydiv(a, b) = a / b\n", "mydiv(a::Integer, b::Integer) = a ÷ b\n", "function binom(n, k)\n", " k < 0 && return zero(n)\n", " k == 0 && return one(n)\n", " b = one(n)\n", " for j in 1:k\n", " b = mydiv(b*(n-k+j), j)\n", " end\n", " b\n", "end\n", " \n", "@show binom(Rational(big\"100\")/3, 30)\n", "\n", "# Bernoulli numbers: B(n) = Bernoulli[n+1] = B_n\n", "#\n", "struct Bernoulli{T}\n", " B::Array{T,1}\n", "end\n", "function Bernoulli(; maxn=200)\n", " B = zeros(Rational{BigInt},maxn+1)\n", " B[1] = 1 # B_0\n", " B[2] = -1//2 # B_1\n", " for n in big\"2\":2:maxn+1\n", " B[n+1] = -(1//(n+1))*sum(j->binom(n+1,j)*B[j+1], 0:n-1)\n", " # B_n = -(1/(n+1)) Σ_{j=0}^{n-1} binom(n+1,j)*B_j\n", " end\n", " Bernoulli(B)\n", "end\n", "(B::Bernoulli)(n) = B.B[n+1]\n", "\n", "maxn = 200\n", "@time B = Bernoulli(maxn=maxn) # B_n を B_{maxn} まで計算\n", "BB(n) = float(B(n)) # B(n) = B_n である. BB(n)はその浮動小数点版\n", "\n", "# SymPyのBernoulli数と比較して正しく計算できているかどうかを確認\n", "#\n", "BernoulliNumber(n) = sympy.bernoulli(n)\n", "@show B_eq_B = [B(n) == BernoulliNumber(n) for n in 0:maxn]\n", "println()\n", "@show all(B_eq_B)\n", "\n", "maxnprint = 30\n", "println()\n", "for n in [0; 1; 2:2:maxnprint]\n", " println(\"B($n) = \", B(n))\n", "end\n", "println()\n", "for n in [0; 1; 2:2:maxnprint]\n", " println(\"BB($n) = \", BB(n))\n", "end" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 周期的Bernoulli多項式のFourier級数展開\n", "\n", "$\\widetilde{B}_k(x) = B_k(x-\\lfloor x\\rfloor)$ を**周期的Bernoulli多項式**と呼ぶことにする. 周期的Bernoulli多項式は $\\widetilde{B}_k(x+1)=\\widetilde{B}_k(x)$ を満たしている. \n", "\n", "周期的Bernoulli多項式の母函数 $\\ds\\frac{z e^{z(x-\\lfloor x\\rfloor)}}{e^z-1}$ の $x$ の函数としての Fourier係数 $a_n(z)$ は次のように求まる:\n", "\n", "$$\n", "\\frac{e^z-1}{z}a_n(z) = \\int_0^1 e^{zx}e^{-2\\pi inx}\\,dx =\n", "\\left[\\frac{e^{(z-2\\pi in)x}}{z-2\\pi in}\\right]_{x=0}^{x=1} = \n", "\\frac{e^z-1}{z-2\\pi in},\n", "\\qquad\n", "a_n(z) = \\frac{z}{z-2\\pi in}.\n", "$$\n", "\n", "ゆえに $a_0(z)=1$ であり, $n\\ne 0$ のとき\n", "\n", "$$\n", "a_n(z) = -\\sum_{k=1}^\\infty \\frac{z^k}{(2\\pi in)^k}\n", "$$\n", "\n", "これより, $\\widetilde{B}_k(x)$ のFourier係数 $a_{k,n}$ は, $a_{0,n}=\\delta_{n,0}$, $a_{k,0}=\\delta_{k,0}$ を満たし, $k\\ne 0$, $n\\geqq 1$ のとき\n", "\n", "$$\n", "a_{k,n} = -\\frac{k!}{(2\\pi in)^k}\n", "$$\n", "\n", "となることがわかる. したがって, Fourier級数論より, $k=1$ のときは整数ではない実数 $x$ について, $k\\geqq 2$ の場合にはすべての実数 $x$ について次が成立することがわかる:\n", "\n", "$$\n", "\\widetilde{B}_k(x) = B_k(x-\\lfloor x\\rfloor) =\n", "-k!\\sum_{n\\ne 0} \\frac{e^{2\\pi inx}}{(2\\pi in)^k}.\n", "$$\n", "\n", "すなわち, $k=1,2,3,\\ldots$ について\n", "\n", "$$\n", "\\widetilde{B}_{2k-1}(x) = \n", "(-1)^k 2(2k-1)!\\sum_{n=1}^\\infty\\frac{\\sin(2\\pi nx)}{(2\\pi n)^{2k-1}}, \n", "\\qquad\n", "\\widetilde{B}_{2k}(x) = \n", "(-1)^{k-1} 2(2k)!\\sum_{n=1}^\\infty \\frac{\\cos(2\\pi nx)}{(2\\pi n)^{2k}}. \n", "$$\n", "\n", "このことから, $k$ が大きいとき(実際には $k=5,6$ 程度ですでに), 周期的Bernoulli多項式は $n=1$ の項だけで\n", "\n", "$$\n", "\\widetilde{B}_{2k-1}(x) \\approx\n", "(-1)^k 2(2k-1)!\\frac{\\sin(2\\pi x)}{(2\\pi)^{2k-1}}, \n", "\\qquad\n", "\\widetilde{B}_{2k}(x) \\approx\n", "(-1)^{k-1} 2(2k)!\\frac{\\cos(2\\pi x)}{(2\\pi)^{2k}}\n", "$$\n", "\n", "と近似できることがわかる. 適当にスケールすれば周期的Bernoulli多項式は $k\\to\\infty$ で三角函数に収束する." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "image/png": "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u3bjxo0IoaysrJKSkry8vNDQ0KamJvF/k/z8fCsrq/v370dHR1tbWxO90q9evSJuAwgLFiwg/la7du3y8/P7/vvvMzIy2tvbP/3008TERIRQYWGhnZ3d7du309PT3dzciMbO5OTkxYsXz549Oz4+vqioSPRDlyxZcvTo0erq6vDwcGIf3/r6eicnpwsXLuTk5MydO5c4WFpa6uvrO3v27KioqPz8/PT0dGF/zU8//TRv3rysrKw//vhjypQp7e3tCKFZs2adP3++uro6ODj41q1bHa40MDCww7KN33777blz5zpUgHw+v8tKhuhO6nLKPUIoMjJSWLhoJePp6fn48WPx+xkPD9LdKtPy/C9uVcl7vx2jUJX91qN/FkVetGgR8fvZtGnTkSNHfvnllzlz5syZM4d4NSAg4NSpU4cPH0YINTY2Hj9+fNKkSQghQ0PDvLy8Q4cOdSjcxcVF2H1gYmLy888/dzcFKSoqavLkyT/99FNvYq6trX39+rWCgoKnp6eXl1d6erqFhUVNTY22tvb58+dFF9BLSkq6evVqQUGBiorKN998Y2hoGBMTM2/ePGIpdCJn72DXrl0HDhxACBkbG0dGRu7fv9/b2/v3339HCFlZWW3dujU5OVlMbDo6OqITIggBAQFLliwhZlL4+fmtXLnS19cXIVRdXR0REUHsJS7q0aNH8fHxohNNDx8+bGNjc+bMGYTQ+vXrra2tibSsra3t22+/JRpjhC3qFRUVe/bsSU9PJ5rBli5d+scff6xbt+7p06f19fXdreSRlJTUIZXR0dFZt27d3r17RbcnbGtr63KAy3fffSc62a22tnbfvn3EzRaXy62trRWu2aqhoSHMUJWVldXV1dPT0yU+sgGIwXx2m1db3vN53cBoDOV5a9E//wN9+OGHGzZsQAitWbPm6NGjR48e9ff39/f3J1796quvzp49++233yKE6urqTp06ZWlpiRDS0dEpLy/vXMm4u7u7u7sTj/X19X/99ddff/21yzAiIyPd3Ny621S8g/r6+vj4eFlZWTc3Nz8/v+zsbBMTk5KSEmNj49OnT4s2zMTGxgYGBhYWFiooKOzYscPAwGDNmjX+/v6hoaF6enqdJ50hhLZt27Z7926E0IQJE548efLtt98uWLCA6I01MzPbvn07cQvUHQMDg2vXrnU4+PXXX69atYpo+PT29v78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", "image/svg+xml": [ "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n" ], "text/html": [ "" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "BBB = Bernoulli(Float64.(B.B)) # Float64 Bernoulli numbers\n", "BP(k,x) = sum(j->binom(k,j)*BBB(k-j)*x^j, 0:k) # Float64 Bernoulli polynomial\n", "PBP(k,x) = BP(k, x - floor(x)) # periodic Bernoulli polynomial\n", "\n", "# partial sum of Fourier series of periodic Bernoulli polynomial\n", "function PSFS(k, N, x)\n", " k == 0 && return zero(x)\n", " if isodd(k)\n", " return (-1)^((k+1)÷2)*2*factorial(k)*sum(n->sin(2π*n*x)/(2π*n)^k, 1:N)\n", " else\n", " return (-1)^(k÷2-1)*2*factorial(k)*sum(n->cos(2π*n*x)/(2π*n)^k, 1:N)\n", " end\n", "end\n", "\n", "PP = []\n", "x = -1.0:0.001:0.999\n", "for (k,N) in [(1,20), (2,10), (3,3), (4,2), (5,1), (6,1)]\n", " y = PBP.(k,x)\n", " z = PSFS.(k, N, x)\n", " ymin = 1.2*minimum(y)\n", " ymax = 2.7*maximum(y)\n", " P = plot(legend=:topleft, size=(400, 250), ylim=(ymin, ymax))\n", " plot!(x, y, label=\"B_$k(x-[x])\")\n", " plot!(x, z, label=\"partial sum of Fourier series (N=$N)\")\n", " push!(PP, P)\n", "end\n", "\n", "plot(PP[1:2]..., size=(750, 280))" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "image/svg+xml": [ "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n" ], "text/html": [ "" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "plot(PP[3:4]..., size=(750, 280))" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "image/svg+xml": [ "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n" ], "text/html": [ "" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "plot(PP[5:6]..., size=(750, 280))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Euler-Maclaurinの和公式" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Euler-Maclaurinの和公式の導出\n", "\n", "Bernoulli多項式 $B_n(x)$ とBernoulli数 $B_n$ について\n", "\n", "$$\n", "\\begin{aligned}\n", "&\n", "B_0(x) = 1, \\quad \\frac{d}{dx}\\frac{B_n(x)}{n!} = \\frac{B_{n-1}(x)}{(n-1)!}, \n", "\\\\ &\n", "B_1(0)=-\\frac{1}{2}, \\quad B_1(1)=\\frac{1}{2},\n", "\\\\ &\n", "B_n(1)=B_n(0)=B_n \\quad (n=0,2,3,4,5,\\ldots) \n", "\\\\ &\n", "B_{2j+1} = 0 \\quad (j=1,2,3,\\ldots)\n", "\\end{aligned}\n", "$$\n", "\n", "が成立している. 以下ではしばらくのあいだこれらの条件しか使わない.\n", "\n", "部分積分を繰り返すことによって,\n", "\n", "$$\n", "\\begin{aligned}\n", "\\int_0^1 f(x)\\,dx &= \\int_0^1 B_0(x)f(x)\\,dx \n", "\\\\ &=\n", "[B_1(x)f(x)]_0^1 - \\int_0^1 B_1(x)f'(x)\\,dx \n", "\\\\ &=\n", "[B_1(x)f(x)]_0^1 - \\frac{1}{2}[B_2(x)f'(x)]_0^1 + \\int_0^1 \\frac{B_2(x)}{2}f''(x)\\,dx \n", "\\\\ &=\n", "[B_1(x)f(x)]_0^1 - \\frac{1}{2}[B_2(x)f'(x)]_0^1 + \\frac{1}{3!}[B_3(x)f''(x)]_0^1 - \\int_0^1 \\frac{B_3(x)}{3!}f'''(x)\\,dx\n", "\\\\ &=\n", "\\cdots\\cdots\\cdots\\cdots\\cdots\n", "\\\\ &=\n", "\\sum_{k=1}^n \\frac{(-1)^{k-1}}{k!}\\left[B_k(x)f^{(k-1)}(x)\\right]_0^1 + \n", "(-1)^n\\int_0^1 \\frac{B_n(x)}{n!}f^{(n)}(x)\\,dx\n", "\\\\ &=\n", "\\frac{f(0)+f(1)}{2} + \\sum_{k=2}^n(-1)^{k-1}\\frac{B_k}{k!} (f^{(k-1)}(1)-f^{(k-1)}(0)) + \n", "(-1)^n\\int_0^1 \\frac{B_n(x)}{n!}f^{(n)}(x)\\,dx.\n", "\\end{aligned}\n", "$$\n", "\n", "実数 $x$ に対して, $x$ 以下の最大の整数を $\\lfloor x\\rfloor$ と書く. このとき, $x-\\lfloor x\\rfloor$ は $x$ の「小数部分」になる. このように記号を準備しておくと, 整数 $j$ に対して, \n", "\n", "$$\n", "\\begin{aligned}\n", "\\int_j^{j+1} f(x)\\,dx &= \\int_0^1 f(x+j)\\,dx\n", "\\\\ &=\n", "\\frac{f(j)+f(j+1)}{2} + \\sum_{k=2}^n (-1)^{k-1} \\frac{B_k}{k!} (f^{(k-1)}(j+1)-f^{(k-1)}(j)) + \n", "(-1)^n\\int_0^1 \\frac{B_n(x)}{n!}f^{(n)}(x+j)\\,dx\n", "\\\\ &=\n", "\\frac{f(j)+f(j+1)}{2} + \\sum_{k=2}^n (-1)^{k-1}\\frac{B_k}{k!} (f^{(k-1)}(j+1)-f^{(k-1)}(j)) + \n", "(-1)^n\\int_j^{j+1} \\frac{B_n(x-\\lfloor x\\rfloor)}{n!}f^{(n)}(x)\\,dx.\n", "\\end{aligned}\n", "$$\n", "\n", "$af(j), a+1:b-1)\n", " - sum(k -> (\n", " BernoulliNumber(k)/factorial(Sym(k))\n", " * (diff(f(x), x, k-1)(x=>b) - diff(f(x), x, k-1)(x=>a))\n", " ), 2:n)\n", " )\n", "end\n", "\n", "function EulerMaclaurinRemainder(f, a, b, n)\n", " x = symbols(\"x\", real=true)\n", " g = diff(f(x), x, n)\n", " (-1)^(n-1) * sum(k -> (\n", " integrate(BernoulliPolynomial(n,x)*g(x=>x+k), (x,0,1))\n", " ), a:b-1)/factorial(Sym(n))\n", "end\n", "\n", "x = symbols(\"x\", real=true)\n", "\n", "[integrate(x^m, (x, 0, 10)) for m in 7:15] |> display\n", "\n", "[\n", " EulerMaclaurinIntegral(x->x^m, 0, 10, 5) - EulerMaclaurinRemainder(x->x^m, 0, 10, 5)\n", " for m in 7:15\n", "] |> display" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Euler-Maclaurinの和公式の解釈2:** Euler-Maclaurinの和公式は次のように書き直される:\n", "\n", "$$\n", "\\begin{aligned}\n", "&\n", "\\sum_{j=a}^b f(j) = \n", "\\int_a^b f(x)\\,dx + \\frac{f(a)+f(b)}{2} + \n", "\\sum_{1\\leqq i\\leqq n/2} \\frac{B_{2i}}{(2i)!} (f^{(2i-1)}(b)-f^{(2i-1)}(a)) + R_n,\n", "\\\\ &\n", "R_n = (-1)^{n-1}\\int_a^b \\frac{B_n(x-\\lfloor x\\rfloor)}{n!}f^{(n)}(x)\\,dx\n", "\\end{aligned}\n", "$$\n", "\n", "これは $n$ が3以上の奇数のとき $B_n=0$ となることを使うと次のように書き直される:\n", "\n", "$$\n", "\\begin{aligned}\n", "&\n", "\\sum_{j=a}^b f(j) = \n", "\\int_a^b f(x)\\,dx + \\frac{f(a)+f(b)}{2} + \n", "\\sum_{k=2}^n \\frac{B_k}{k!} (f^{(k-1)}(b)-f^{(k-1)}(a)) + R_n,\n", "\\\\ &\n", "R_n = (-1)^{n-1}\\int_a^b \\frac{B_n(x-\\lfloor x\\rfloor)}{n!}f^{(n)}(x)\\,dx\n", "\\end{aligned}\n", "$$\n", "\n", "この等式は函数 $f$ の整数における値の和 $\\ds\\sum_{j=a}^b f(j)$ を積分 $\\ds\\int_a^b f(x)\\,dx$ で近似したときの誤差が\n", "\n", "$$\n", "\\frac{f(a)+f(b)}{2} + \n", "\\sum_{1\\leqq i\\leqq n/2} \\frac{B_{2i}}{(2i)!} (f^{(2i-1)}(b)-f^{(2i-1)}(a)) + R_n\n", "$$\n", "\n", "になっていることを意味している. 例えば, $n=1$ の場合には, $\\ds B_1(x)=x-\\frac{1}{2}$ なので,\n", "\n", "$$\n", "\\sum_{j=a}^b f(j) = \n", "\\int_a^b f(x)\\,dx + \\frac{f(a)+f(b)}{2} + \n", "\\int_a^b\\left(x-\\lfloor x\\rfloor-\\frac{1}{2}\\right)f'(x)\\,dx.\n", "$$\n", "\n", "$n=2$ の場合には $\\ds B_2(x)=x^2-x+\\frac{1}{6}$, $\\ds B_2=\\frac{1}{6}$ であり,\n", "\n", "$$\n", "\\sum_{j=a}^b f(j) = \n", "\\int_a^b f(x)\\,dx + \\frac{f(a)+f(b)}{2} +\n", "\\frac{f'(b)-f'(a)}{12} -\n", "\\int_a^b\\frac{B_2(x-\\lfloor x\\rfloor)}{2}f''(x)\\,dx.\n", "$$\n", "\n", "となる. $\\QED$" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "10-element Vector{Int64}:\n", " 55\n", " 385\n", " 3025\n", " 25333\n", " 220825\n", " 1978405\n", " 18080425\n", " 167731333\n", " 1574304985\n", " 14914341925" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/latex": [ "$\\left[ \\begin{array}{r}\\displaystyle 55\\\\\\displaystyle 385\\\\\\displaystyle 3025\\\\\\displaystyle 25333\\\\\\displaystyle 220825\\\\\\displaystyle 1978405\\\\\\displaystyle 18080425\\\\\\displaystyle 167731333\\\\\\displaystyle 1574304985\\\\\\displaystyle 14914341925\\end{array} \\right]$\n" ], "text/plain": [ "10-element Vector{Sym}:\n", " 55\n", " 385\n", " 3025\n", " 25333\n", " 220825\n", " 1978405\n", " 18080425\n", " 167731333\n", " 1574304985\n", " 14914341925" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/latex": [ "$\\left[ \\begin{array}{r}\\displaystyle 3025\\\\\\displaystyle 25333\\\\\\displaystyle 220825\\\\\\displaystyle 1978405\\\\\\displaystyle 18080425\\\\\\displaystyle 167731333\\\\\\displaystyle 1574304985\\\\\\displaystyle 14914341925\\end{array} \\right]$\n" ], "text/plain": [ "8-element Vector{Sym}:\n", " 3025\n", " 25333\n", " 220825\n", " 1978405\n", " 18080425\n", " 167731333\n", " 1574304985\n", " 14914341925" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/latex": [ "$\\left[ \\begin{array}{r}\\displaystyle 25333\\\\\\displaystyle 220825\\\\\\displaystyle 1978405\\\\\\displaystyle 18080425\\\\\\displaystyle 167731333\\\\\\displaystyle 1574304985\\\\\\displaystyle 14914341925\\end{array} \\right]$\n" ], "text/plain": [ "7-element Vector{Sym}:\n", " 25333\n", " 220825\n", " 1978405\n", " 18080425\n", " 167731333\n", " 1574304985\n", " 14914341925" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/latex": [ "$\\left[ \\begin{array}{r}\\displaystyle 220825\\\\\\displaystyle 1978405\\\\\\displaystyle 18080425\\\\\\displaystyle 167731333\\\\\\displaystyle 1574304985\\\\\\displaystyle 14914341925\\end{array} \\right]$\n" ], "text/plain": [ "6-element Vector{Sym}:\n", " 220825\n", " 1978405\n", " 18080425\n", " 167731333\n", " 1574304985\n", " 14914341925" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# すぐ上の公式を検証\n", "\n", "PowerSum(m, n) = sum(j->j^m, 1:n)\n", "BernoulliNumber(n) = sympy.bernoulli(n)\n", "BernoulliPolynomial(n,x) = sympy.bernoulli(n,x)\n", "\n", "function EulerMaclaurinSum(f, a, b, n)\n", " x = symbols(\"x\", real=true)\n", " (\n", " integrate(f(x), (x, a, b))\n", " + (f(a)+f(b))/Sym(2)\n", " + sum(k -> (\n", " BernoulliNumber(k)/factorial(Sym(k))\n", " * (diff(f(x), x, k-1)(x=>b) - diff(f(x), x, k-1)(x=>a))\n", " ), 2:n)\n", " )\n", "end\n", "\n", "function EulerMaclaurinRemainder(f, a, b, n)\n", " x = symbols(\"x\", real=true)\n", " g = diff(f(x), x, n)\n", " (-1)^(n-1) * sum(k -> (\n", " integrate(BernoulliPolynomial(n,x)*g(x=>x+k), (x,0,1))\n", " ), a:b-1)/factorial(Sym(n))\n", "end\n", "\n", "[PowerSum(m, 10) for m in 1:10] |> display\n", "\n", "[EulerMaclaurinSum(x->x^m, 1, 10, m+1) for m in 1:10] |> display\n", "\n", "[\n", " EulerMaclaurinSum(x->x^m, 1, 10, m-1) + EulerMaclaurinRemainder(x->x^m, 1, 10, m-1)\n", " for m in 3:10\n", "] |> display\n", "\n", "[\n", " EulerMaclaurinSum(x->x^m, 1, 10, m-2) + EulerMaclaurinRemainder(x->x^m, 1, 10, m-2)\n", " for m in 4:10\n", "] |> display\n", "\n", "[\n", " EulerMaclaurinSum(x->x^m, 1, 10, m-3) + EulerMaclaurinRemainder(x->x^m, 1, 10, m-3)\n", " for m in 5:10\n", "] |> display" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Euler-Maclaurinの和公式の形式的導出\n", "\n", "函数 $f(x)$ に対して, ある函数 $F(x)$ で\n", "\n", "$$\n", "F(x+1) - F(x) = f(x+h)\n", "$$\n", "\n", "という条件を満たすものを求める問題を考える. そのとき, $\\ds D=\\frac{\\d}{\\d x}$ とおくと, 形式的にその条件は\n", "\n", "$$\n", "(e^D-1)F(x) = e^{hD}f(x) = De^{hD}\\int f(x)\\,dx\n", "$$\n", "\n", "と書き直される. これより, 形式的には\n", "\n", "$$\n", "F(x) = \\frac{De^{hD}}{e^D-1}\\int f(x)\\,dx =\n", "\\sum_{k=0}^\\infty \\frac{B_k(h)}{k!}D^k \\int f(x)\\,dx =\n", "\\int f(x)\\,dx + \\sum_{k=1}^\\infty \\frac{B_k(h)}{k!}f^{(k-1)}(x).\n", "$$\n", "\n", "これより, 整数 $an$ のとき, \n", "\n", "$$\n", "\\begin{aligned}\n", "\\log n! &= \\log N! + \\log n - \\sum_{j=n}^N \\log j\n", "\\\\ &= \\log N! + \\log n -\\left(\n", "\\int_n^N \\log x\\,dx + \\frac{\\log n+\\log N}{2} +\n", "\\sum_{k=2}^{K-1}\\frac{B_k}{k(k-1)} \\left(\\frac{1}{N^{k-1}} - \\frac{1}{n^{k-1}}\\right) + \n", "R_{K,N}\n", "\\right)\n", "\\\\ &=\n", "\\log N! - \\left(N\\log N - N + \\frac{1}{2}\\log N\\right) - \n", "\\sum_{k=2}^{K-1} \\frac{B_k}{k(k-1)} \\frac{1}{N^{k-1}}\n", "\\\\ &\\,+\n", "n\\log n - n +\\frac{1}{2}\\log n +\n", "\\sum_{k=2}^{K-1}\\frac{B_k}{k(k-1)} \\frac{1}{n^{k-1}} + R_{K,N},\n", "\\\\ \n", "R_{K,N} &= (-1)^{K-1}\\int_n^N \\frac{\\tilde{B}_K(x)}{K}\\frac{(-1)^{K-1}}{x^K}\\,dx\n", "\\end{aligned}\n", "$$\n", "\n", "ただし, $\\tilde{B}_n(x)=B_n(\\lfloor x\\rfloor)$ とおいた. \n", "\n", "ここでは, $N\\to\\infty$ のとき\n", "\n", "$$\n", "\\log N! - \\left(N\\log N - N + \\frac{1}{2}\\log N\\right) \\to \\sqrt{2\\pi}\n", "$$\n", "\n", "となることは既知であるものとする. 例えば, ノート「10 Gauss積分, ガンマ函数, ベータ函数」「12 Fourier解析」のStirlingの近似公式の節を参照して欲しい. 以下ではそれらのノートよりも精密な結果を得る.\n", "\n", "このとき, 上の結果で $N\\to\\infty$ とすると,\n", "\n", "$$\n", "\\begin{aligned}\n", "&\n", "\\log n! =\n", "n\\log n - n +\\frac{1}{2}\\log n + \\log\\sqrt{2\\pi} +\n", "\\sum_{k=2}^{K-1}\\frac{B_k}{k(k-1)} \\frac{1}{n^{k-1}} + R_K,\n", "\\\\ & \n", "R_K = (-1)^{K-1}\\int_n^\\infty \\frac{\\tilde{B}_K(x)}{K}\\frac{(-1)^{K-1}}{x^K}\\,dx = \n", "O\\left(\\frac{1}{n^{K-1}}\\right).\n", "\\end{aligned}\n", "$$\n", "\n", "$K=2L+1$ とおくことによって次が得られる: 正の整数 $L$ に対して,\n", "\n", "$$\n", "\\log n! =\n", "n\\log n - n + \\frac{1}{2}\\log n + \\log\\sqrt{2\\pi} +\n", "\\sum_{l=1}^L \\frac{B_{2l}}{(2l)(2l-1)}\\frac{1}{n^{2l-1}} + O\\left(\\frac{1}{n^{2L}}\\right).\n", "$$\n", "\n", "これが求めていた結果である.\n", "\n", "例えば, $L=2$ のとき, $\\ds B_2=\\frac{1}{6}$, $\\ds B_4=-\\frac{1}{30}$ なので,\n", "\n", "$$\n", "\\log n! =\n", "n\\log n - n + \\frac{1}{2}\\log n + \\log\\sqrt{2\\pi} +\n", "\\frac{1}{12n} - \\frac{1}{360n^3} + O\\left(\\frac{1}{n^4}\\right).\n", "$$\n", "\n", "これより, \n", "\n", "$$\n", "n! = n^n e^{-n}\\sqrt{2\\pi n}\n", "\\left(1+\\frac{1}{12n} + \\frac{1}{288n^2} - \\frac{139}{51840n^3} + O\\left(\\frac{1}{n^4}\\right)\\right).\n", "$$" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle 1 + \\frac{x}{12} + \\frac{x^{2}}{288} - \\frac{139 x^{3}}{51840} + O\\left(x^{4}\\right)$\n" ], "text/plain": [ " 2 3 \n", " x x 139*x / 4\\\n", "1 + -- + --- - ------ + O\\x /\n", " 12 288 51840 " ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x = symbols(\"x\")\n", "series(exp(x/12-x^3/360), x, n=4)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Poissonの和公式とEuler-Maclaurinの和公式の関係\n", "\n", "Poissonの和公式とは, 急減少函数 $f(x)$ に対して,\n", "\n", "$$\n", "\\sum_{m\\in\\Z} f(m) = \\sum_{n\\in\\Z} \\hat{f}(n), \\qquad\n", "\\hat{f}(p) = \\int_\\R f(x)e^{2\\pi i px}\\,dx\n", "$$\n", "\n", "が成立するという結果であった. これの右辺は以下のように変形できる:\n", "\n", "$$\n", "\\begin{aligned}\n", "\\sum_{n\\in\\Z} \\hat{f}(n) &=\n", "\\sum_{n\\in\\Z} \\int_\\R f(x)e^{2\\pi i nx}\\,dx =\n", "\\int_\\R f(x)\\,dx + 2\\sum_{n=1}^\\infty\\int_\\R f(x)\\cos(2\\pi nx)\\,dx\n", "\\\\ &=\n", "\\int_\\R f(x)\\,dx - \\sum_{n=1}^\\infty\\int_\\R f'(x)\\frac{\\sin(2\\pi nx)}{\\pi n}\\,dx\n", "\\\\ &=\n", "\\int_\\R f(x)\\,dx + \\int_\\R \\left(-\\sum_{n=1}^\\infty\\frac{\\sin(2\\pi nx)}{\\pi n}\\right)f'(x)\\,dx\n", "\\end{aligned}\n", "$$\n", "\n", "2つ目の等号では $e^{2\\pi inx}+e^{-2\\pi inx}=2\\cos(2\\pi nx)$ を用い, 3つ目の等号では部分積分を実行し, 4つ目の等号では無限和と積分の順序を交換した. それらの操作は $f(x)$ が急減少函数であれば容易に正当化される. \n", "\n", "一方, Euler-Maclaurinの和公式の\n", "\n", "$$\n", "B_1(x-\\lfloor x\\rfloor) = x - \\lfloor x\\rfloor - \\frac{1}{2}\n", "$$\n", "\n", "を使う場合から, \n", "\n", "$$\n", "\\sum_{m\\in\\Z} f(m) =\n", "\\int_\\R f(x)\\,dx + \\int_\\R \\left(x - \\lfloor x\\rfloor - \\frac{1}{2}\\right) f'(x)\\,dx\n", "$$\n", "\n", "が導かれる. これは部分積分によって得られる次の公式からただちに導かれる易しい公式であることにも注意せよ:\n", "\n", "$$\n", "\\begin{aligned}\n", "\\int_n^{n+1} \\left(x - n - \\frac{1}{2}\\right) f'(x)\\,dx &=\n", "\\left[\\left(x - n - \\frac{1}{2}\\right)f(x)\\right]_n^{n+1} - \\int_n^{n+1}f(x)\\,dx - n\n", "\\\\ &=\n", "\\frac{f(n+1)-f(n)}{2} - \\int_n^{n+1}f(x)\\,dx.\n", "\\end{aligned}\n", "$$\n", "\n", "以上の2つの結果を比較すると, Poissonの和公式とEuler-Maclaurinの和公式の $B_1(x-\\lfloor x\\rfloor)$ を使った場合は, \n", "\n", "$$\n", "x - \\lfloor x\\rfloor - \\frac{1}{2} =\n", "-\\sum_{n=1}^\\infty\\frac{\\sin(2\\pi nx)}{\\pi n}\n", "\\tag{$*$}\n", "$$\n", "\n", "という公式で結び付いていることがわかる. この公式を認めれば, Euler-Maclaurinの和公式の $B_1(x-\\lfloor x\\rfloor)$ を使った場合からPoissonの和公式が導かれる. \n", "\n", "公式($*$)の左辺はいわゆる**のこぎり波**であり, 右辺はそのFourier級数である. 公式($*$)はFourier級数論における非常に有名な公式であり, 本質的にそれと同じ公式はFourier級数論について書かれた文献には例として必ず載っていると言ってよいくらいである. (Fourier級数論より, 公式($*$)は $x$ が整数でないときには実際に成立していることがわかる.)\n", "\n", "このように, のこぎり波のFourier級数展開という非常に特殊な公式はPoissonの和公式という一般的な公式を導くだけの力を持っているのである. \n", "\n", "**まとめ:** のこぎり波のFourier級数展開は部分積分を通してPoissonの和公式と本質的に同値である! $\\QED$\n", "\n", "この節で解説したことは次の文献で指摘されている:\n", "\n", "* Tim Jameson, An elementary derivation of the Poisson summation formula" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAZAAAADICAIAAABJdyC1AAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nOydd0AUx/fAZ/faXoGjN+lNQBBFRcVeQRCVqNg1CZoYS4wlGhOTaKIxRUxiSzXGqLGjxIKIYgMrFkBBQOmdg7uD63e7+/tj8yN8Qfpew/38tTc3N/PmdvbtzJs3byAcxwEFBQWFMQDrWwAKCgqKjkIpLAoKCqOBUlgUFBRGA6WwKCgojAZKYVFQUBgNlMKioKAwGiiFRUFBYTRQCouCgsJooBQWBQWF0UApLAoKCqPBUBRWbW3ttm3bWvsWx/HXbQsRiqL6FkHXvG5NxjCM6tWdxVAUVllZ2YkTJ1r7Vq1Wq9VqXcqjd2Qymb5F0DWvW5NVKpVGo9G3FDql+7fYUBQWBQUFRbtQCouCgsJooBQWBQWF0UDXtwCGS05OjkQi0VftMpmMw+Hoq3a98Lo1WaVSwTBMp+vtGfTy8jI1NdVX7V2DUlitMmDAAG9vbxjWzyAUx3EIgvRStb54DZusR8rLy1etWrVhwwZ9C9I5KIXVKiiK3r59G0EQfQtCQUE+mzZtMsY1SsqGRUFBYTRQCouCgsJooBQWBQWF0UApLAoKCqOBUlgUFBRGA6WwKCgojAbKrUEP4DguEomIay6Xy2QyO5K/WU61Wv3bb78tW7asIzXGxcUVFBQ4OzvPnDmztTx79uxRKpVDhw4NCQl59OiRRCIZOXJkRwonl1u3bt2/f5/D4bz33nut5Tl27FhZWZmnp+fUqVPbLg3DMLFYzOPxGAxG03SJRMJisRgMRl1dXUFBgbW1tbOzMzkNoNAm1AhLD9TW1lpYWPTv33/gwIGWlpZjx46trKxsLXN0dLS5ubmFhcWpU6eapv/000/5+fkdrPG3337Ly8tr263Z3Nz88uXLCQkJAABHR8clS5boJXzCuXPnrl27ZmZm1kYeU1PTrKysAwcOtF1UaGiomZmZhYXFlStXmn0VGBhYVVW1aNEiT0/PZcuWDRo0KDw8XC6Xd1d6Ci1DKSy9ce/evZcvXwoEAiaT+dVXX7WWbfHixRkZGf3792+aiKLozp07Ozi8Ihg5cmRoaGgbGebNm+fn50dc29jYDBky5PDhwx0vn0QCAgLmzJnTRobw8PBhw4a1W84HH3yQnZ3t5ubWLP3x48dWVlaOjo4LFiyoqKi4d+9efn5+YWHhr7/+2i25KbQPpbD0DIvF6t27dxubFidOnNhytnLjxg0zMzN3d3cAQG5urru7e05ODgAgLy/Pw8MjOzu7jRofPHjg5eVVXl4OAEhLS/P09CwtLW2ZLSoqqjsKKzY2NiIiAsMwAMD3338fFhbWheBtFRUV3t7e9+7dAwBUVlZ6e3vfvn274z+fNGlSr169WqbHx8cTc8nx48ezWCwAAJfL7du3b1VVVWclpNAxlA2rfTAc3KzENVh3y/ExA47c//bKbd26lcvlVlZWZmZm/vXXX50q6tatWwMHDiSuvb29N2zYMGPGjJs3b86ePXvNmjW+vr5t/HbQoEELFy6cM2dOfHz8vHnztmzZ4ujo2DLbwIED7927p1KpmpnYpk+fnpub2yxzdHT0p59+2jRl9erVCQkJ27ZtCwsL+/rrr+/evUuj0TrVRgCAvb39zp07o6Oj09LSFi5cOGvWrJCQkM4W0pL4+PhmurioqKhxOkxhyFAKq31EKvBNOqrpdjDbOR7w297/KSwXFxdTU1MEQe7evZuent6nT5+OF1VeXm5jY9P48d1337127Vrfvn2Dg4OXL18OAKirqyPsYiYmJk5OTs1+/sknn9y4cSMgICAiImLevHmvrMLW1lalUtXU1DQbpOzcuVOpVDbL3NLkBMPwX3/9NXDgwJ9++mnfvn0t52VZWVnEhbe3dxsRCyZPnpyUlBQUFOTm5vb555+3lo0gJyeHGMd5eHgQQ6eWFBcXNzQ0NP23xWLx9OnTly9fPnjw4LbLp9A7lMJqHwsWSAgj/49asGCBra0tAGDQoEGLFi2aM2dOx2MVMJnMZjGjQ0JCjh8//uWXXxIfr1y5EhsbCwAYNWrUt99+2+znMAwPGTLk6tWrkZGRrVVBaKWWe7+vXr1aU1PTLLF///4TJ05slmhjY+Pq6pqdnd1ytRFF0bfeeou4vnjxoqWlZWtiEE3btWvX8uXL243E8t5770mlUgDA0aNHiflyS86ePdt0bVEikYSHhw8dOrTxr6MwZCiFpX9gGJbL5RiGdXzS5OXllZKS0vgxMzNz69athw8fXrVqVUhIiLe3d3R0dHR0dGs/v3Hjxh9//HH48OElS5Y8fPjQ3t6+ZZ6ioiJLS0sLC4tm6VKptL6+vlmiQqFoWcKWLVsQBImJiVm4cOGFCxeaBuqh0WiEZapdiouLV61adejQoTVr1kycODEoKKiNzMnJye0WGB8f3zhSk8lkU6ZM8fHx+fHHHzsiDIXeoRSW3jh06JCpqWltbe0vv/zy9ttvt6atEhISSkpKBAJBcnKyRCKJiIjo1avXhAkTvv32WwzDYBiWSqXR0dGxsbHz5s2rqamZO3duampqaxMiAEBNTc38+fMPHDgQGhqalZU1b968pKSklrWnpqaOGzeu5aBv5cqVHWnd9evX9+/f//DhQ2tr69GjR+/YsWP9+vUd+WFT1Gr17Nmz169fP3/+fCaTGR0d/ejRo47HnDt79mx1dXVDQwPxH77xxht0Oj0rK6vREDZv3ry8vLzo6Ojff/8dAODl5TVmzJjOCkmhS0hTWCqV6tatWyqVauTIkVwut2UGDMPS0tIqKiqGDh3a1P7yGsJmszds2CAQCAQCAZvN/uWXX1rOpxqprKzMz8+fO3cuACA/P5/wFfL19XVzc7t58+bo0aPT0tJWrFixYMECAMCqVavUanVGRsagQYNaK/D+/ftbt24lXBy2bNny1Vdf5eTkNDo0NHLs2LGPP/64y2188uTJqVOniLHbkSNHfv/9d7lczmazO1VIRkbGtGnTVq9eDQCIjo4WCARpaWljx47t4M/Ly8uLi4tjYmIAAPn5+UqlMjExMTQ0tHFqOXz48N69excWFhIf+Xx+p8Sj0AM4GTQ0NAQFBYWEhEyaNMnFxaWkpKRZBoVCMWrUqAEDBsybN8/a2vrKlSvNMqSnp/ft27e18pVKpVKpJEXUjoMgiFwu13GlHef69evh4eEdzBwWFtavX7+NGze2kWfmzJlubm6bNm3CcTwtLW306NEkSNl5PvzwQw8Pjzlz5rSdp2/fvlOnTu1s4T/99NP169e7IV3P4ZNPPtm6dauOK62vr+9mCRBOxlGOu3btOnXq1PXr12EYfuutt0xNTZsZBfbs2XPw4EFibfvUqVNbt2598uRJ0wwZGRkLFixIT09/ZfkqlQoA0O4WFnJhs9lCoVBnEUfLysoOHjzYTABicNEaRUVFLi4uHSm8pqZGLpcjCNLG2La0tBTDMD6fz+fzhUIhDMN6GXGIRKL6+noajfZKFyqC6upqhULB4XCsrKx0KVtPYtOmTWw2+5NPPtFlpQ0NDSYmJt0pgZwpYXx8/KxZswir6pw5cxYvXtxMYT19+jQkJIQwlIwcOTI9Pf3Fixeenp6k1N4zYLFYrq6uzVLa/kkHtRUAwNraut08Tb2xzM3NO1gy6ZiZmbW9LwcA8JqbFF5nyFFYpaWljc4+zs7OFRUVKIo2teP26tWr0UeZ8MkuKSlpqrA0Go1IJDp+/HhjSlBQUOPKNOFc07OPMreysiIMVZ3iyJEjQUFBrXmKVldXHzt27P333++2dF0Hw7AzZ868ePFi4sSJTTcYlZaWNo0p7uzs3J3zPn744Yf58+frbMCVnZ396NGj1lzYOkJeXl5eXl54eLharS4pKbGwsGhU0xUVFVwut4NrC/X19QKBwM3NrenyiEwmS0tLMzc3DwgIIFKysrJKS0ubmUoxDNPxM4WiaBs1wjDcrmcPOQpLpVI1GjIZDAYhVlOFtWTJkr17977zzju+vr6HDx/m8XjNAuDL5fL6+vqmp9Wz2ezGSQExJSRl9mrsnDlz5u7du9988w3x8fLlyxYWFq0prMrKyu+++06/Cis2Nvbs2bMLFy5sNmAMCQnRaDSN53rdv3+/pQtFxzl58uTkyZN1prAKCwuTkpK6o7CWL19OrGkUFRV5eXkNGzas0U9l4cKFM2bMePfdd9suITc3NzIyMj8/X6PREPN9Ij0rK2vChAk+Pj6FhYXBwcFHjhyBYdjR0XHq1Kn3799vOnZGUbSlD7BWUalUbdTIZDLbdbUjR2HZ2dkJBALiurq62tLSspm9yc7OLjMz8+TJk3K5/O+//w4ICGjm12diYuLs7Hz69OlXS0mnA53bsHRAQ0MDDMNNF1VxHK+urjY3N2/Z2Lq6OgaDUVNT0zRIQzOzV3V1NZ/Pb3cuSZSGoqiVlVVHvFWrqqoaRaqtrTU1NW0WraURDMOEQmFTR9B79+7FxMS8/fbbLTPv379/0qRJzRKlUikMwx1cT1Sr1QKBwN7ePjU1tWk6sUrTcpAiEAg4HE6z0w+VSmVdXZ2ZmVnTStVqtVQqbTk5FYlEMAxPmjSpmeR1dXV8Pr/pS1qhUAiFQgsLi5a348mTJ6WlpaNHjyY+QhBUUVFx4cKFiIiIjrSawNra+uDBg2ZmZs1eV59++unChQu3b9/e0NAQEBCQlJQUGhpqamoaHh7++++/f/jhh405GQyGjg+CRFG0uzV23/KP4/i6desWLVpEXG/dunXatGnENYqiGIY1y3zw4EEvL69m6a/VKqFAILC0tPzwww/9/PxsbGxWrlxJ/BunTp1ydXUNDAy0sbFZsmQJkZiYmDh69Ohp06a5uLisW7fOxcXF3Nx8wIABU6ZMwXE8PDz89OnTOI4nJSW5u7v37dvX3t5+1qxZKpUKx/H09HRHR8dmtZeVlfXr18/Pz8/f39/Z2RlF0fr6enNzc41GQ2SYO3fu33//jeP4999/P3fu3GHDhnl7e9vZ2aWlpc2YMaN3795mZmbnzp1r2a69e/fa2Nj4+vq6uromJyfjOL5y5UozMzNXV9cBAwaUlZU1zezk5HTx4sVmf8ukSZOcnZ0dHR2joqJEIhGO4wcPHmzsWgqFwtzcnLgpI0eO/PDDD11dXV1cXHAcd3d3z87OxnFcKBTOmDHDzc3N09Nz/Pjx1dXVOI6fOHEiPDw8NDTU1dV17969TSvdsmWLg4PDgAEDevXq9ccff+A4LpPJlixZ4uTk5OvrGxwcnJ+fj+P4rVu3hgwZMnv2bBcXl88+++z06dMRERFECYmJiZ6engEBAfb29nv27CESP/jgg169eg0YMMDBwSEuLq7ZH7VmzZrGFdu8vDwIgg4dOhQQEICiKI7j48eP//nnn1/Zc1pSUFAAAGjsqEqlkvA1Iz6uXr16yZIlxHVycnLTR8xIVwnJGWG99957AwYM2LJli7m5+XfffXf+/Hki3cXFJTY2Njo6WiQSffLJJ4GBgS9fvvz1119Pnz5tTEdmYpg86z7QqNvP2SYMJy+6pR0AAMfx2tpaBEGePXsmFouDg4Pj4uKmT58eEhKSk5PDZDIVCsWYMWPOnj0bFRWlVqtv3Lhx4cIF4pXu5eWVlJR08uRJokylUkkYBQICAp4+fcpms9Vq9ZQpUw4ePLh48eJXinHgwIEhQ4b89NNPAIC6ujoIgnAcFwqFjRmkUikxbpfL5ZcuXXr8+LGzs/NHH300duzYf/75Z9SoUSdOnPjkk08mT57ctNhHjx59/PHHDx8+9PDwIBZhXr58uWvXrqKioqioqDfffLOlJHv27ImPjwcA+Pv7r1ixYuPGjSYmJgUFBSiKTps27YsvvoiNjVUqlcRuG+J/EwqFOI4DAOrr6x8/fpydnU1MhYitAgCAtWvX2tvbv3jxAobhDRs2fPLJJ7/++qtKpUpMTLx+/frw4cObCiCVSrdv315ZWcnn8/H/j6r49ddfi0Sily9fMhiMXbt2rVix4sKFCxqN5u7du2vXrj169CgA4MSJE8RfVFFRsXDhwsTExMDAwJqamoEDB44cOZLP5x86dKikpITNZqMo2tDQ0Kzht2/fXrt2bdOUuXPnxsbGHj16tOk0Mycnp+UIlKi9cet7MyorKzUaTeNqjKura+OO7qCgoKdPn9bX1xvdac9NIUdhubu737lz548//hAKhZcuXRoyZAiRvmnTpsDAQAAAh8Px8vJ6/PixhYXFnTt3fHx8SKlXN2BKmfzRNRzrbrgGNqomFBYBsUuZz+fPnz8/ISFh+vTpNjY2Z86cefz4sUAgkMvljx8/joqKAgB4enq+suM2xcbG5vz58w8ePKiqqhIKhY8fP24tp4uLy/79+/ft2xcREdHuOmNYWBgR3Gb48OHx8fGjRo0irvPy8prlvHTpUmRkpIeHBwBg6tSpq1evfvDgQdtOnl5eXv7+/gAAYsUmISHhxIkTMAzDMLxy5crVq1cT2yFb45133mnpdHLq1KkffvghISFBJpNZW1s3GhmCgoKaaSsAAIvFMjc337hx46xZs4YNG0bYd06dOvXmm29euXJFIpHweDzCbwsA4ODgMGPGjJatdnZ2rqmpiYuLQ1HU3d39xo0bxJBw06ZNM2bMCA4ObjmvrKioaLZuC8PwF1988f777zcNCevh4XHr1q2WDW9jzZfYI9VoT2CxWI1RCfl8PoPBqKyspBQWAAD4+Pi03GTbaDhkMpkffPABWXXpGJjNs1i4kfRiG/uxubk54ZW2evXqnJycxYsXm5ubi8XixpFFR2zJW7ZsuXr16rJly0aOHIlhWONvWzJ//nwul3vixImNGzcOHTr0zJkzzTJgTVRzo9cMg8Foek0sgzRFJBI1NehaWFg0HbW9ktDQ0KaKWCgUNv4nr/w59r/vjJZbphUKRUNDw6NHjxrNgvPnzycuXvkf0un027dv//LLLytWrKisrDx06FBYWFhNTU1WVlZtbS2RZ+XKlcQ+81eWIBAIJBJJY0TTwYMH+/j4mJiYpKam/v7772+++aZEIjl58mSzqDgsFqul7TkyMjI2NpbYJERQW1v7ypiCMTExrQV0JrbT19bWEhcCgcDO7t93JIqiarW6s5sNDA1qL6HeyMzMJAb26enpXl5eAIBz587FxcURa/87dux4peckk8l85Qnj58+f//rrr8ePHw8AOHDgQGtGcYKoqKioqCi5XB4UFJSUlBQREcFkMmtra21sbHAcbxnuqiN4eno2BpmSSCR5eXne3t6dKsHLyys9PZ0wIT969Ij4T8zNzRvXcwiHmDZAEMTd3T00NLTZdLUNXF1dt2/fvn379h9//PGbb74JCwvz8/MbMmRIu4t0BL6+vhiGbdu2rdlmTB8fnx07duzYseOzzz77/vvvmyksb2/voqKilqVt3bo1Ojq60R0PgqBXLjS1YU7h8/m+vr43b94kRmo3btwIDw8nviouLuZwOK/c6G5EUApLP0AQtHHjxrVr1+bl5cXFxT18+BAA4O/v//3338fExCQmJj558uSVEbL69u27YcOGvXv3Wlpazp49uzHd399/7969DAYjJSXl+vXrEyZMaK3qffv2QRAUEBBQXFxcV1fn6+tLo9HGjBmzevXqefPmnT17tvGAjE4xd+7cbdu2bdiwYdy4cfv27Rs+fHijE1AHWb9+/fr162EYVqlUmzdv/u233wAAw4cPf+utt/bu3Wtvb0+ktM327dvfe++9qqoqDw+PFy9eCASCjz76qLXMxcXFO3funDBhAo/Hu3r1ar9+/QAAX3zxRXR0tEqlCggIKCkpycrK2r59e2slhIeH79ixY/bs2TExMSiK3r59e/r06QwG48iRI6NHj2YymSkpKePGjWv2q4kTJ6akpCxZsqRZ+vDhw/v375+QkLBo0SIAgI2NTRue6BqNJjY2lhiHxsbGcrlcYhKzdu3adevW4TiemZmZnp5+7NgxIn9KSsrYsWPb9RswcGibN2/WtwwAAFBVVXXmzJnWDkoh7MpdCFnZHbZt2/bRRx9p4wbLZLIdO3bExcUdPHhQKBTu3r27d+/eAIAJEyZkZmYmJyf369fvzTffdHFx8fb2xjDMxMSkcTOzvb39gAEDcnNzpVLpsGHDMAzr16+fjY3NmDFjXr58efnyZXd39+XLlzs4OBD6DkGQluHPU1NTr1y5IhQKv/nmG0KthIWFZWZmEs/b8OHD/f39HRwcUBTt1asXMeTBMIzH4wUHBxMlYBjW7DlkMpnz5s17+PDhrVu3hg4dGhsbS9wv4sl3cHBoJgOKoiEhIU2ndQEBAf7+/hcvXiwtLd2yZQvh5cjj8UaNGpWQkFBcXLx582Yulzt+/HgajaZUKoODgxtdt1AUHTZsGJfL7dOnz/Dhw2/cuHH9+nWNRhMZGeng4IBhGHHqRzMZ6HR6fn5+cnLyo0ePRo8evX79ejqd7uLiEhERcevWratXr0okksmTJ7u6umIYxuFwGo2zOI5bWVn169cPgqB58+aJRKLLly9nZWV5e3uPHj2ax+NlZ2cnJyenp6dPmTJlxYoVzXxivb29165du3TpUiaTieM4DMPE0BgAEBQUxOPxxowZ88owsM3+wIsXLwIAhg8frlKpNBoN4ScRFBTk4OBw7tw5GIZ//fXXxnH6Rx99tGzZMmLcCgBITk5mMBg6PhhJpVJ1xOemDcjZS9h9Xqu9hAKBwNbWtmc77lO0zebNm3k83rp163RTXWZm5tKlS1NSUhqnk6/1XkIKCopO8emnn+ryVDEvL6+rV68aky9RK1AKSw9YWVlRw6vXHBqNxuPxdFadzoKOaBvqmC8KCgqjgVJYFBQURgOlsCgoKIwGSmFRUFAYDZTRvS3i4uLadhmnoDBSsrOz2z4zzTChFFarxMTEnD17Vl+1azQaY3dK7iyvW5MxDIMgSF+uBkwmc8SIEXqpuju8Rv2js+zZs0ePtXffxc7oeN2arFAoaDQaNYTvFJQNi4KCwmigFBYFBYXRQCksCgoKo4FSWBQUFEYDOQoLw7DVq1ebm5tbWFhs2LDhlREgysrKpk2bxuFwTExMli1bRkq9FBQUrxXkKKy//vorMTExNzc3Ozv7zJkzjTHDGlEqlWFhYV5eXuXl5VVVVa889ImCgoKibchRWH/88ceKFSusra1tbW2XLVt24MCBZhni4+NVKtU333xjZmbG4XBaO/ODgoKCog3IUVi5ubmN8XD9/f1bHqmSkZHRt2/fRYsWubm5TZw48ZWB+ogzOBsxkMiCFBQUhgM5jqNCobAxuI+JiUnjiSONVFRUxMXFHTly5Oeff963b194eHhubm7TE4+FQuHz58+bHgf92WefNZ6sp5eIo/pFIpHoWwRd87o1+TV0HG37FiMI0u6/QY7CsrKyqq+vJ67FYrGNjU2zDJaWloGBgcShCevWrfvmm28ePXrUdGeAubm5n5+fQYVI1juvlds3wWvVZAaD8bopLNDtW0zOlNDHx6dR12RkZBBHKjTF19e36Z6pHhCqlYKCQveQo7BiYmJ27dpVUFDw8uXLPXv2xMTEEOnR0dHPnj0jLoqKiuLi4lQq1e7duxEEGTBgAClVU1BQvD6QMyWcM2dOXl7eqFGjIAhaunTpG2+8QaRXVFQQJ9xyudxz586tWbNm6dKlgYGBFy5c4HA4pFRNQUHx+kAd82VAiM78AjMR04hF4PUIXYDJGgS/fmo29R2mmx94PZosz7wjuXnWauk2iEZ/TYzuwmM/0K3sTcbPAmTcYmprjqGAScSy+0mSW/E4+oqT6HskskfXNVWlktsX9C2I7mhIPqUufanMfaJvQXQEWlctT09puHYakDQwohSWoaB8mcF096dZ2qnLC/Qti45Q5j7hjYhUFT7XtyA6AlfK1eX53KFhqqLXpcmKvCeI3yAY4WgE5aQUSCksQ0FVlMN07c2wc9FUFutbFh2hKs7hDBqPimpwjVrfsugCVdlLhr0Lw9FTXfUa3WKmiw/dzkVNUq+mFJahoC4vYPbypFvZa2orquRg+k2GskeftYpJ63Glgm7lQONbosLqs0XYF5k9PP6tuvQlcYtRQSWGg1X34ZQqfcukZdRl+QxHD7qVA1pbUSLFZ93qrhmaUliGgrqikOHgSjO3VdTWTE7UJFXQZD3alqWuKGLYuwAIolnYZuRXzb2Gpgt7uHeeurKI7uBKM7fRCKs33Ed/zYWKpPqWSavguKayiGHvSje3lgpqJl1CR9pi3SySUlgGASaX4Eo5jW8FTC2fFNT0s4TMmAaxeqs91FVFdDsXAICUbbXvXs27Pj2/K2oqixm2LjSemUYuTSxWT+rVw28xKhZALDbM5mGm1qm5NRN7Qcu9u/sS7vm9xCjQVJXQbZwABG1/acZX1v00jAYB0LO7s6aqhGHrVCkHJ2rM5tuKQh1hw3Cw0SLqqmK6rWNcEV5DMzs/VGzBImvpzEBRVxbTbZ0wHGzPN7PW1O0YTOt+mZTCMgjUVSV0W6ctj7D7cr4TENNfg9uiqSpRWzpPTtR49TLvxxTpWxytg0nEAMfvyszeS0UtLc3tsJ7fZE11KcPGaf19NB/je8IimIwZ/2vwZBgDmuqSdJrjoRfYoQgLXNbQw9+8AAAA1FXFK/PsB1hBob3NMUnPf3rV1SVqS6cZVzSHR9N5ZnxMIta3RFpHXVWcgjkllOA/TbTASbrFlMIyCMoKin8ROCaE0my5NIjFxmQN+pZIu6AKmVwiredY7w2hwTw+Jq3Xt0Rap7a4OEHp+E0wbUIvCObx0ddAYVUUFe8X9koIo1nwubhaRYrzCqWw9M9DAd5QVrRuvKsXHwIAwFxTTFrfs21YP18vLGE7Hh3HoMMA5pqgEnHPbm+DGvzzoMDOxWWhFwwAoHFNe7yOvlWJo1XFWya5OfMgAEEw14SUJlMKS88UNOBzLknsMdFAbwcihaxba7D8noO9yCvw9nbl0gEAAOaY4j16RKnGwMyrGn91UdhANyIF4ppgsoYerKOzRfh7l6pN6XhfZwsiBVrlzKcAACAASURBVOaYkjJvoBSWPsBxxfOHmExSqwSTLqFf9ipE7F0A/O+9IOvWGhSYtF6Z+xjg+MUS/LOH6AeWhSbOHsRXMNek57UXAKAue6mpKsEBeCcFZUHAXVLA7PVvQF2Y0xPfSRimyE7DlfIKGQhPRL91KuY4eTR+CXPIucs93LfYMKlPPCK9fxkgJrN9Yt9wZUTIXmqcvRq/hTk8TNajggXjqKZmz3pMIRMFhr0lnfnPBDr7cC5jyGjiW5jFwVRKCOtRfv2qoue1v2/Bcez4mO3ZUuekwdWSOwjMMyO+hTkmmLxH3WIAgPjcftmTW4BvFen89Ts+9OGVebhTs15NjbCMEEwhk9yMt1y5M0NjPrsmYdsgmjL/KRFfhQBm83pYb5Y/vgmbmCkW78RSzh7sJww2U6qripmNvRmCYDaXppL2pKXR+sQjppPfzOg/3y3l93MT6XDRM5b7/9xiXN6jnNwxiUh677LF6t3ZYjhGfm1jIKwqeNa0V0McE4yMJlMKS9fI02+xvALXZJsf91g0tfgULq1X5qUjvYMaM8AcHiaXQFDP8W2Q3k/CgyeH3TYTBIQNfnZMkZ3GcvODGP9tK4PZXJqy5+hotL5OVfj8hvXodxTjB0AVpqWZimf3EJ//jrYjhhs96RbLHl5n+w955zHvvM+iqPyjmESsKsphefZtzACzeaRYKimFpWvk6alJ5sNTKvEf3vBCegdV/7Ca5eHfOFkAAEAItye9fjFpvaokb0ZJ0Ew3aMTMaMWze+J/9nMGT2yaB2bz4B6ksBSZdyQewW/dgU9NRKymxgj/3qF8+RTpO6wxA8zmkTLcMBzk6SknucNzxfjW6QGMXh7VP65B+gTDyH9RhWE2F1PIul8RaTasnJyc3bt3i0SiKVOmREdHN/tWLpf/9NNPmZmZarU6ICBg6dKlfD6frKqNCFylkL54+gV33ZUomikD4DNXyh5cYQcOb5oHZnM1PSj8iCwr7Qk/wM2C9eVAGgR41su+VpXmcfqPapoHQrg0MnqzgVD75O5WfNz+CfRgawhYDwcQTLewafr0QginJyksTFovLS3YZdv3+lQ6hw7Y89bJ0pLZA0Y3zQMjHI2wpvt7c8gZYdXW1g4fPtzCwiIyMnLdunUHDx5slkEqlRYXF48dOzY8PPzKlSuTJk0ipV6j4/7dxw8Rr1MRJg4cCAAAMZjckHCYa9o0D4xwMXnPeXpv37r72DL49xE0YmMG3daJM2Bsszwwm0NT9ZAHuKZeqch/NnrkgMnO/25FYfcNYTh6Ns0DI1xc0UPaCwC4nfogldv3n3DECgEAAIjF5g6LgBFu0zwQm5wmkzPCOnDgwIABA7744gvi49atWxctWtQ0g5WV1Q8//EBcjxo1ytHRsa6uzsLCgpTajYWMOvzBzTsjggf7mbW1qwpCOLhCCvF6gpPO149VU8sfD974HqPNNyOMcGGFtAe0V6YBW06lLbDxertvW5HLIQYT4DgdU+PA6I8puFeN5929Gxwy2N2krV4NIxxSpoTkjLDu3bs3cuRI4nrkyJFPnz6VSl+tTRUKxfHjxwMCAszMzF6ZoadSIsWnXlJHyB70CRnWdk6Yze0Z84XDL7DH95+Y9HLiW5q3nRNCODSV0Q8qURzMTkZDxXf82rvFAACIzWVrjL7JL+rxWZdlY2WPfYcObTsnhJDTq8kZYVVWVlpaWhLXVlZWAICKigpPT89m2dzc3AoLC62trS9evAjD/6MrxWJxQUHB2LH/TRbefffdiIgI4trYT80Rq6GwK4wveA8QCysFkwvaPLAbxYBGLsVxXCqVsjXGOuy4VgmvvUtPha+w+wxu9wx6DUxHpfUYBzPq0+pXPaBjCmVQ9V3cc1b7DWEisLxeoUAkEqVOpCOfGgUUeoXxg8ltxNFDBmjt9Goc0kgbpFJpG4coIwhCp7ejkchRWGw2mzh/EABAXLzy2MGCggKlUnnw4MFJkybl5OQ0nRKamJhYW1tv3LixMcXX17exEKIZxqiwpLf+kT1//A0SHuoVFPboLGdEJLu9AxlRM0uZSg5BEJvN5iC6EZM0MJmk/p/f61TgE3xO3GCMc+QJf85yuL0mYyZmLKkIhmGO0TUYAGX+M0nyqVR2n0ze1Avcy5B3P55tr3Z/JeXwuLiKxWJxOMbnvC1JPiUvyNrKmLKgj3/IzXO88bOQ9m6xmm8u1yjZbHYbB5I2G8S8EnL+LEdHx+Lifxe2ioqKmEymjY3NK3OyWKx33nnniy++ePDgQWhoaFNZeTzehAkTXvkroiUdaY9BIXt8Q3r74iGHmTE5P9uWMwDXlDtoPGi3FWwuppBBEIAgo2sxEB7bKWNbHBGYxQtWIUUsk9B5dF77y8E0NpemqjDGBqPiWuGf254Fv6l5lHKGlqBRK6zfj+1IK2AWB9HIISNssvROguzJjT8sItfkfG9ZgcAWtpy+IaD1cRMBnc3DFTIYhrvZXnIU1owZM1asWLF582Yej/fXX39NmzaNGBNdvnzZycnJ19e3trbW1NSUODPyyZMnNTU13t7epFRtuGBY/YU//+63+jzwW/HZKLg8j+ns3b62AgBmsXG1EjZCm7uqIEtZXhTh+1FMGNPZKQKTiBn/v3uubSAWGzZOG1bDleM1fSYsbBh37YNQ64YXNDMrmkk7BjsCCOEgGrnR3WNco66/dPjnQZvv093WzR0DKl4wXXza1VaA8OQwHD+ssLCwgQMHBgYGuri45OXlXblyhUjfsmVLVFSUr6/vtWvXli9f7uPjo1ars7KyvvvuOzc3N1KqNlgU2ferYLP9Cr+USDqbBYB7n47+EoIgBouNKQBgaVNA8hHfjD9gNWWiM2OVPwyAJY1v2cEfwggbVsm1Kps2wBSyhrTkub33nppE9zGDgJlX+7/5f2AWm2mERnd5+q0SnssFjdv1UDqTQQduHe3VxGu4+6795CgsGIZPnDjx9OlToVA4cOBANptNpJ85c4a4njFjxsiRI3NzcxkMho+Pz+vgNZqXfGmfSVhCGM2882oHZrE5GjkAxvQvaaQNomcPX4xbtj+40+6BEItjjCOs0ns3biJ9vxhlPcy209F/IYSDSI1PR79MvvQzN+J8KJ3H6OQvIQhisIC6uysMZBr8/P39m6U0tWTZ2Ni0ZtjqedzJF/KLni5ft96Z15VA1hCLzcWMrDf/HZfMthjw83h+F0J3Qyw2rJIb18a6OiXIupqEDJ053a0rRhmYxWaIFaRLpVWSsyqtq4s2bAyxY3fl5zCL3f1ZoZEZ/IyCbBF++kwS7hvS166dpZPWgBEOF5MZ0fP7/VPMKefymMhQVpc2X8AIx7imhAoULDtb6KaunBEa3LUSIBYbQY1JRz8S4DfOJ9IDR/e26Ozg6l8gFrv7IyxKYZFMhQxEXlIvFSd4jQ/vciEQC2GjRuOec7IAu3rnqRdTbuXXv2slQEzEiBQWhoMF19E3Ks/bjwgFcBe3x0EsNlNjNE0ubMCnJyrerL/s2a1ezcaV3W0ypbDIpEENIhI138BJfBtrpotPl8uBWBwOahy9+WYlvjJVs1ty2HzCzI6sFr0SiMWG1cbRXgDAmnsoXFcxrPomd8SULhcCs9hMjXFMCeuUYFIi+jN83tTVi2Hn0uVyYISNK7vbZONzWjNM1JXFon/2P6pWbza1HVh9x2zFt90pDWYhHLmhP8DS+0mClEsvpBY3+AoeA3AHh7b/m1aAWWxIo4QMe4KEqxTif34vzCvwg5zWq9L54Ys66MHwSiAWYvgKS136Unj+wP0a8IOZZd+a+/xVO7tTGsRkg26PoymFRQKYrEHw88dnXaLL3KzXOws4ftF0S/vuFAixOFzUoJ105Bmpokt/r7Nb9q632MkGZ/cf1REXs1aBIJzGZGBKAAzX073uSGyxkr7Fcv4ezzJL57FNo9N1AYjJRjQGbaZE6+sEv2467L5Q6clf5VTH8Z9PM7PuToEwi42pqBGWAdBw+WiGzeC/LMOvhtNJ2WgBMREOZrivXxzV1J355UPndQOD/McHkmNVwJlsRKMwWE8OZV56fXF+pPvuhAi2o0UXTXVNgVlshmGPsOov/nW714RLNhMSwuhMMm4yxEJwFWV01zeYrKHuTtJm/qxzE8nRVgAAmIWwUcPtzfUPkjNoTua9+2wgSVsBADAGghiwJ0dFwvFt5tGHxrMDLMg4cB0ACGGzDFhhoeJa4ePUWLM34saTo60AsUrY7REWpbC6y4NLly6bDD4caW1F3mwGYrHZhjrCwgHITTh7y33arqHdjx/5HxjTcB/g0oIicUnh+EljxtiTo60AABATYRrwusr98+fOmY86OZnPJy/gAMxkY9QqoX65X4lC984Pjoz0MCWtKwMAIBabgxmok87ehEygVnw6cyCNzBYDjIEgBjmorFeDCyfjK/qEzfYiM1gIzGQzDLK9AIAbZWrOk8SJ06f04pLbqxHKD0ufvKjHfzydyre06BfYm9ySYSbCxgzRD+unbMwy7azT+GlsBqnqCgCcyWYZ3gOswsCCi8JxglsT3phMbskQC2FqlAb4TnoqxA+dusp2dPf1cia3ZIiJUH5YeqNGASYnqDfVHXWJmEV64RALMUA/rH+KsJMpL0aosm2HT2w/dyfBGIihKSwcgLdvolHFcRYDR9BMSQ7nDTERluE5jpZK8WkJio/qTminV5Pg6U6tEnYFiUzxRiL2vegvaytzpM8Q0suHmAZnw7pfKvs0WRRfs9M88i2ISb7zAcY0rCkhjmo2PVBb5T+cWH2Fv2gv6eVDDCaEYxCmAaCLO11IR9wgj7qE/SH61dzVvZtOG68EZiI45dagY9AGYe3BryQFuYcAzvMJspj/kTZqgVgG5NagyHogOLrTQiqLZ7Esx03nBr86yGI3wRkIU2YYTcZx0dlfRakJMRiGWNtbxXxO+vCKQEVn0zUKALq0k5hUUFGN4MA2aWnBSYCbBAw2n71GG7VALMrTXcfgeN3Br5Lpfn9N+Cp+IqPtk2C6A8xkI5gCBzgAJJuKOoumpkxwZMdy90+nDPeL6a1FAwLOZCMNBqGwGq6drsjLjer3Z8JUvkObJ8F0ExWNCWtU2iu/o2BY7f4vz5kMTZy04/g4eheCbXQQyuiua+TpKeVC5U67+SfGaVFbgX9tWAbx9NbF7//TfkZQf+1qKwAARmexDGC/NyYRC5NOzLVa/XcY302b2goAoKYjdAPYQSm9n1SgZP1lP+PQGC1qKwAAxEQotwYdguOF549+YzP3n1BGp6OXdRKIiRiCDUtRVliT97zUf/LnQVrvJxgDYRvAOkPx5bNxJsO3T+wVZKX1sa2Szqar9X2XMaz04vEddgvOTmQgZPrVvQKYScIIi7QpoVwuv3btGoZhY8aM4XK5r8xz586d8vLyQYMGOTuTvGKqA1LvPFFL0c9XBHctelmngAzD0z3pZFyxy+Q9I3VhZMGYCFPfTa4SKyV3LtpF7wxz1MVMXENDaPoeYV1PviPHTL+bGWCh/XDcBhQPq66uLigoaOfOnXv37g0ICKisrGyZZ8mSJYsWLYqLiwsKCjp//jwp9eqMx7V4yeXT5mOjepvpYkwKMxEWpmcnnW9v13qV3lk4dzJdN6NwBsLS66BSogZ7jiSK7f1mD2r/kC5SUNERWK/O/ber8IbrcS6hb7hqefJLAJGxSkhOZ9y3b5+7u/uVK1cSEhKCg4MbT6VvJDMz8+TJk7dv3z5y5Mju3bvXr1+PG6DPXCsUNuDrzuQFawr6jhmnoyphGgbRgFpvFtkDuRicetp00BgTM1Pd1Igx2SyN3mxYGgzMuaKYVRY36I1onVWqoiF0/TU5R4x/eTa9D13oN2y4bmqEWAgwkM3P//zzz6xZ/3qazZ49Oz4+vmWG8ePHE4dCR0VFvXz5Mi8vj5SqtU2dEkQkanbW/mY7aS5E153LjBxGgJ4MHJdK8V9uFc8SXrENI997sDVwBoLoaYSFA7A0FQ0tOGPr7Mx09dVZvSoGQtPTLa6Ug8gE5c7a/XaR87sVF6gzQDQ63WdQNw/OIceGVVpa6uTkRFw7OjqWlpa2kQFBEGtr69LS0qZHE6rV6rq6up9//pn4CEHQ6NGjGw+7VwkqIADROnCgLongGnVD1sMf79X9VJ/mYMpABoeiKKqz2uUwy1QuRVGezmoEAKAiQd6TjEvpDcfF8WaRbwGemc6ajNJZLI1Cl/8wgbro+ZkHRX3Lyt8QXeOv3KFLAdQwk6mW67jJuEopznq0+57wkOSOta01K3CkLgVgzVyFYlhr38Iw3MZB9gTkKCyNRkOj/bvGwGAw1Go1juNN61ar1U2PqKbT6SrV/8x3lEqlTCZ78OBBY0qvXr0adZwsLRloVFDYAlKk7Qi4Qlr/22fZKp4/18G/ny9ryCSlSqcTNDkNUUolSqWZzmrUvMwQH915hx003x4xG/cuzaufUqm7CYsKoiGoXJc1AgBk536vffZEjPhHefFM52zXcPkaHQqgoLEQpUyXTcalYvGvmzIwm0EmNl4DB7AGTdBxr1apVG20l8lkEgcwtwE5CsvOzq6mpoa4rq6utre3b6Yp7e3tG8+yxzBMIBA4ODg0zcDj8RwdHffv3//K8tVcnkZY01TlaZu6sz895Pp9H/AeWdHLOosCRhAY11mTMbmk4sSutR4fjx7ad6CfHhrM4JoyUKUub7E8/ZY492mE1w8JU0yc+Hpw0EWZHBam1mWTa4/F3rAY9rfHwjPj6TpaS/lfUBTtZnvJkXrEiBFXr14lrq9cuTJixAjiWqlUYhgGABg+fPj169eJwefdu3e5XG7v3p2JcECGB0fHUVcU1j19+KXtmyRGL+ssOrZhia6cvmIyyKNvwDJ9aCug+/AyGFYV/+f7Vu8eDjXx0oe2AgCoaDq1YakKn9fkv9hrN+fYWP1oK1IgZ4S1cuXKwYMH29nZsVisn3/++fr160S6vb394cOHw8PDJ0yYYG1tPWvWrNDQ0B07dqxZs4bF6oTjBymBKTpOZvyJU1ZT48J5JEYv6yxyGgJ01WSNQl5968LDUd//OEjLvoOtgzHZLB1G1Cm8e+upyuzd8P5DbPS2+UlDY9EUulNYmWeP/20z/cwkNteY9+ORo2l9fHzu3Lkjk8lqa2tv3rzZv/+/Qa+/+uorPz8/AAAMw8nJyUOGDMnIyNi2bduGDRs6VT4pHhwdJCVPgLx4MG9OOLnRyzqLLkdYh49fyrII3DGplx4bDBHhZXTi7CJQgNyEOPWw6VNc9DnSUNHZNF35YV3JLGOUZr83L9TacE/56BCkKVs/P7+vv/66WeLSpUsbr01NTdetW9e1wmEW0v3zNjrCUyF+PS5+WuBYf3sTHVTXBgpYRzp6R7p6dHa8x5KP9DX5JcBhWAPRcY0aYmh3WCvXgPUnM9YCSZ+woVqtqF3UdEQ3W3Me1OCZ505PGjLJ01L7/uxaxkjmsgxd2LBKpfj883XzhIm+EdO1XVe7yOkIpH2F9fdL7OXNZDt7G3OPrh/7ShZKGkvbE38UB3OvoQtLjrqEz+jysa9koaKxdOA4+rIef+dCVVRDildo1499NRyMQ2FBLKT7kXTaRqwCEZc0+4Q/WwwZT7Ow0WpdHUEGId0/YqRtksvxr2/VfFx10CYqRqsVdRAFTevj6PfvoP2Kr/jAdVqK6tUp1HSWtrfmCBRg8iX1/rq9FqOmdOfYV8PBOOxvWjW6o6Ia0cVDaS+qD6LCXjbmphEfaqmiTiGnsbQ3JVRk3S+/flFYqTiHFplPnMV0JjkmfddQ0thaajKOahquHM9NfzpFqvYHlZbvbYNo+u/5KhqbobXNzxpBRd2lw2kva09gdfaO9iYTZmupIh2j/9vWEWAWgmtnSogpZDV7NlyyGpPXe9SnwRzE1UfvMwUCBcwGqhqtlPz8oeDYj1/axMweZ9bL376bh1STBUSY7bTzWhKd2FVSVfcdP+r7cKa9V2+Ipf8gnwAANUNbRndMWl+zZ32cbbiwz9hxwTyWk7eB9OruYxwKCzC0ZYFuSDqaYeq/33FO0iS6tuMBdQo5jaUNtwYc1dSd2POxy+p+wUGhAYZlEFDQtTLxV+Y/FeVkTPHYczGS62BmQM+tio7QtfMarr/4113rkH9cZ54PpWs10qTuMY7WQAwmrlGD1nchdQ1MJqlNufSl1bz4CYalrQAAMhiBtLCE1PDgWgZkZ9mn/xoD01ZAazas8gtHvzKfdWgC18+QtBUAQE1naSMeFiqurU278YP1rFPje5q2AsaisAAEQQwW6b35XkJCkungQ5E2Oohe1lmUNPKHGzgAzxPOpHi+ETvYwNQzAAAApRamhMX5ReKSwtDJ40bYGZa2AgCoaQgNVZHuenb33LnzFqOPTbYwMZTjeMjESBSWFuzudypQ+v1zIVMjdRO9rLPIYTZQkfz0/nA+E6iVm2YO1Gro7q4BQUBOI3niL1KBiyfjq/3DZnjob8tC6+AQhNKY5Db5aomal54YNj3SXnc7FHWK8SgsFplLSDlifNfp23xLywB/g1gga4mMRrIf1q5nmN3jeNcJUxG64akrAAAACjqbxHeSEgXzLorG194aNy2CrDLJBQIAZbAx8sbR6XX40birHEf33p7GF4K8gxiRwiJtilQpB5MvaT6rP+EUNpOUArWBDEZw8kZYpwuwU/cKRyifWYfo3/+oNRQ0Ek5VIcBwsOgGOqMi3qJ/iJZOFSQFDYNF1l0uluDTLqk2iE87T5pBSoGGiZGsEgIAMxGs27cWk4gbhMIpaXaxyjgrHpMdoOfNGW2goLFJcRzVVJemCRkf3kOu1u0yC5trICv6r0QBI7hS2s1CcI1aU1n8WZEtt6JoYtlF/pw9pMimJTQMEgaVaL1QJKqffM/2d8URc1tblnd/UmQzTIxGYQFmd2+tIutB3ZHvyiDT09IylpOXxdufGbJzigxGoG53ZeHxHyXPHiBy7AYqNhkRyRs2mRTZtAEEgJzGxlW13SkEra+r2f1hnYa+WFyBsDmW89fRzKzJklAbaOjdnRLK02/VndhdhptckJcjbn4Wb39KlmyGidEorG5OCTGFVHhs5y+DPn/E6a2v6GWdQk7v7pRQnp4iy88O9fnlo0HshV4G32AAlDSkm0+v6NTeIveRM8G8lEhaL57hvo0IIAA09G4tJWESkfDknu8GfFVl7nZkNM0A11JIxwj6MQHMYnfHwCFNvZBtFXQJ6m0s0ctQiA7RaHg3Ds4RXTryuc1b8/2MQ1sBQkcrZV3+ubqiUFLwfIZmxrlQmrPBaysCNYPdnddSw42zj+xGpLNc/xz5WmgrYEQKC3THrQHHK69f2GEy9dxEuhFFL8MZXW+y9MWzknoNs/eAj/sZzS1WwN0aRJcmn//NNOzPcZxAC6N5dlEGgim6eItxVCNISdxjNuXMBDrLEP3qtILR9GaIxca6+vq9kfqoCDPZNd3LxnAtzq8AYnG6NqjEAbh67tId59Ddw4xHPQOgoHO6fIvLxUrZk5uBE0LHORiNtgIAaJicLr+TkpPvPmM4/hblZGaITmbawmgUFsxi4116Fz2owXOvJdmHjPc0NaauDAGAd3VQ+eU9ae/yOzHR42jG02IIAjIY6dotblCDr4+lyGw8Z/bTf1ygjgNBQE3r4i2+WYlXpV7uPWaCk17j4uoe0hTWnj17rKyseDxeVFRUfX19s2/r6uoGDRrEZrM5HE7//v1v3LjR2fIhpCvvopf1+MIE0URJmq/ODm0mD5zF7YJN59fnWG3aTRPvAJ65kcU/ktO6MqJUY2D6FU107eU+40O1IZVW0TC7Ypl9JsSXJ1QPU2R7DxupDakMGXIU1pMnTz799NObN2/W1tZiGPb55583y4AgyO7du8VisUQiWbRoUVRUVGePb4SYnfYqFCjApER0DyPRJHAozNFzyOMuALHYnTVwnC/GtzzUrKv/x2KE4XowtEYXjO44AItvoV6yIg9lKbvvMC0Jpj3UDA6u6FyTy2V4RCL6C/0CP3gsxDTyCO2dhxwbx59//jl9+nTivIn169dHRkbu3Lmz6dGEHA5nyJAhxHV0dPSaNWvq6+vNOzMEgFgdvbWYRFyz7yNNXfUBp7lLe/f3vX7G9P3YzrTGUMBZHXU9Uzy7W/vXNyoz+93m7yY5vWTVIIjPAG2LRzpyGrvjRnfhsR+k95Oeu40R2c75tupn7rhoQ4jJ11k0DDYm71CvRkWCmn0fodL6vfYLPvH1dk2+ZLLOoH1itQQ59zgvL2/8+PHEdZ8+fYRCYW1trZWVVbNsFy9erKmpOXz48Nq1a1tqKxRFhUIhcQ3DMJ/Pb/otjHCwjiks8fk/WN79P4Emzcv6uff1k2ZTFtNtHLvSKr0CAQCYHWoyrlIIj/+ofHP75quV+6p28eqZxug9CAGggegAhnG1qt1zKOSZt1XFOZcXHKlPOrb3yWpmwBDe8EjdyEkuagYHF3bonSSK/5XVf/RqSciSvJ/db/xtNnMlzdyYDHZk0VGFVVpaevLkyZbpixYtsrCwEIlEPB6PSDExMQEA1NXVtVRYKSkpubm5hYWFb7zxRrOvhEJhTk6Ou7t7Y8rmzZtjYv6NNa5SqTAMoHKJRCJpW05c1iBLT/l6zK+FKl6/5RsZMMAAaPdXBgiOM9Q0hkJch7cnvOpBksbBe2KG+wcjXGw9BgIAFAAAY2uyXA5jGASY7Ibaaphn1nZmSfLprIAZm7K4lxctMOPOBwBIZF134NIXahWQA7pa2tBu/8TEtYqcx5/YLa/lIf4rP6NBADXOXi2VSqHWt5cgCELaUfVKpbK8vLxlulqtBgBYWVmJxWIiRSQSAQCsrV+xJeKrr74CABQXF/fu3Xv06NG+vr6NX5mbm/v5+aWnp7+ydpVKhZpZiFWKRrXYGtL0GwX2A1Ol/BuT6SYMwwtz1WEgSEXn8hk42m6TqzJvf2Myba4nbUWgEa9vs2U4DKtoHB6HBtHbbDIqEtRVM6u1HwAADYhJREFUliywCPlnEt3fyohjPjGZKhzwYbWy3VvccP9SZq/heSrulUl0Nt2IezWO4+02tm06qrA8PDy+++671r718fFp1DXp6el2dnZt2KecnZ3Nzc0rKiqaKqx2gZAO2bBe3kvdj4ReCKX3gOhlOIuNK+razqNuEItLChQRA7YM6Am+gzDCwRTt7H8ufpCayAv+bTQy0MroV/Q1jPbbCwAovJd6yHrePxPpbOMz05EMOauEb7/9dnx8fHJycnV19RdffLF48WIiff369WfOnAEAPHz48OLFixUVFUVFRZs2bcJxfMCAzlmFoQ505eQCGavs+YYZg3pI9DJW+zas3/65m2XR76eRiLE/uxAAeAdeS9VykJ56r1fQ0HAnY28xAB1bJbz4vI4hKNk6I9D4T0ElAXIUVu/evffv3//BBx8EBQX16dNn06ZNRLpEIlEqlQAAHMe///77QYMGjR079vnz50lJSc1s6u0CMRGAojiqaZqISevR+n/HIOl1+G8X0mjOvj42PUFdQRAALG5LHa0RlOMaNXG97QlmWfhg5OjBPSZ0N4xwm62a4ahGU11KXEs1YGZCQ6D0+eSxQfqQjmQgCKiYr7jFmESMSUTE9d1q/PTlB3Sv/m5mxj9lIAPShpgzZ86cObN5PLx9+/YRFwMHDkxKSupmFcTrF+KaEh9xtap65/uYUm7zfmw5p9fkRPQf5n0738HdrMVwwBFus9evMvex4PfNTBcf62Vf//UC/ytbebXhiVnACn1JSDowm4vJ/8eWLDq5W/bwmlnUUtaQ8NnJmkjVExMPX0OO6tUpUBoTYBiuUUP0f/URppBWfbcM4JjNBz++pFlHJWmu0B84BPWcXt1NjOnV3Kw3yzNS6LZOphPm1Jz5bdIldH0fzLbovjF6D7YKwsVk//P0NlyPM5/5Pq5W3rt6fcN99IJHOsvRvd01NSMCYnPxJiMOTFovz0i1XrlDfPHg2htiFAdvKVN71C1u0WTZw2ssD3/usMiq+D/CE9Gv+6vNS54g/kP0KKFBYVwKi9dUYSme3WcHjqANiagqLHibnbsYu8ewd6XxLfUoIbngyP+0F1erlC+fsvuG1IxYpEk6dGoMMH96mTNgjB4lJB2YzcPk/z29iudpLM++TGfv5/aD3R7HHR8iV+aksQOH61FC0mne5Gf32YHD4RFv1GWnv29VPKP+FsvD3xj3aWgJY1JYEJvXdMShzH/K8AhYlAJf9ls0P/MH8fkDJuMMN0Z7Z4EAwP9XQatKchl2LsVqJCw3gO/Qq/eFrariXM6AsXoUkkQgCOA4gNk8TNbQmKjMf8byDPwzF/vYdO6M2kTl0a85QaPh/7cJGD04joP/bTKOqwqyaG4Bs27RU/vMnfUotj7xCG9sT47R3lmMaZkUZvPw/1dYaH0drlZ99MKmWoGvmjtO8xCDIBjxHaRfCckFR3i4XApwnAjlrCrOxRx7T7qEru8L+7ltkNw8y494E2L2qKUjmMPDSv/T0eri3Kcu4zc+QK9PsbUZsVmR99hkVJQexdMGMOc/haWpKYM5vOXpJgDgMfMnK+/RYDaP5e6vXwkNCqNSWFyTxlurLntZYeaRVIbfiqSzaIAVbLiHwXQdGh3QGZhSDiMcAICi9OVeWcDkftDKPjAAPNOw+fqWj3xgDg+T/v9wA0OVlcXzc5xOT6T35kOA78N09dGrdFoB5pg0zhvUZfkvuO5PavHrk+l0GqCHhOtXNgPEmKaEMOc/hZX2rPAa6nIxjNazo5fBXBNMWg8AwHCQn1ugtHb9JrgnOIi2BswxbbzFhYWlJTTLH0ZwQmx7gstVa8Ccf28xAODBs/zruOv5UGOKi6tjjEphcU1RaT0A4GYlnvm8MDLYtQdHL/vXpsMxxWT1AIB1d9XW0rIvJ7n11AYTjqMw15R4emuVYHtSAcPeJcrVmLpoF4B5fEJHXyrFi18Wzg1xte0hPhtawZh6A41riknFWSI8+qpmAr3Uzd1V3xJpHRqPj0nqYzOxZ/mVCN+chfQoi1VLYK4pJhXLNWDqZc1ERmlvT1d9S6RF/tPREvFDAb7ohmYYrczJzUXfchk0xqSwYJ6ZXCwOv4TGBsMcUQnd1viCxnQWmMe/UyDc9Qzb71PGtHPStzhaB+aY4ErFwmSlqwk0hl5Kt30Nmszj14tEU5PQ30JwpriKbt1L3xIZNMaksBQc87xy4Xu+8GwbEcRkwexubfs2CsppFhey6s5PpPHFpQybnv/0AghqYPIxqeiPkTR1dcnroLCkiMXTEuEn/eBJnEqambUxhiHUJUajsFQYWPLYxE4j3BAIa6qK6bY9f+T8VIj/WW76pkN9gAWkqSqh2znrWyItQtjsvsvAKmlmvwXWMyFcU13GMMLIi51CrgHLMkydcNF7vrCmqpTRo28xKRiHwsIBWHobwrgWJpoGgKHqymJGT3/3QgC8eQMN87N20AgAAOqqoh7f5NwGaE8W5ulozZbVauoqYZ5pj9kz+EogCHz3FPAtLS2UtQAAdVUR3ZZSWO1gHArr0AuQLwGHxzJgE3ONSKCuKKTb9/ARFgMGm/rTRvS20QhrAI6rK4rodj25yQwY0CFwIZTGs7JCRTXqiiJGj24vAIAOgWBrsG8sD6LRMFmDpqKQ0dN7dfcxjgnzTFcw0xVn04HE0hatrVCXveT2SE/RJiSOVTlZMlGxHVpboamtgLkmPdtmF2gBZU5WOZkzGyzsNIIKTFrPcHBv/2fGzMd9cRYdMGFAs7DVCCpUZfkmE+boWyhDxzhGWGw6IGIt0m2c1GX56qoSRi8PfQulXcyYOACAZmqBq5SK54+YTt76lkjrEE1m2DpqqkpUxblMJy99S6RduHRAHDHPsHFSFT1HRYIeP+vvPsahsBphOnpKUs4x7F162B66VoEghqOn5PpplkeAvkXREQxHL1Vxjqogi+XxuuyhYzh5SW6cZbn5Abgnb2MgBeNQWDk5Obm5uQAApM9gtEHEDZ6ob4m0zuXLl1UqFQCAEzQabRCx+43Qt0TaRSaTXbt2DQBA41sy7FyYbn16UpyvV/L06dOCggIAADsgBBULOD3dygEASEhIwDCsOyVAOI6TJU13yMjIWLBgQWun5nz66acwDG/ZsgUAgKsUr8OBt15eXhcuXPD29gavR5PT0tLeeeedR48eAQBwjRpAUI/3SFq1apWTk9O6devA63GLAQB2dnZPnjyxs7PrcglG0ycaFevrcF+b8bo1uTFecI/nde7VXcM4poQUFBQUgFJYFBQURoSh2LBSUlIiIiKCg4Nf+W1+fj4AoOlB9j2e27dv9+vXj8PpCUeWdYSGhobs7OzWOkCPJDc3F0EQZ+fXyLv91q1bgwcPZjJfHcQuMjLy/fffb7sEQ1FYGo3m77//dnBweOW3YrEYANDZowyNmpKSEkdHRwjqqfGvmoNhWFlZmZPTa+SIVFdXx2Qyu3l0u3FRVFTk4tKqN7+7u3u7gxJDUVgUFBQU7ULZsCgoKIwGSmFRUFAYDZTCoqCgMBqMTGGtXbvWzc2NwWC4ubn98ssv+hZHF3z22Wfjxo3z8PBITk7Wtyza4vjx446Ojlwud8KECZWVlfoWR+ucPn16+vTpPj4+Gzdu1LcsukAqlc6fP9/e3p7JZAYEBCQkJHS5KCNTWBYWFpcuXVIqlX/++eeaNWtSU1P1LZHWYTKZy5YtU6vVMplM37JohYqKipiYmKNHj4rFYldX1w8++EDfEmkdtVodERHRr18/gUCgb1l0gVqtDggIePDggVwuX7du3fTp06uqqrpYFm60DBs2bO/evfqWQkd4enqeO3dO31JohW+//TYsLIy4zs/PZzAYIpFIvyLphrVr1y5evFjfUugBPp9/8+bNrv3WyEZYjZSXl2dkZAwdOlTfglB0l7y8PH//fyPJEPP9wsJCvUpEoUVSU1NxHG+8453F4DY/37lz5/79+80SuVzu4sWLGz/K5fLZs2e//fbb/fv31610WuG3335rOd0bMmTI4MGD9SKPjhGJRE0dhk1NTevq6vQoD4X2qKysnD9//s6dO83NzbtWgsEpLLFYXFJS0izR1NS08VqlUk2fPt3R0TE2Nla3ommL8vLyhoaGZom+vr56EUb3WFpa1tfXN34Ui8XW1tZ6lIdCSwgEgvHjx8fExMT8Xzv3j6IwEIUBPGBjE7DLFYJHsDXCpE0RAinHQi8QLETL9AEvMAcQUnuGV6QMpBIUBWFsphCbLYTFZrfIbnb26fer8geGrxg+SGCelK0X+XeFJYQQQnz19n6/x3Hc7/eVUr3ei4xnXK/XtiPY5Pt+WZaP67quHcf55vQGMHW9XoUQYRgul8ufrMPsH1aapk3TZFlWVRURHY9H24k6V9c1Ed1ut6ZpiMgYYzvRL0vTlIi2263WerVaJUniuq7tUN06nU5EdD6fL5fLO2xjY0wQBJ7nJUlCRESktW63FLOzhKPR6DE4+GE6nc5mM4t5/oCU8nkQq1JqOBxazNOF3W63WCwOh8N4PN5sNoPBiw9HVkoVRfF5K6Wcz+cW83Rtv99HUfT8JM/zyaTNSGhmhQUA74zZJyEAvDMUFgCwgcICADZQWADABgoLANhAYQEAGygsAGADhQUAbKCwAICND0gzaNyjw/8+AAAAAElFTkSuQmCC", "image/svg+xml": [ "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n" ], "text/html": [ "" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "B_1(x) = x - 1/2\n", "b(x) = B_1(x - floor(x))\n", "S(N,x) = -sum(n->sin(2π*n*x)/(π*n), 1:N)\n", "x = -2:0.001:1.999\n", "N = 10\n", "plot(size=(400,200), ylim=(-0.6,1.2), legend=:top)\n", "plot!(x, b.(x), label=\"B_1(x-[x]) = x - [x] -1/2\")\n", "plot!(x, S.(N,x), label=\"partial sum of Fourier series (N=$N)\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**補足:** このノートの上の方の周期的Bernoulli多項式 $B_k(x-\\lfloor x\\rfloor)$ のFourier級数展開の節を見ればわかるように, \n", "\n", "$$\n", "\\sum_{n=1}^\\infty \\frac{\\cos(2\\pi nx)}{n^k}, \\quad\n", "\\sum_{n=1}^\\infty \\frac{\\sin(2\\pi nx)}{n^k}\n", "$$\n", "\n", "の型のFourier級数の収束先は平行移動と定数倍の違いを除いて周期的Bernoulli多項式になる. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 台形公式とPoissonの和公式の関係\n", "\n", "簡単のため $f(x)$ は $\\R$ 上の急減少函数であるとし, $a,b\\in\\Z$ かつ $a1$ のとき(より一般には $\\real s>1$ のとき),\n", "\n", "$$\n", "\\zeta(s) = \\sum_{n=1}^\\infty \\frac{1}{n^s}\n", "$$\n", "\n", "は絶対収束しているのであった. これにEuler-Maclaurinの和公式\n", "\n", "$$\n", "\\begin{aligned}\n", "&\n", "\\sum_{j=a}^b f(j) = \n", "\\int_a^b f(x)\\,dx + \\frac{f(a)+f(b)}{2} + \n", "\\sum_{k=2}^n \\frac{B_k}{k!} (f^{(k-1)}(b)-f^{(k-1)}(a)) + R_n,\n", "\\\\ &\n", "R_n = (-1)^{n-1}\\int_a^b \\frac{B_n(x-\\lfloor x\\rfloor)}{n!}f^{(n)}(x)\\,dx\n", "\\end{aligned}\n", "$$\n", "\n", "を適用してみよう." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 解析接続\n", "\n", "$\\real s > 1$ であるとし, $f(x)=x^{-s}$ とおく. このとき, \n", "\n", "$$\n", "\\begin{aligned}\n", "&\n", "\\int_a^\\infty f(x)\\,dx = \\int_1^\\infty x^{-s}\\,dx = \n", "\\left[\\frac{x^{-s+1}}{-s+1}\\right]_1^\\infty = \\frac{a^{-(s-1)}}{s-1}, \\qquad\n", "f(b)=b^{-s}\\to 0 \\quad(b\\to\\infty).\n", "\\\\ &\n", "\\frac{B_k}{k!}f^{(k-1)}(x) = \n", "\\frac{B_k}{k}\\binom{-s}{k-1} x^{-s-k+1}, \\quad\n", "\\frac{B_n(x-\\lfloor x\\rfloor)}{n!}f^{(n)}(x) = \n", "\\binom{-s}{n}B_n(x-\\lfloor x\\rfloor)x^{-s-n}\n", "\\end{aligned}\n", "$$\n", "\n", "なので, 2以上の整数 $n$ について,\n", "\n", "$$\n", "\\begin{aligned}\n", "&\n", "\\zeta(s) = \\frac{1}{s-1} + \\frac{1}{2} - \n", "\\sum_{k=2}^n \\frac{B_k}{k}\\binom{-s}{k-1} + R_n,\n", "\\\\ &\n", "R_n = (-1)^{n-1}\\binom{-s}{n}\\int_1^\\infty B_n(x-\\lfloor x\\rfloor)x^{-s-n}\\,dx.\n", "\\end{aligned}\n", "$$\n", "\n", "積分 $R_n$ は $\\real s+n>1$ ならば絶対収束している. ゆえに, 複素平面全体に $\\zeta(s)$ を自然に拡張する方法(解析接続する方法)が得られた." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$\\ds \\sum_{k=1}^\\infty \\frac{1}{n^s}$ そのものではなく, $n=a$ から始まる無限和 $\\ds \\sum_{k=a}^\\infty \\frac{1}{n^s}=\\zeta(s)-\\sum_{n=1}^{a-1}\\frac{1}{n^s}$ にEuler-Maclaurinの和公式を適用すると,\n", "\n", "$$\n", "\\begin{aligned}\n", "&\n", "\\zeta(s) = \\sum_{n=1}^{a-1} \\frac{1}{n^s} - \\frac{a^{1-s}}{1-s} + \n", "\\frac{1}{2a^s} - \\sum_{k=2}^n \\frac{B_k}{k a^{s+k-1}}\\binom{-s}{k-1} + R_{n,a},\n", "\\\\ &\n", "R_{n,a} = (-1)^{n-1}\\binom{-s}{n}\\int_a^\\infty B_n(x-\\lfloor x\\rfloor)x^{-s-n}\\,dx.\n", "\\end{aligned}\n", "$$" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "A = -1.460354508809586812889499152515298012467229331012581490542886087825530529474572\n", "Z = -1.460354508809586812889499152515298012467229331012581490542886087825530529474503\n" ] } ], "source": [ "# 上の公式における ζ(s) - R_{n,a} の函数化\n", "\n", "# ζ(s) - R_{n,a} = Σ_{m=1}^{a-1} m^{-s} - a^{1-s}/(1-s) + 1/(2a^s)\n", "# - Σ_{k=2}^n B_k/(k a^{s+k-1}) binom(-s,k-1) (k is even)\n", "#\n", "function ApproxZeta(a, n, s)\n", " ss = float(big(s))\n", " z = zero(ss)\n", " z += (a ≤ 1 ? zero(ss) : sum(m->m^(-ss), 1:a-1)) # Σ_{m=1}^{a-1} m^{-s}\n", " z += -a^(1-ss)/(1-ss) # -a^{1-s}/(1-s)\n", " n == 0 && return z\n", " z += 1/(2*a^ss) # 1/(2a^s)\n", " n == 1 && return z\n", " z -= sum(k -> BB(k)/(k*a^(ss+k-1))*binom(-ss,k-1), 2:2:n)\n", " # -Σ_{k=2}^n B_k/(k a^{s+k-1}) binom(-s,k-1) (k is even)\n", "end\n", "\n", "A = ApproxZeta(40, 80, big\"0.5\")\n", "Z = zeta(big\"0.5\")\n", "@show A\n", "@show Z;" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$\\real s > 0$ のとき, \n", "\n", "$$\n", "\\frac{1}{2a^s} - \\sum_{k=2}^n \\frac{B_k}{k a^{s+k-1}}\\binom{-s}{k-1} + R_{n,a}\n", "$$\n", "\n", "は $a\\to\\infty$ で $0$ に収束するので,\n", "\n", "$$\n", "\\zeta(s) = \\lim_{a\\to\\infty}\\left(\\sum_{n=1}^{a-1} \\frac{1}{n^s} - \\frac{a^{1-s}}{1-s}\\right)\n", "\\quad (\\real s > 0)\n", "$$\n", "\n", "が成立することがわかる. これは, Dirichlet級数の部分和 $\\ds\\sum_{n=1}^{a-1}\\frac{1}{n^s}$ から補正項\n", "\n", "$$\n", "\\frac{a^{1-s}}{1-s}\n", "$$\n", "\n", "を引き去ってから, Dirichlet級数の総和を取れば, $0 < \\real s < 1$ でも収束して, $\\zeta(s)$ の正確な値が得られることを意味している." ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " 0.191314 seconds (143.69 k allocations: 9.440 MiB, 7.58% gc time, 44.93% compilation time)\n", " 0.055798 seconds (117.52 k allocations: 8.121 MiB, 98.91% compilation time)\n" ] }, { "data": { "image/png": "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", "image/svg+xml": [ "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n" ], "text/html": [ "" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 上の結果のプロット\n", "\n", "ApproxZeta0(a, s) = sum(n->n^(-s), 1:a-1) - a^(1-s)/(1-s)\n", "a = 100\n", "s = 0.05:0.01:0.95\n", "@time z = zeta.(s)\n", "@time w = ApproxZeta0.(a, s)\n", "plot(size=(400, 250), legend=:bottomleft, xlabel=\"s\")\n", "plot!(s, z, label=\"zeta(s)\", lw=2)\n", "plot!(s, w, label=\"Euler-Maclaurin sum for n=0, a=$a\", lw=2, ls=:dash)" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " 0.000062 seconds (4 allocations: 1.406 KiB)\n", " 0.062979 seconds (114.81 k allocations: 7.860 MiB, 94.18% compilation time)\n" ] }, { "data": { "image/png": "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", "image/svg+xml": [ "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n" ], "text/html": [ "" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# さらに項の数を1つ増やした場合のプロット\n", "\n", "# ζ(s) - R_{1,a} = Σ_{n=1}^{a-1} n^{-s} - a^{1-s}/(1-s) + 1/(2a^s)\n", "#\n", "ApproxZeta1(a, s) = sum(n->n^(-s), 1:a-1) - a^(1-s)/(1-s) + 1/(2*a^s)\n", "\n", "s = -0.95:0.01:0.5\n", "a = 10^3\n", "@time z = zeta.(s)\n", "@time w = ApproxZeta1.(a,s)\n", "plot(size=(400, 250), legend=:bottomleft, xlabel=\"s\")\n", "plot!(s, z, label=\"zeta(s)\", lw=2)\n", "plot!(s, w, label=\"Euler-Maclaurin sum for n=1, a=$a\", lw=2, ls=:dash)" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "13-element Vector{Tuple{Int64, Float64, Float64}}:\n", " (0, -0.5, -0.5)\n", " (-1, -0.08333333333333338, -0.08333333333333333)\n", " (-2, -0.0, -1.2954252832641667e-77)\n", " (-3, 0.008333333333333344, 0.008333333333333333)\n", " (-4, -0.0, -3.454467422037778e-77)\n", " (-5, -0.0039682539682539715, -0.003968253968253968)\n", " (-6, -0.0, 0.0)\n", " (-7, 0.004166666666666669, 0.004166666666666667)\n", " (-8, -0.0, 0.0)\n", " (-9, -0.00757575757575758, -0.007575757575757576)\n", " (-10, -0.0, -4.421718300208356e-75)\n", " (-11, 0.0210927960927961, 0.021092796092796094)\n", " (-12, -0.0, 0.0)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ " 0.000034 seconds (4 allocations: 592 bytes)\n", " 0.095275 seconds (216.85 k allocations: 13.766 MiB, 91.64% compilation time)\n", " 0.000105 seconds (4 allocations: 2.562 KiB)\n", " 0.053619 seconds (492.29 k allocations: 19.944 MiB, 27.20% gc time)\n" ] }, { "data": { "image/png": "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", "image/svg+xml": [ "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n" ], "text/html": [ "" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# さらに一般の場合のプロット\n", "#\n", "# Euler-Maclaurinの和公式で ζ(s) の負の s での値をぴったり近似できていることがわかる.\n", "\n", "[(-m, zeta(-m), Float64(ApproxZeta(2, 17, -m))) for m = 0:12] |> display\n", "\n", "n = 10\n", "s = -1.5:0.05:0.5\n", "a = 10\n", "@time z = zeta.(s)\n", "@time w = ApproxZeta.(a, n, s)\n", "P1 = plot(size=(400, 250), legend=:bottomleft, xlabel=\"s\")\n", "plot!(s, z, label=\"zeta(s)\", lw=2)\n", "plot!(s, w, label=\"Euler-Maclaurin sum for a=$a, n=$n\", lw=2, ls=:dash)\n", "\n", "n = 17\n", "s = -16:0.05:-2.0\n", "a = 2\n", "@time z = zeta.(s)\n", "@time w = ApproxZeta.(a, n, s)\n", "P2 = plot(size=(400, 250), legend=:topright, xlabel=\"s\")\n", "plot!(s, z, label=\"zeta(s)\", lw=2)\n", "plot!(s, w, label=\"Euler-Maclaurin sum for a=$a, n=$n\", lw=2, ls=:dash)" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "image/png": "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dDp9+PDhCKHMzMykpKS0tDQbG5sDBw4odE/Un56e3vjx48+fP3/p0qXJkye///77ZG+iurra2dnZ09MTIRQTE1NQUHD06FErK6t9+/b15DJgdebo6Ojj43Po0KFHjx59+eWX8oleioqKwsPDzczM+Hz+hQsX/v7777q6upUrVy5duvSlE8uQNOBMdwAAIKn78AcAAMhBYAEANAYEFgBAY0BgAQA0BgQWAEBjQGABADQGBBYAQGNAYAEANIau3PYOqDORSJSZmVlTU8PhcHg8nvpfzg1UBQILqFhycvKMGTMaGhqMjY2bmppwHE9OTu7FPeWALoBdQqBiy5YtGzJkSG1tbW1trUgkunr1qnw+GQAUQA8LqFhxcfGUKVPIO5hTqdRRo0apukZAfan7bA1A6z148OCHH35ISUkRCoVcLldD7+IFBgbM1gBUrL29fffu3cePH79z545UKo2NjT106BCMu4MuQWABdSEQCI4dO7Z06dKlS5fu3LlT1dUB6ggCC6gXPz8/V1dXXbgBEugFGHQHqtTQ0BAZGTl37lwvLy99ff3ExMTs7OxVq1apul5ATUFgAVVis9mBgYH79u0jb103aNCgvXv3zp8/X9X1AmoKdgkBABoDThwFAGgMCCwAgMaAwAIAaAwILACAxoDAAgBoDAgsAIDGgMACAGiM/we0LBOf7eeaegAAAABJRU5ErkJggg==", "image/svg+xml": [ "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n" ], "text/html": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "display(P1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "上と下のグラフを見ればわかるように, Euler-Maclaurinの和公式によって負の実数での $\\zeta$ 函数の値を非常によく近似できている. 実は $\\zeta(s)$ を実部が負の複素数まで拡張してもこの近似はうまく行っている." ] }, { "cell_type": "code", "execution_count": 25, "metadata": { "scrolled": false }, "outputs": [ { "data": { "image/png": "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", "image/svg+xml": [ "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n" ], "text/html": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "display(P2)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### ζ(2)の近似計算\n", "\n", "$\\ds\\zeta(2)=\\sum_{n=1}^\\infty \\frac{1}{n^2}$ を計算せよという問題は**Basel問題**と呼ばれているらしい. Basel問題はEulerによって1743年ころに解かれたらしい. Eulerがどのように考えたかについては次の文献を参照せよ.\n", "\n", "* 杉本敏夫, バーゼル問題とオイラー, 2007年8月23日, 数理解析研究所講究録, 第1583巻, 2008年, pp.159-167\n", "\n", "Eulerは $\\zeta(2)$ の近似値を自ら開発したEuler-Maclaurinの和公式を使って精密に計算したらしい.\n", "\n", "近似式\n", "\n", "$$\n", "\\zeta(s) \\approx\n", "\\sum_{n=1}^{a-1} \\frac{1}{n^s} - \\frac{a^{1-s}}{1-s} + \n", "\\frac{1}{2a^s} - \\sum_{k=2}^n \\frac{B_k}{k a^{s+k-1}}\\binom{-s}{k-1} \n", "$$\n", "\n", "を用いて, $\\zeta(2)$ を計算してみよう. 3以上の奇数 $n$ について $B_n=0$ となるので, $n=2m$ のとき, 右辺の項数は $a+m+1$ になる.\n", "\n", "例えば, $a=10$, $m=9$ とし, 20項の和を取ると,\n", "\n", "$$\n", "\\zeta(2) \\approx 1.64493\\;40668\\;4749\\cdots\n", "$$\n", "\n", "となり, 正確な値 $\\ds\\frac{\\pi^2}{6}=1.64493\\;40668\\;4822\\cdots$ と小数点以下第11桁まで一致している. \n", "\n", "Eulerは後に $\\ds\\zeta(2)=\\frac{\\pi^2}{6}$ を得る. Eulerは競争相手に議論に厳密性に欠けるとして様々な批判を受けたのだが, 以上のような数値計算の結果を知っていたので, 正解を得たという確信は微塵も揺らがなかっただろうと思われる." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**注意:** 論理的に厳密な証明の方法が発達した現代においても, 人間は常に証明を間違う可能性がある. 人間が行った証明は絶対的には信用できない. だから, たとえ証明が完成したと思っていたとしても, 可能ならば数値計算によって論理的に厳密な証明以外の証拠を作っていた方が安全だと思われる. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**注意:** 数学のノートを作りながら, 気軽に数値的証拠も同時に得るための道具として, 筆者がこのノート作成のために用いているJulia言語JupyterNbextensionsのLive Markdown Previewはこれを書いている時点で相当に優秀な道具であるように思われる. $\\QED$" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "8-element Vector{Tuple{Int64, Int64, Int64, BigFloat}}:\n", " (2, 17, 4, -5.77451793863474833797788940478358503699585407578399357681001619323664145261758e-11)\n", " (3, 16, 6, 4.808127352395625095013460112150325878389866054958153137408430487774776509324829e-13)\n", " (4, 15, 8, -8.630887513943044224615236465465206970650911046136527708026292186723865816966492e-15)\n", " (5, 14, 10, 3.116217978527385328054235573023871173466586797186396436897662720414552852297451e-16)\n", " (6, 13, 12, -2.200847274100542514575619216657515798396053843860275532661691594239630209744406e-17)\n", " (7, 12, 14, 3.035248943857815147777677383711316694019656935103319432181355248871820406062584e-18)\n", " (8, 11, 16, -8.335321043122531064769674746337938450627967961329547742403411230422546148897753e-19)\n", " (9, 10, 18, 4.746601814392005312714027578027970306539540935051342164737224161514796063021067e-19)" ] }, "metadata": {}, "output_type": "display_data" }, { "name": "stdout", "output_type": "stream", "text": [ "(a, m) = (10, 9)\n", "Z = 1.644934066848226436472415166646025189218949901206798437735558229370007470403185\n", "A = 1.644934066847493071302595112118921642731166540690350214159737969261778785588307\n" ] } ], "source": [ "# 20項の和\n", "\n", "N = 20\n", "[(m, N-m-1, 2m, ApproxZeta(N-m-1, 2m, 2) - big(π)^2/6) for m in 2:N÷2-1] |> display\n", "\n", "m = 9\n", "a = N-m-1\n", "Z = big(π)^2/6\n", "A = ApproxZeta(a, m, 2)\n", "@show a,m\n", "@show Z\n", "@show A;" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### s = 1でのζ(s)の定数項がEuler定数になること\n", "\n", "$\\zeta(s)=\\ds\\sum_{n=1}^\\infty \\frac{1}{n^s}$ にEuler-Maclaurinの和公式を使って, 2以上の $n$ について次の公式が得られるのであった:\n", "\n", "$$\n", "\\begin{aligned}\n", "&\n", "\\zeta(s) = \\frac{1}{s-1} + \\frac{1}{2} - \n", "\\sum_{k=2}^n \\frac{B_k}{k}\\binom{-s}{k-1} + R_n,\n", "\\\\ &\n", "R_n = (-1)^{n-1}\\binom{-s}{n}\\int_1^\\infty B_n(x-\\lfloor x\\rfloor)x^{-s-n}\\,dx.\n", "\\end{aligned}\n", "$$\n", "\n", "$n=1$ の場合には\n", "\n", "\\begin{aligned}\n", "\\sum_{j=a}^b f(j) &= \n", "\\int_a^b f(x)\\,dx + f(a) + \\int_a^b (x-\\lfloor x\\rfloor)f'(x)\\,dx\n", "\\\\ &=\n", "\\int_a^b f(x)\\,dx + f(a) + \\sum_{j=a}^{b-1}\\int_0^1 x f'(x+j)\\,dx\n", "\\end{aligned}\n", "\n", "を $f(x)=x^{-s}$, $f'(x)=-sx^{-s-1}$, $a=1$, $b=\\infty$ の場合に適用して,\n", "\n", "$$\n", "\\zeta(s) = \n", "\\frac{1}{s-1} + 1 - s\\sum_{j=1}^\\infty\\int_0^1 \\frac{x}{(x+j)^{s+1}}\\,dx\n", "$$\n", "\n", "を得る. したがって,\n", "\n", "$$\n", "\\lim_{s\\to 1}\\left(\\zeta(s)-\\frac{1}{s-1}\\right) =\n", "1 - \\sum_{j=1}^\\infty\\int_0^1 \\frac{x}{(x+j)^2}\\,dx.\n", "$$\n", "\n", "そして, $x=t-j$ と置換すると, \n", "\n", "$$\n", "\\begin{align}\n", "-\\int_0^1\\frac{x}{(x+j)^2}\\,dx &= \n", "-\\int_j^{j+1}\\frac{-(t-j)}{t^2}\\,dt = \n", "-\\left[\\log t + \\frac{j}{t}\\right]_j^{j+1} \n", "\\\\ &=\n", "-\\log(j+1)+\\log j -\\frac{j}{j+1}+1 =\n", "\\frac{1}{j+1} + \\log j - \\log(j+1)\n", "\\end{align}\n", "$$\n", "\n", "なので, これを $j=1$ から $j=N-1$ まで足し上げることによって,\n", "\n", "$$\n", "1 - \\sum_{j=1}^{n-1}\\int_0^1\\frac{x}{(x+j)^2}\\,dx =\n", "\\sum_{j=1}^N\\frac{1}{j} - \\log N.\n", "$$\n", "\n", "これの $N\\to\\infty$ での極限はEuler定数 $\\gamma=0.5772\\cdots$ の定義であった. 以上によって次が示された:\n", "\n", "$$\n", "\\lim_{s\\to 1}\\left(\\zeta(s)-\\frac{1}{s-1}\\right) = \\gamma = 0.5772\\cdots.\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 負の整数におけるゼータ函数の特殊値の計算\n", "\n", "Euler-Maclaurinの和公式: $3$ 以上の整数 $k$ について $B_k=0$ なので, 以下の公式で $k$ は偶数のみを動くとしてよい:\n", "\n", "$$\n", "\\begin{aligned}\n", "&\n", "\\sum_{n=a}^b f(n) = \n", "\\int_a^b f(x)\\,dx + \\frac{f(a)+f(b)}{2} + \n", "\\sum_{k=2}^m \\frac{B_k}{k!}(f^{(k-1)}(b) - f^{(k-1)}(a)) + R_m,\n", "\\\\ &\n", "R_n = (-1)^{m-1}\\int_a^b \\frac{\\tilde{B}_m(x)}{m!} f^{(m)}(x)\\,dx.\n", "\\end{aligned}\n", "$$\n", "\n", "ここで $\\tilde{B}_m(x)=B_m(x-\\lfloor x\\rfloor)$ とおいた.\n", "\n", "Euler-Maclaurinの和公式を $f(x)=n^{-s}$, $a=1$, $b=\\infty$ の場合に適用することによって $\\zeta(s)$ は次の形で $\\Re s > 1-m$ まで自然に延長(解析接続)されるのであった:\n", "\n", "$$\n", "\\zeta(s) = \n", "\\frac{1}{s-1} + \\frac{1}{2} -\n", "\\frac{1}{1-s}\\sum_{k=2}^m \\binom{1-s}{k} B_k + \n", "(-1)^{m-1}\\int_a^b \\binom{-s}{m} \\tilde{B}_m(x) x^{-s-m}\\,dx.\n", "$$\n", "\n", "この公式と $k\\geqq 2$ のとき $\\ds\\binom{1}{k}=0$ となることより, \n", "\n", "$$\n", "\\zeta(0) = \\frac{1}{0-1} + \\frac{1}{2} = -\\frac{1}{2}.\n", "$$\n", "\n", "$r$ は正の整数であるとする. このとき, $m>r$ とすると $\\ds\\binom{r}{m}=0$ となるので, $B_0=1$, $B_1=-1/2$ なので,\n", "\n", "$$\n", "\\begin{aligned}\n", "\\zeta(-r) &=\n", "-\\frac{1}{r+1} + \\frac{1}{2} -\n", "\\frac{1}{r+1}\\sum_{k=2}^{r+1} \\binom{m+1}{k} B_k\n", "\\\\ =&\n", "-\\frac{1}{r+1}\\sum_{k=0}^{r+1} \\binom{m+1}{k} B_k =\n", "-\\frac{B_{r+1}}{r+1}.\n", "\\end{aligned}\n", "$$\n", "\n", "最後の等号で, Bernoulli数を帰納的に計算するために使える公式 $\\ds\\sum_{k=0}^r \\binom{r+1}{k}B_k=0$ を用いた. 例えば, $r=1$ のとき $B_0+2B_1=1+2(-1/2)=0$ となり, $r=2$ のとき, $B_0+3B_1+3B_2=1+3(-1/2)+3(1/6)=0$ となる.\n", "\n", "以上によって次が証明された:\n", "\n", "$$\n", "\\zeta(0)=-\\frac{1}{2}, \\quad\n", "\\zeta(-r) = -\\frac{B_{r+1}}{r+1} \\quad (r=1,2,3,\\ldots).\n", "$$\n", "\n", "これらの公式は $B_n(1)=B_n+\\delta_{n,1}$, $B_1=-1/2$ を使うと, \n", "\n", "$$\n", "\\zeta(-r) = -\\frac{B_{r+1}(1)}{r+1} \\quad (r=0,1,2,\\ldots)\n", "$$\n", "\n", "の形にまとめられる." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 発散級数の有限部分と ζ(-r) の関係\n", "\n", "前節の結果 $\\ds\\zeta(-r)=-\\frac{B_{r+1}(1)}{r+1}$ ($r=0,1,2,\\ldots$) は\n", "\n", "$$\n", "\\begin{aligned}\n", "&\n", "1+1+1+1+\\cdots = -\\frac{1}{2},\n", "\\\\ &\n", "1+2+3+4+\\cdots = -\\frac{1}{12}\n", "\\end{aligned}\n", "$$\n", "\n", "のような印象的な形式で書かれることもある. ただし, その場合には左辺が通常の無限和ではなく, ゼータ函数 $\\zeta(s)$ の解析接続の意味であることを了解しておかなければいけない. \n", "\n", "実はさらに解析接続として理解するだけではなく, 「左辺の発散する無限和から適切に無限大を引き去れば右辺に等しくなる」というようなタイプの命題をうまく作ることもできる. 以下ではそのことを解説しよう.\n", "\n", "以下, $\\eta$ は非負の実数に値を持つ $\\R$ 上の**急減少函数**であると仮定する. ($\\R$ 上の急減少函数とは $\\R$ 上の $C^\\infty$ 函数でそれ自身およびそのすべての階数の導函数に任意の多項式函数をかけたものが $|x|\\to\\infty$ で $0$ に収束するもののことである.) さらに, \n", "\n", "$$\n", "\\eta(0)=1, \\quad \\eta'(0)=0\n", "$$\n", "\n", "と仮定する. 例えば $\\eta(x)=e^{-x^2}$ はそのような函数の例になっている.\n", "\n", "このとき, $\\eta(x)$ が急減少函数であることより, $N>0$ のとき, 級数\n", "\n", "$$\n", "\\sum_{n=1}^\\infty n^r \\eta(n/N) = 1^r\\eta(1/N) + 2^r\\eta(2/N) + 3^r\\eta(3/N) + \\cdots\n", "$$\n", "\n", "は常に絶対収束する. $r$ が非負の整数のとき, $N\\to\\infty$ とすると, この級数は発散級数 $1^r+2^r+3^r+\\cdots$ になってしまう. 以下の目標は, Euler-Maclaurinの和公式を使うと, その $N\\to\\infty$ での発散部分が $CN^{r+1}$ ($C$ は $\\eta$ と $r$ で具体的に決まる定数) の形にまとまることを示すことである. そして, 残った有限部分は**常に** $\\zeta(-r)$ に収束することも示される.\n", "\n", "$\\tilde{B}_n(x)=B_n(x-\\lfloor x\\rfloor)$ と書くことにする.\n", "\n", "このとき, $f(x)=\\eta(x/N)$ にEuler-Maclaurinの和公式を適用すると, $f(0)=1$, $f'(0)=f(\\infty)=f'(\\infty)=0$ より, \n", "$$\n", "\\begin{aligned}\n", "1+\\sum_{n=1}^\\infty\\eta(x/N) &= \n", "\\sum_{n=0}^\\infty\\eta(x/N) \n", "\\\\ &= \n", "\\int_0^\\infty\\eta(x/N)\\,dx + \\frac{1}{2} +B_2(f'(\\infty)-f'(0)) - \n", "\\int_0^\\infty\\frac{\\tilde{B}_2(x)}{2!}\\frac{1}{N^2}\\eta''(x/N)\\,dx\n", "\\\\ &=\n", "N\\int_0^\\infty\\eta(y)\\,dy + \\frac{1}{2} -\n", "\\frac{1}{N}\\int_0^\\infty\\frac{\\tilde{B}_2(Ny)}{2!}\\eta''(y)\\,dy.\n", "\\end{aligned}\n", "$$\n", "\n", "ゆえに, $\\zeta(0)=-1/2$ を使うと,\n", "\n", "$$\n", "\\sum_{n=1}^\\infty\\eta(x/N) - N\\int_0^\\infty\\eta(y)\\,dy =\n", "\\zeta(0) + O(1/N).\n", "$$\n", "\n", "これは $N\\to\\infty$ で発散級数 $1+1+1+1+\\cdots$ になる無限和 $\\ds \\sum_{n=1}^\\infty\\eta(x/N)$ から, その発散部分 $\\ds N\\int_0^\\infty\\eta(y)\\,dy$ を引き去って, $N\\to\\infty$ の極限を取ると, $\\zeta(0)$ に収束することを意味している. これが欲しい結果の1つ目である.\n", "\n", "$r$ は正の整数であるとし, $f(x)=x^r\\eta(x/N)$ とおく. そのとき, Leibnitz則\n", "\n", "$$\n", "(\\varphi(x) \\psi(x))^{(m)} = \\sum_{i=0}^r \\binom{m}{i}\\varphi^{(i)}(x)\\psi^{(m-i)}(x)\n", "$$\n", "\n", "を使うと,\n", "\n", "$$\n", "f^{(r+2)}(x) = \\frac{1}{N^2}F(x/N), \\quad\n", "F(y) = \\binom{r+2}{0}y^r\\eta^{(r+2)}(y) + \\cdots + \\binom{r+2}{r}r!\\eta(y)\n", "$$\n", "\n", "その $f(x)$ にEuler-Maclaurinの和公式を適用すると, $f^{(k)}(\\infty)=f^{(k)}(\\infty)=0$ および,\n", "\n", "$$\n", "f(0) = f'(0) = \\cdots = f^{(r-1)}(0) = f^{(r+1)}(0) = 0, \\quad\n", "f^{(r)}(0) = r!\n", "$$\n", "\n", "より, \n", "\n", "$$\n", "\\begin{aligned}\n", "\\sum_{n=1}^\\infty n^r\\eta(n/N) &=\n", "\\sum_{n=0}^\\infty f(n) =\n", "\\int_0^\\infty f(x)\\,dx - \\frac{B_{r+1}}{(r+1)!}r! - \\frac{B_{r+2}}{(r+2)!}0 + \n", "(-1)^{r+1}\\int_0^\\infty \\frac{\\tilde{B}_{r+2}(x)}{(r+2)!} f^{(r+2)}(x)\\,dx\n", "\\\\ &=\n", "N^{r+1}\\int_0^\\infty y^r\\eta(y)\\,dy - \\frac{B_{r+1}}{r+1} +\n", "(-1)^{r+1}\\frac{1}{N}\\int_0^\\infty \\frac{\\tilde{B}_{r+2}(Ny)}{(r+2)!} F(y)\\,dy\n", "\\\\ &=\n", "N^{r+1}\\int_0^\\infty y^r\\eta(y)\\,dy - \\frac{B_{r+1}}{r+1} + O(1/N).\n", "\\end{aligned}\n", "$$\n", "\n", "ゆえに, $\\ds\\zeta(-r)=-\\frac{B_{r+1}}{r+1}$ を使うと,\n", "\n", "$$\n", "\\sum_{n=1}^\\infty n^r\\eta(n/N) - N^{r+1}\\int_0^\\infty y^r\\eta(y)\\,dy =\n", "\\zeta(-r) + O(1/N).\n", "$$\n", "\n", "これは $N\\to\\infty$ で発散級数 $1^r+2^r+3^r+4^r+\\cdots$ になる無限和 $\\ds \\sum_{n=1}^\\infty n^r\\eta(x/N)$ から, その発散部分 $\\ds N^{r+1}\\int_0^\\infty y^r\\eta(y)\\,dy$ を引き去って, $N\\to\\infty$ の極限を取ると, $\\zeta(-r)$ に収束することを意味している. これが欲しい結果である." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**注意:** 以上の計算のポイントは, 非負の急減少函数 $\\eta(x)$ で $\\eta(0)=1$, $\\eta'(0)=0$ を満たすもので発散級数を正則化して得られる級数の場合には, Euler-Maclaurinの和公式の「途中の項」がほとんど消えてしまうことである. $C N^{r+1}$ 型の発散項と定数項と $O(1/N)$ の部分の3つの項しか生き残らない. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**注意:** 以上の結果に関するより進んだ解説については次のリンク先を参照せよ:\n", "\n", "* Terence Tao, The Euler-Maclaurin formula, Bernoulli numbers, the zeta function, and real-variable analytic continuation, Blog: What's new, 10 April, 2010.\n", "\n", "このブログ記事はかなり読み易い. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**問題:** 以上の結果を数値計算でも確認してみよ. $\\QED$\n", "\n", "**ヒント:** $\\eta(x)=e^{-x^2}$ の場合を試してみよ. そのとき,\n", "\n", "$$\n", "\\int_0^\\infty y^r\\eta(y)\\,dy = \n", "\\int_0^\\infty y^r e^{-y^2}\\,dy = \n", "\\frac{1}{2}\\Gamma\\left(\\frac{r+1}{2}\\right)\n", "$$\n", "\n", "となっている. $\\QED$\n", "\n", "**解答例:** 次のリンク先のノートを見よ.\n", "\n", "* 黒木玄, ζ(s) の Re s < 1 での様子 $\\QED$" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle \\frac{\\Gamma\\left(\\frac{r}{2} + \\frac{1}{2}\\right)}{2}$\n" ], "text/plain": [ " /r 1\\\n", "Gamma|- + -|\n", " \\2 2/\n", "------------\n", " 2 " ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "y = symbols(\"y\", real=true)\n", "r = symbols(\"r\", positive=true)\n", "integrate(y^r*exp(-y^2), (y, 0, oo))" ] } ], "metadata": { "@webio": { "lastCommId": null, "lastKernelId": null }, "_draft": { "nbviewer_url": "https://gist.github.com/8fc9304dd2dbc4c3ca61019c2a92e138" }, "gist": { "data": { "description": "13 Euler-Maclaurin summation formula.ipynb", "public": true }, "id": "8fc9304dd2dbc4c3ca61019c2a92e138" }, "jupytext": { "formats": "ipynb,md" }, "kernelspec": { "display_name": "Julia 1.9.1", "language": "julia", "name": "julia-1.9" }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", "version": "1.9.1" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": true, "title_cell": "目次", "title_sidebar": "目次", "toc_cell": true, "toc_position": { "height": "calc(100% - 180px)", "left": "10px", "top": "150px", "width": "217px" }, "toc_section_display": true, "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 2 }