{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 06 Taylorの定理\n", "\n", "黒木玄\n", "\n", "2018-04-20~2019-04-03, 2020-08-18, 2023-06-02~2023-09-15\n", "\n", "* Copyright 2018, 2019, 2020, 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/06%20Taylor%27s%20theorems.ipynb\n", "\n", "* https://genkuroki.github.io/documents/Calculus/06%20Taylor%27s%20theorems.pdf\n", "\n", "\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\\sinc{\\operatorname{sinc}}\n", "\\newcommand\\arctanh{\\operatorname{arctanh}}\n", "\\newcommand\\real{\\operatorname{Re}}\n", "\\newcommand\\imag{\\operatorname{Im}}\n", "\\newcommand\\Li{\\operatorname{Li}}\n", "\\newcommand\\PROD{\\mathop{\\coprod\\kern-1.35em\\prod}}\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", "default(fmt = :png)\n", "#gr(); ENV[\"PLOTS_TEST\"] = \"true\"\n", "#clibrary(:colorcet)\n", "#clibrary(:misc)\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": [ "## Taylorの定理\n", "\n", "$$\n", "f(x) = f(a) + f'(a)(x-a) + \\frac{1}{2}f''(a)(x-a)^2 + \\cdots + \\frac{1}{k!}f^{(k)}(a)(x-a)^k + \\cdots\n", "$$\n", "\n", "の最後の $+\\cdots$ の部分を $f$ の $k+1$ 階の導函数の式で書いた結果を**Taylorの定理**と呼ぶことにする. その表示の仕方には様々な形がある." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 積分型剰余項版Taylorの定理" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$f$ は $C^n$ 級函数であると仮定する. \n", "\n", "まず, $n=4$ の場合を例として扱う. そのとき\n", "\n", "$$\n", "f'''(x) = f'''(a) + \\int_a^x f^{(4)}(x_4)\\,dx_4.\n", "$$\n", "\n", "ゆえに\n", "\n", "$$\n", "\\begin{aligned}\n", "f''(x) &= \n", "f''(a) + \\int_a^x f'''(x_3)\\,dx_3\n", "\\\\ & =\n", "f''(a) + f'''(a)(x-a) + \\int_a^x\\left[\\int_a^{x_3} f^{(4)}(x_4)\\,dx_4\\right]\\,dx_3.\n", "\\end{aligned}\n", "$$\n", "\n", "括弧が増えると書くのが面倒になるので\n", "\n", "$$\n", "\\int_a^x dx_3\\int_a^{x_3} dx_4\\; f^{(4)}(x_4) :=\n", "\\int_a^x\\left[\\int_a^{x_3} f^{(4)}(x_4)\\,dx_4\\right]\\,dx_3\n", "$$\n", "\n", "と書くことにする. 積分が3重以上でも同様に書くことにする. そのように書くと, \n", "\n", "$$\n", "f''(x) = \n", "f''(a) + f'''(a)(x-a) + \\int_a^x dx_3\\int_a^{x_3} dx_4\\; f^{(4)}(x_4).\n", "$$\n", "\n", "ゆえに\n", "\n", "$$\n", "\\begin{aligned}\n", "f'(x) &= f'(a) + \\int_a^x dx_2\\,f''(x_2)\n", "\\\\ & =\n", "f'(a) + f''(a)(x-a) + \\frac{1}{2}f'''(a)(x-a)^2 + \n", "\\int_a^x dx_2\\int_a^{x_2}dx_3\\int_a^{x_3} dx_4\\; f^{(4)}(x_4).\n", "\\end{aligned}\n", "$$\n", "\n", "さらに, \n", "\n", "$$\n", "\\begin{aligned}\n", "f(x) &= f(a) + \\int_a^x dx_1\\,f'(x_1)\n", "\\\\ & =\n", "f(a) + f'(a)(x-a) + \\frac{1}{2}f''(a)(x-a)^2 + \\frac{1}{3!}f'''(a)(x-a)^3 +\n", "\\int_a^x dx_1 \\int_a^{x_1} dx_2\\int_a^{x_2}dx_3\\int_a^{x_3} dx_4\\; f^{(4)}(x_4).\n", "\\end{aligned}\n", "$$\n", "\n", "以上をまとめると, \n", "\n", "$$\n", "\\begin{aligned}\n", "&\n", "f(x) = f(a) + f'(a)(x-a) + \\frac{1}{2}f''(a)(x-a)^2 + \\frac{1}{3!}f'''(a)(x-a)^3 + R_4,\n", "\\\\ &\n", "R_4 = \\int_a^x dx_1 \\int_a^{x_1} dx_2\\int_a^{x_2}dx_3\\int_a^{x_3} dx_4\\; f^{(4)}(x_4).\n", "\\end{aligned}\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "上と同様にして次が成立することを示せる.\n", "\n", "**Taylorの定理:** $f$ は $C^n$ 級函数であると仮定する. そのとき, \n", "$$\n", "\\begin{aligned}\n", "&\n", "f(x) = f(a) + f'(a)(x-a) + \\frac{1}{2}f''(a)(x-a)^2 + \\cdots + \n", "\\frac{1}{(n-1)!}f^{(n-1)}(a)(x-a)^{n-1} + R_n,\n", "\\\\ &\n", "R_n = \\int_a^x dx_1 \\int_a^{x_1} dx_2\\cdots\\int_a^{x_{n-1}} dx_n\\; f^{(n)}(x_n).\n", "\\qquad \n", "\\end{aligned}\n", "$$\n", "\n", "$R_n$ を**剰余項**と呼ぶ. $\\QED$\n", "\n", "この形のTaylorの定理は $f^{(n)}(x)$ を何度も積分するだけで得られ, 技巧的な証明の工夫をする必要が一切ない.\n", "\n", "**問題:** 上の形のTaylorの定理の証明を完成せよ. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 積分型剰余項の絶対値の上からの評価\n", "\n", "以下, $a$ と $x$ のあいだの $t$ について $|f^{(n)}(t)|\\leqq M$ が成立しているとき, \n", "\n", "$$\n", "|R_n| \\leqq \\left|\\int_a^x dx_1 \\int_a^{x_1} dx_2\\cdots\\int_a^{x_{n-1}} dx_n\\; M \\right| = \n", "\\frac{1}{n!}M |x-a|^n.\n", "$$\n", "\n", "ここで, \n", "\n", "$$\n", "\\int_a^x dx_1 \\int_a^{x_1} dx_2\\cdots\\int_a^{x_{n-1}} dx_n\\;1 = \\frac{1}{n!}(x-a)^n\n", "$$\n", "\n", "となることを使った. $1$ を $a$ から $x$ まで積分する操作を $n$ 回繰り返すとそうなることは容易に確かめられる.\n", "\n", "$$\n", "|R_n| \\leqq \\frac{M |x-a|^n}{n!}\n", "$$\n", "\n", "の形の不等式はよく使われる." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 積分型剰余項の書き直し: 1重積分表示\n", "\n", "**定理:**\n", "$$\n", "R_n = \\int_a^x f^{(n)}(x_n) \\frac{(x-x_n)^{n-1}}{(n-1)!}\\,dx_n.\n", "$$\n", "\n", "もしくは $x_n$ を $t$ と書き直すことによって, \n", "\n", "$$\n", "R_n = \\int_a^x f^{(n)}(t) \\frac{(x-t)^{n-1}}{(n-1)!}\\,dt.\n", "$$\n", "\n", "**証明:** 簡単のため $ax$ の場合も同様である). そのとき, 積分\n", "\n", "$$\n", "R_n = \\int_a^x dx_1 \\int_a^{x_1} dx_2\\cdots\\int_a^{x_{n-1}} dx_n\\; f^{(n)}(x_n)\n", "$$\n", "\n", "の中の $x_i$ たちは $a\\leqq x_n \\leqq x_{n-1}\\leqq\\cdots x_2 \\leqq x_1 \\leqq x$ を動く. ゆえに, この積分は\n", "\n", "$$\n", "R_n = \\int_a^x\\left[\\,\n", "f^{(n)}(x_n)\n", "\\int_{x_n}^x dx_1\\int_{x_n}^{x_1}dx_2\\cdots\\int_{x_n}^{x_{n-2}}dx_{n-1}\\; 1\n", "\\right]\\,dx_n\n", "$$\n", "\n", "\n", "と書き直される. そして, \n", "\n", "$$\n", "\\int_{x_n}^x dx_1\\int_{x_n}^{x_1}dx_2\\cdots\\int_{x_n}^{x_{n-2}}dx_{n-1}\\; 1 = \n", "\\frac{(x-x_n)^{n-1}}{(n-1)!}\n", "$$\n", "\n", "なので上の定理が得られる. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__系:__\n", "$$\n", "R_n = (x-a)^n \\int_0^1 f^{(n)}(a + (x-a)t) \\frac{(1-t)^{n-1}}{(n-1)!}\\,dt.\n", "$$\n", "\n", "__証明:__ 上の定理で得た公式中の積分変数 $x_n$ を $x_n = a + (x-a)t = (1-t)a+tx$ によって $t$ に変換すると, $x_n$ を $a$ から $x$ まで動かすことは $t$ を $0$ から $1$ まで動かすことに対応し, $dx_n = (x-a)\\,dt$, $x - x_n = (1-t)(x-a)$ なので, \n", "\n", "$$\n", "\\begin{aligned}\n", "R_n\n", "&= \\int_0^1 f^{(n)}(a + (x-a)t) \\frac{(1-t)^{n-1}(x-a)^{n-1}}{(n-1)!}\\,(x-a)\\,dt\n", "\\\\\n", "&= (x-a)^n \\int_0^1 f^{(n)}(a + (x-a)t) \\frac{(1-t)^{n-1}}{(n-1)!}\\,dt.\n", "\\qquad \\QED\n", "\\end{aligned}\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**注意:** $f$ が $C^{n+1}$ 級函数ならば, 上の定理の $n$ の場合の結果から, 部分積分によって\n", "\n", "$$\n", "R_n = f^{(n)}(a)\\frac{(x-a)^n}{n!} + R_{n+1}\n", "$$\n", "\n", "が得られる(問題: 示してみよ). ゆえに, 部分積分を用いた $n$ に関する帰納法によっても上の定理を示せる. 部分積分を用いる計算法はよく使われる. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**注意:** $f$ は $C^n$ 級であるとする. 剰余項 $R_n$ の1重積分を以下のようにしてシンプルに求めることもできる. $x$, $a$ を固定し, 函数 $R_n(t)$ を次のように定める:\n", "\n", "$$\n", "R_n(t) = f(x) - \\sum_{k=0}^{n-1}f^{(k)}(t)\\frac{(x-t)^k}{k!}.\n", "$$\n", "\n", "このとき, \n", "\n", "$$\n", "\\begin{aligned}\n", "R_n'(t) &= -\n", "\\sum_{k=0}^{n-1}f^{(k+1)}(t)\\frac{(x-t)^k}{k!} +\n", "\\sum_{k=1}^{n-1}f^{(k)}(t)\\frac{(x-t)^{k-1}}{(k-1)!}\n", "\\\\ &= -\n", "\\sum_{k=1}^{n}f^{(k)}(t)\\frac{(x-t)^{k-1}}{(k-1)!} +\n", "\\sum_{k=1}^{n-1}f^{(k)}(t)\\frac{(x-t)^{k-1}}{(k-1)!}\n", "\\\\ &= -\n", "f^{(n)}(t)\\frac{(x-t)^{n-1}}{(n-1)!},\n", "\\\\\n", "R_n(x) &= 0, \n", "\\\\\n", "R_n(a) &= R_n\n", "\\end{aligned}\n", "$$\n", "\n", "なので\n", "\n", "$$\n", "R_n = R_n(a) =\n", "\\int_x^a\\left(-f^{(n)}(t)\\frac{(x-t)^{n-1}}{(k-1)!}\\right)\\,dt =\n", "\\int_a^x f^{(n)}(t)\\frac{(x-t)^{n-1}}{(k-1)!}\\,dt.\n", "$$\n", "\n", "おそらく, Taylorの定理を証明する最も簡単な方法は $R_n(t)$ を上のように定義して, $t$ で微分することである. この方法の欠点は $R_n(t)$ の定義を天下り的に与えなければいけないことである. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 積分型剰余項の書き直し: Lagrangeの剰余項\n", "\n", "一時的に簡単のため $ax$ で置き換えると, $a<\\xi\\xi>x$ に変わる.\n", "\n", "以上で導出した剰余項の\n", "\n", "$$\n", "R_n = f^{(n)}(\\xi)\\frac{(x-a)^n}{n!}, \\quad a{< \\atop >}\\xi{<\\atop >}x \n", "$$\n", "\n", "の形もよく使われる. この形の剰余項を**Lagrangeの剰余項**と呼ぶらしい." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "__例:__ $f(x)=\\sqrt{x}$, $x=10$, $a=9$, $n=2$ の場合. $n=2$ の場合のTaylorの公式は\n", "\n", "$$\n", "f(x) = f(a) + f'(a)(x-a) + R_2.\n", "$$\n", "\n", "そして, 上の($*$)より, $f''(t)$ の $a\\leqq t\\leqq x$ での最小値と最大値をそれぞれ $f''(\\alpha)$, $f''(\\beta)$ と書くと,\n", "\n", "$$\n", "f''(\\alpha)\\frac{(x-a)^2}{2} \\leqq R_2 \\leqq f''(\\beta)\\frac{(x-a)^2}{2}.\n", "$$\n", "\n", "$f(x)=\\sqrt{x}$, $0x$ で置き換えると, $a<\\xi\\xi>x$ に変わる.\n", "\n", "以上で導出した剰余項の\n", "\n", "$$\n", "R_n = f^{(n)}(\\xi)\\frac{(x-\\xi)^{n-1}(x-a)}{(n-1)!}, \\quad a{< \\atop >}\\xi{<\\atop >}x \n", "$$\n", "\n", "の形もよく使われる. この形の剰余項を**Cauchyの剰余項**と呼ぶらしい." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Landau記号を用いたTaylorの定理\n", "\n", "$C^n$ 級函数 $f$ について $a$ と $x$ のあいだのある実数 $\\xi$ で\n", "\n", "$$\n", "R_n = f^{(n)}(\\xi)\\frac{(x-a)^n}{n!}\n", "$$\n", "\n", "を満たすものが存在することを上で示した. $f^{(n)}$ は連続なので $x\\to a$ のとき $f^{(n)}(\\xi)\\to f^{(n)}(a)$ となる. ゆえに\n", "\n", "$$\n", "R_n - f^{(n)}(a)\\frac{(x-a)^n}{n!} = (f^{(n)}(\\xi) - f^{(n)}(a))\\frac{(x-a)^n}{n!} = o((x-a)^n)\n", "\\quad (x\\to a).\n", "$$\n", "\n", "これで次が成立することがわかった:\n", "\n", "$$\n", "f(x) = f(a) + f'(a)(x-a) + \\frac{1}{2}f''(a)(x-a)^2 + \\cdots + \n", "\\frac{1}{n!}f^{(n)}(a)(x-a)^n + o((x-a)^n)\n", "\\quad (x\\to a).\n", "$$\n", "\n", "Taylorの定理はこの形でもよく使われる.\n", "\n", "さらに $f$ が $C^{n+1}$ 級ならば, $n+1$ 次の剰余項は\n", "\n", "$$\n", "R_{n+1} = \\frac{1}{(n+1)!}f^{(n+1)}(\\xi)(x-a)^{n+1} = O((x-a)^{n+1}), \\quad\n", "\\text{($\\xi$ は $a$ と $x$ のあいだにある)}\n", "$$\n", "\n", "の形をしているので, \n", "\n", "$$\n", "f(x) = f(a) + f'(a)(x-a) + \\frac{1}{2}f''(a)(x-a)^2 + \\cdots + \n", "\\frac{1}{n!}f^{(n)}(a)(x-a)^n + O((x-a)^{n+1})\n", "\\quad (x\\to a).\n", "$$\n", "\n", "も成立していることがわかる." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### $n$ 回微分可能性だけを仮定した場合のTaylorの定理について\n", "\n", "以上では $C^n$ 級の仮定のもとでTaylorの定理を証明したが, $n$ 回微分可能の仮定のもとでもTaylorの定理を導くことができる. 例えば, \n", "\n", "* 高木貞治『解析概論』改定第三版\n", "\n", "の第25節のpp.61-63に詳しい説明がある.\n", "\n", "以下ではその議論をさらに整理したものを簡単に解説する." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$f$ は $n$ 回微分可能な函数であると仮定し, $x\\ne a$ を固定し, $t$ の函数 $R_n(t)$ と剰余項 $R_n$ を\n", "\n", "$$\n", "R_n(t) = f(x) - \\sum_{k=0}^{n-1}f^{(k)}(t)\\frac{(x-t)^k}{k!}, \\quad R_n = R_n(a)\n", "$$\n", "\n", "と定める. $f$ が $n$ 回微分可能であることより, $R_n(t)$ は微分可能になり, \n", "\n", "$$\n", "\\begin{aligned}\n", "R_n'(t) &= -\n", "\\sum_{k=0}^{n-1}f^{(k+1)}(t)\\frac{(x-t)^k}{k!} +\n", "\\sum_{k=1}^{n-1}f^{(k)}(t)\\frac{(x-t)^{k-1}}{(k-1)!}\n", "\\\\ &= -\n", "\\sum_{k=1}^{n}f^{(k)}(t)\\frac{(x-t)^{k-1}}{(k-1)!} +\n", "\\sum_{k=1}^{n-1}f^{(k)}(t)\\frac{(x-t)^{k-1}}{(k-1)!}\n", "\\\\ &= -\n", "f^{(n)}(t)\\frac{(x-t)^{n-1}}{(n-1)!},\n", "\\\\\n", "R_n(x) &= 0, \n", "\\\\\n", "R_n(a) &= R_n\n", "\\end{aligned}\n", "$$\n", "\n", "が成立している. ゆえに $R_n(t)$ と $G(t)=(x-t)^p$ ($p=1,\\ldots,n$) にCauchyの平均値の定理を適用すると, $a$ と $x$ のあいだにある実数 $\\xi$ で次を満たすものが存在することがわかる:\n", "\n", "$$\n", "\\frac{R_n}{(x-a)^p} =\n", "\\frac{R_n(a)-R_n(x)}{G(a)-G(x)} =\n", "\\frac{R_n'(\\xi)}{G'(\\xi)} =\n", "f^{(n)}(\\xi)\\frac{(x-\\xi)^{n-p}}{p(n-1)!}.\n", "$$\n", "\n", "このとき\n", "\n", "$$\n", "R_n = f^{(n)}(\\xi)\\frac{(x-\\xi)^{n-p}(x-a)^p}{p(n-1)!}.\n", "$$\n", "\n", "これの $p=1$ の場合がCauchyの剰余項で, $p=n$ の場合がLagrangeの剰余項である.\n", "\n", "以上は議論は, $f^{(n-1)}$ が $C^1$ 級の場合の積分を使った議論を, $f^{(n-1)}$ が微分可能なだけで使えるCauchyの平均値の定理に置き換えただけであるとも言える. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Taylor展開\n", "\n", "$C^\\infty$ 函数 $f$ について, ある $r>0$ が存在して, \n", "\n", "$$\n", "f(x) = \\sum_{k=0}^\\infty \\frac{1}{k!}f^{(k)}(a)(x-a)^k\n", "$$\n", "\n", "が $|x-a| display\n", "end\n", "sympy.init_printing(order=\"lex\") # default\n", "\n", "x = symbols(\"x\")\n", "series(tan(x), n=10)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle x - \\frac{x^{3}}{6} + \\frac{x^{5}}{120} + O\\left(x^{7}\\right)$\n" ], "text/plain": [ " 3 5 \n", " x x / 7\\\n", "x - -- + --- + O\\x /\n", " 6 120 " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/latex": [ "$\\displaystyle 1 + \\frac{x^{2}}{2} + \\frac{5 x^{4}}{24} + O\\left(x^{6}\\right)$\n" ], "text/plain": [ " 2 4 \n", " x 5*x / 6\\\n", "1 + -- + ---- + O\\x /\n", " 2 24 " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/latex": [ "$\\displaystyle x + \\frac{x^{3}}{3} + \\frac{2 x^{5}}{15} + O\\left(x^{7}\\right)$\n" ], "text/plain": [ " 3 5 \n", " x 2*x / 7\\\n", "x + -- + ---- + O\\x /\n", " 3 15 " ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s = series(sin(x), n=7)\n", "cinv = series(1/cos(x), n=6)\n", "display(s)\n", "display(cinv)\n", "expand(s * cinv)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**問題:** $\\tanh x = (\\sinh x)/(\\cosh x)$ の $x=0$ でのTaylor展開 $5$ 次の項まで求めよ.\n", "\n", "**解答例:** $f(x)=\\tanh x$ とおくと $f'= 1 - \\tanh^2 x = 1 - f^2$ となので, \n", "\n", "$$\n", "\\begin{aligned}\n", "&\n", "f'' = -2ff' = -2f + 2f^3,\n", "\\\\ &\n", "f''' = -2f' + 6f^2f' = -2 + 8f^2 - 6f^4,\n", "\\\\ &\n", "f^{(4)} = 16ff' - 24f^3f' = 16f - 40f^3 + 24f^5,\n", "\\\\ &\n", "f^{(5)} = 16f' - 120f^2f' + 120f^4f' = 16 - 136f^2 + 240f^4 - 120f^6.\n", "\\end{aligned}\n", "$$\n", "\n", "ゆえに\n", "\n", "$$\n", "f(0)=f''(0)=f^{(4)}(0)=0, \\quad\n", "f'(0)=1, \\quad f'''(0)=-2, \\quad f^{(5)}(0)=16. \n", "$$\n", "\n", "したがって, \n", "\n", "$$\n", "\\tanh x = f(x)\n", "= x - \\frac{2}{3!}x^3 + \\frac{16}{5!}x^5 + \\cdots\n", "= x - \\frac{1}{3}x^3 + \\frac{2}{15}x^5 + \\cdots.\n", "\\qquad\\QED\n", "$$" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle \\tanh{\\left(x \\right)}$\n" ], "text/plain": [ "tanh(x)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/latex": [ "$\\displaystyle 1 - \\tanh^{2}{\\left(x \\right)}$\n" ], "text/plain": [ " 2 \n", "1 - tanh (x)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/latex": [ "$\\displaystyle - 2 \\tanh{\\left(x \\right)} + 2 \\tanh^{3}{\\left(x \\right)}$\n" ], "text/plain": [ " 3 \n", "-2*tanh(x) + 2*tanh (x)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/latex": [ "$\\displaystyle -2 + 8 \\tanh^{2}{\\left(x \\right)} - 6 \\tanh^{4}{\\left(x \\right)}$\n" ], "text/plain": [ " 2 4 \n", "-2 + 8*tanh (x) - 6*tanh (x)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/latex": [ "$\\displaystyle 16 \\tanh{\\left(x \\right)} - 40 \\tanh^{3}{\\left(x \\right)} + 24 \\tanh^{5}{\\left(x \\right)}$\n" ], "text/plain": [ " 3 5 \n", "16*tanh(x) - 40*tanh (x) + 24*tanh (x)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/latex": [ "$\\displaystyle 16 - 136 \\tanh^{2}{\\left(x \\right)} + 240 \\tanh^{4}{\\left(x \\right)} - 120 \\tanh^{6}{\\left(x \\right)}$\n" ], "text/plain": [ " 2 4 6 \n", "16 - 136*tanh (x) + 240*tanh (x) - 120*tanh (x)" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/latex": [ "$\\displaystyle x - \\frac{x^{3}}{3} + \\frac{2 x^{5}}{15} - \\frac{17 x^{7}}{315} + \\frac{62 x^{9}}{2835} + O\\left(x^{10}\\right)$\n" ], "text/plain": [ " 3 5 7 9 \n", " x 2*x 17*x 62*x / 10\\\n", "x - -- + ---- - ----- + ----- + O\\x /\n", " 3 15 315 2835 " ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x = symbols(\"x\")\n", "sympy.init_printing(order=\"rev-lex\")\n", "for k in 0:5\n", " expand(diff(tanh(x), x, k)) |> display\n", "end\n", "sympy.init_printing(order=\"lex\") # default\n", "\n", "x = symbols(\"x\")\n", "series(tanh(x), n=10)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle x + \\frac{x^{3}}{6} + \\frac{x^{5}}{120} + O\\left(x^{7}\\right)$\n" ], "text/plain": [ " 3 5 \n", " x x / 7\\\n", "x + -- + --- + O\\x /\n", " 6 120 " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/latex": [ "$\\displaystyle 1 - \\frac{x^{2}}{2} + \\frac{5 x^{4}}{24} + O\\left(x^{6}\\right)$\n" ], "text/plain": [ " 2 4 \n", " x 5*x / 6\\\n", "1 - -- + ---- + O\\x /\n", " 2 24 " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/latex": [ "$\\displaystyle x - \\frac{x^{3}}{3} + \\frac{2 x^{5}}{15} + O\\left(x^{7}\\right)$\n" ], "text/plain": [ " 3 5 \n", " x 2*x / 7\\\n", "x - -- + ---- + O\\x /\n", " 3 15 " ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "s = series(sinh(x), n=7)\n", "cinv = series(1/cosh(x), n=6)\n", "display(s)\n", "display(cinv)\n", "expand(s * cinv)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**問題:** $e=e^1$ の値を $e^x$ のMaclaurin展開を用いて誤差100万の1以下で正確に計算するためには $\\ds\\sum_{k=0}^9 \\frac{1}{k!}$ を計算すれば十分であることを示せ. $e<3$ と $10!=3628800$ を認めて使ってよい.\n", "\n", "**解答例:** Taylorの定理より, $0$ と $1$ のあいだにある実数 $\\xi$ で次を満たすものが存在する.\n", "\n", "$$\n", "e^1 = \\sum_{k=0}^9\\frac{1}{k!} + \\frac{e^\\xi}{10!}, \\quad\n", "\\frac{e^\\xi}{10!} < \\frac{e}{10!} < \\frac{3}{3000000} = \\frac{1}{10^6}.\n", "$$\n", "\n", "不等式は $\\xi<1$ と $e<3$, $10!>3000000$ より得られる. これで示すべきことが示された. $\\QED$\n", "\n", "Taylorの定理を使えば誤差項の大きさを上から評価できる." ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(2.7182815255731922, 2.718281828459045)" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sum(1/factorial(k) for k in 0:9), exp(1)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "次の問題の解答例のように, Taylorの定理の剰余項を用いるのではなく, Taylor展開の残りの部分の総和を上から評価することによって誤差項を評価することもできる.\n", "\n", "**問題:** $\\log 2$ を小数点以下第2桁まで求めよ.\n", "\n", "**解答例:** $|x|<1$ とし, \n", "\n", "$$\n", "f(x) = \\log \\frac{1+x}{1-x} = \\log(1+x)-\\log(1-x) =\n", "2\\left(x + \\frac{x^3}{3} + \\frac{x^5}{5} + \\cdots\\right)\n", "$$\n", "\n", "とおくと, $0\\leqq x<1$ のとき\n", "\n", "$$\n", "\\begin{aligned}\n", "&\n", "f(x) = 2\\sum_{k=0}^{n-1} \\frac{x^{2k+1}}{2k+1} + R_{2n+1},\n", "\\\\ &\n", "0 \\leqq\n", "R_{2n+1} =\n", "2\\sum_{k=n}^\\infty \\frac{x^{2k+1}}{2k+1} =\n", "\\frac{2x^{2n+1}}{2n+1}\\sum_{k=n}^\\infty \\frac{2n+1}{2k+1} x^{2k+1-(2n+1)}\n", "\\\\ & \\;\\;\\leqq\n", "\\frac{2x^{2n+1}}{2n+1}\\sum_{j=0}^\\infty x^{2j} =\n", "\\frac{2x^{2n+1}}{2n+1}\\frac{1}{1-x^2}.\n", "\\end{aligned}\n", "$$\n", "\n", "ゆえに, $n=2$, $\\ds x=\\frac{1}{3}$ のとき, \n", "\n", "$$\n", "\\begin{aligned}\n", "&\n", "\\log 2 = f\\left(\\frac{1}{3}\\right) = \n", "f(x) = \\alpha + R_5, \n", "\\\\ &\n", "\\alpha = 2\\left(\\frac{1}{3} + \\frac{(1/3)^3}{3}\\right) = 0.69135802\\cdots, \n", "\\\\ &\n", "0\\leqq R_5\\leqq \\frac{9}{4}\\frac{(1/3)^5}{5} = \\frac{1}{540} = 0.00185185\\cdots\n", "\\end{aligned}\n", "$$\n", "\n", "これより, $\\log 2 = 0.69\\cdots$ であることがわかる. $\\QED$\n", "\n", "**注意:** $\\ds y = f(x) = \\log\\frac{1+x}{1-x}$ は $\\ds x = \\frac{e^y-1}{e^y+1} = \\frac{e^{y/2}-e^{-y/2}}{e^{y/2}+e^{-y/2}} = \\tanh\\frac{y}{2}$ の逆函数である. すなわち\n", "\n", "$$\n", "\\arctanh x = \\frac{1}{2}\\log\\frac{1+x}{1-x} = \\sum_{k=0}^\\infty \\frac{x^{2k+1}}{2k+1}.\n", "\\qquad \\QED\n", "$$\n", "\n", "**注意(70%ルール):** $\\log 2 = 0.69314718\\cdots$ が $0.7$ に近いことはよく以下のように使われる. 年利 $r$ パーセントの金利で資産を運用するとき, 約 $70/r$ 年後に資産は倍になる:\n", "\n", "$$\n", "\\left(1+\\frac{r}{100}\\right)^{70/r} \\approx 2.\n", "$$\n", "\n", "例えば $r$ が $5$ パーセントのとき $1.05^{70/5}=1.97993\\cdots$. $r$ が $7$ パーセントのとき $1.07^{70/7}=1.96715\\cdots$. 確かにほぼ $2$ になっている. このような形で $100\\log 2\\approx 70$ は我々の金融社会の中で便利に利用されている. $\\QED$\n", "\n", "**問題:** 70%ルールの概算法がうまく行く理由を説明せよ.\n", "\n", "**解答例:** $\\log 2 \\approx 0.7$ と近似すると, $\\ds\\left(1+\\frac{r}{100}\\right)^x \\approx e^{rx/100} = 2$ を満たす $x$ は $\\ds x = \\frac{100\\log 2}{r} \\approx \\frac{70}{r}$ で概算可能である. $\\QED$" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle 2 x + \\frac{2 x^{3}}{3}$\n" ], "text/plain": [ " 3\n", " 2*x \n", "2*x + ----\n", " 3 " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/plain": [ "(0.6931471805599453, 0.6931471805599452, 0.691358024691358, 0.0017891558685871889, 0.0018518518518518515)" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f(x) = log((1+x)/(1-x))\n", "g(n,x) = 2*sum(k->x^(2k+1)/(2k+1), 0:n-1)\n", "R(n,x) = 2*x^(2n+1)/(2n+1)/(1-x^2)\n", "\n", "sympy.init_printing(order=\"rev-lex\")\n", "x = symbols(\"x\", positive=true)\n", "g(2, x) |> display\n", "sympy.init_printing(order=\"lex\") # default\n", "\n", "n = 2\n", "y = 2\n", "x = (y-1)/(y+1)\n", "log(y), f(x), g(n,x), f(x) - g(n,x), R(n,x)" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(0.6931471805599453, 0.6931471805599452, 0.6930041152263374, 0.0001430653336077503, 0.00014697236919459136)" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f(x) = log((1+x)/(1-x))\n", "g(n,x) = 2*sum(k->x^(2k+1)/(2k+1), 0:n-1)\n", "R(n,x) = 2*x^(2n+1)/(2n+1)/(1-x^2)\n", "\n", "n = 3\n", "y = 2\n", "x = (y-1)/(y+1)\n", "log(y), f(x), g(n,x), f(x) - g(n,x), R(n,x)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**問題:** 少し上の方でやった計算と同様の方法で $\\log 1.5$ を小数点以下第3桁まで計算せよ. $\\QED$" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(0.4054651081081644, 0.4054651081081642, 0.4053333333333334, 0.00013177477483083955, 0.0001333333333333334)" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f(x) = log((1+x)/(1-x))\n", "g(n,x) = 2*sum(k->x^(2k+1)/(2k+1), 0:n-1)\n", "R(n,x) = 2*x^(2n+1)/(2n+1)/(1-x^2)\n", "\n", "n = 2\n", "y = 1.5\n", "x = (y-1)/(y+1)\n", "log(y), f(x), g(n,x), f(x) - g(n,x), R(n,x)" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(0.4054651081081644, 0.4054651081081642, 0.4054613333333334, 3.774774830822558e-6, 3.8095238095238115e-6)" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f(x) = log((1+x)/(1-x))\n", "g(n,x) = 2*sum(k->x^(2k+1)/(2k+1), 0:n-1)\n", "R(n,x) = 2*x^(2n+1)/(2n+1)/(1-x^2)\n", "\n", "n = 3\n", "y = 1.5\n", "x = (y-1)/(y+1)\n", "log(y), f(x), g(n,x), f(x) - g(n,x), R(n,x)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**問題:** $\\arcsin x$, $\\arctan x$ の $x=0$ でのTaylor展開の $x\\to 1$ の極限を取ることによって\n", "\n", "$$\n", "\\frac{\\pi}{2} = \\sum_{k=0}^\\infty\\frac{1}{2^{2k}}\\frac{(2k)!}{(k!)^2}\\frac{1}{2k+1}, \\quad\n", "\\frac{\\pi}{4} = \\sum_{k=0}^\\infty\\frac{(-1)^k}{2k+1}\n", "$$\n", "\n", "が得られることを確認せよ. $\\QED$\n", "\n", "解答略. 次の節におけるコンピューターによる計算例も参照せよ." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**問題:** $\\R$ 上の $C^\\infty$ 函数 $f(x)$ で, 任意の実数 $x$ について $\\ds \\sum_{n=0}^\\infty \\frac{1}{n!}f^{(n)}(0)x^n$ が収束しているのに, その収束先が $x\\ne0$ のとき $f(x)$ と一致しないものが存在する. そのような $f(x)$ の例を1つ挙げよ.\n", "\n", "**解答例:** $f(x)$ を\n", "\n", "$$\n", "f(x) = \\begin{cases}\n", "\\exp(-1/|x|) & (x\\ne 0) \\\\\n", "0 & (x=0)\n", "\\end{cases}\n", "$$\n", "\n", "と定めると, $f$ は $C^\\infty$ 函数でかつ $f^{(n)}(0)=0$ ($n=0,1,2,\\ldots$) となることを示せる(自分で示してみよ). ゆえにそのとき, $\\ds \\sum_{n=0}^\\infty \\frac{1}{n!}f^{(n)}(0)x^n$ は常に $0$ に収束する. しかし, $x\\ne 0$ のとき $f(x)>0$ なので収束先の $0$ は $f(x)$ に一致しない. $\\QED$" ] }, { "cell_type": "code", "execution_count": 18, "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" ], "text/html": [ "" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f(x) = x == 0 ? zero(x) : exp(-1/abs(x))\n", "x = -2:0.001:2\n", "plot(x, f.(x), label=\"y = f(x)\", size=(400,250), legend=:top)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### コンピューターを用いた計算例\n", "\n", "私が個人的に知る限りの範囲内では, 手計算もきちんとできる人の方がコンピューターを上手に使っている場合が多い. おそらく, その人自身がコンピューターを頼らなくてもある程度の計算ができるおかげで, コンピューターを使った人間には不可能な計算の価値をよく理解できるからなのだろう." ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle 1 + x + \\frac{x^{2}}{2} + \\frac{x^{3}}{6} + \\frac{x^{4}}{24} + \\frac{x^{5}}{120} + \\frac{x^{6}}{720} + \\frac{x^{7}}{5040} + \\frac{x^{8}}{40320} + \\frac{x^{9}}{362880} + O\\left(x^{10}\\right)$\n" ], "text/plain": [ " 2 3 4 5 6 7 8 9 \n", " x x x x x x x x / 10\\\n", "1 + x + -- + -- + -- + --- + --- + ---- + ----- + ------ + O\\x /\n", " 2 6 24 120 720 5040 40320 362880 " ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x = symbols(\"x\")\n", "series(e^x, n=10)" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle 1 - \\frac{x^{2}}{2} + \\frac{x^{4}}{24} - \\frac{x^{6}}{720} + \\frac{x^{8}}{40320} + O\\left(x^{10}\\right)$\n" ], "text/plain": [ " 2 4 6 8 \n", " x x x x / 10\\\n", "1 - -- + -- - --- + ----- + O\\x /\n", " 2 24 720 40320 " ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "series(cos(x), n=10)" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle x - \\frac{x^{3}}{6} + \\frac{x^{5}}{120} - \\frac{x^{7}}{5040} + \\frac{x^{9}}{362880} + O\\left(x^{10}\\right)$\n" ], "text/plain": [ " 3 5 7 9 \n", " x x x x / 10\\\n", "x - -- + --- - ---- + ------ + O\\x /\n", " 6 120 5040 362880 " ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "series(sin(x), n=10)" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle 1 + \\frac{x^{2}}{2} + \\frac{x^{4}}{24} + \\frac{x^{6}}{720} + \\frac{x^{8}}{40320} + O\\left(x^{10}\\right)$\n" ], "text/plain": [ " 2 4 6 8 \n", " x x x x / 10\\\n", "1 + -- + -- + --- + ----- + O\\x /\n", " 2 24 720 40320 " ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "series(cosh(x), n=10)" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle x + \\frac{x^{3}}{6} + \\frac{x^{5}}{120} + \\frac{x^{7}}{5040} + \\frac{x^{9}}{362880} + O\\left(x^{10}\\right)$\n" ], "text/plain": [ " 3 5 7 9 \n", " x x x x / 10\\\n", "x + -- + --- + ---- + ------ + O\\x /\n", " 6 120 5040 362880 " ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "series(sinh(x), n=10)" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle x - \\frac{x^{2}}{2} + \\frac{x^{3}}{3} - \\frac{x^{4}}{4} + \\frac{x^{5}}{5} - \\frac{x^{6}}{6} + \\frac{x^{7}}{7} - \\frac{x^{8}}{8} + \\frac{x^{9}}{9} + O\\left(x^{10}\\right)$\n" ], "text/plain": [ " 2 3 4 5 6 7 8 9 \n", " x x x x x x x x / 10\\\n", "x - -- + -- - -- + -- - -- + -- - -- + -- + O\\x /\n", " 2 3 4 5 6 7 8 9 " ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "series(log(1+x), n=10)" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle x + \\frac{x^{2}}{2} + \\frac{x^{3}}{3} + \\frac{x^{4}}{4} + \\frac{x^{5}}{5} + \\frac{x^{6}}{6} + \\frac{x^{7}}{7} + \\frac{x^{8}}{8} + \\frac{x^{9}}{9} + O\\left(x^{10}\\right)$\n" ], "text/plain": [ " 2 3 4 5 6 7 8 9 \n", " x x x x x x x x / 10\\\n", "x + -- + -- + -- + -- + -- + -- + -- + -- + O\\x /\n", " 2 3 4 5 6 7 8 9 " ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "series(-log(1-x), n=10)" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle x + \\frac{x^{3}}{6} + \\frac{3 x^{5}}{40} + \\frac{5 x^{7}}{112} + \\frac{35 x^{9}}{1152} + O\\left(x^{10}\\right)$\n" ], "text/plain": [ " 3 5 7 9 \n", " x 3*x 5*x 35*x / 10\\\n", "x + -- + ---- + ---- + ----- + O\\x /\n", " 6 40 112 1152 " ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "series(asin(x), n=10)" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle \\frac{35 x^{9}}{1152} + \\frac{5 x^{7}}{112} + \\frac{3 x^{5}}{40} + \\frac{x^{3}}{6} + x$\n" ], "text/plain": [ " 9 7 5 3 \n", "35*x 5*x 3*x x \n", "----- + ---- + ---- + -- + x\n", " 1152 112 40 6 " ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "k = symbols(\"k\", integer=true)\n", "doit(sympy.Sum(1/2^(2k)*factorial(2k)/(factorial(k)^2)*x^(2k+1)/(2k+1), (k,0,4)))" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle x - \\frac{x^{3}}{3} + \\frac{x^{5}}{5} - \\frac{x^{7}}{7} + \\frac{x^{9}}{9} + O\\left(x^{10}\\right)$\n" ], "text/plain": [ " 3 5 7 9 \n", " x x x x / 10\\\n", "x - -- + -- - -- + -- + O\\x /\n", " 3 5 7 9 " ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "series(atan(x), n=10)" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle x + \\frac{x^{3}}{3} + \\frac{x^{5}}{5} + \\frac{x^{7}}{7} + \\frac{x^{9}}{9} + O\\left(x^{10}\\right)$\n" ], "text/plain": [ " 3 5 7 9 \n", " x x x x / 10\\\n", "x + -- + -- + -- + -- + O\\x /\n", " 3 5 7 9 " ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "series(atanh(x), n=10)" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle \\sum_{k=0}^{\\infty} \\frac{\\left(-1\\right)^{k}}{2 k + 1}$\n" ], "text/plain": [ " oo \n", "____ \n", "\\ ` \n", " \\ k \n", " \\ (-1) \n", " / -------\n", " / 2*k + 1\n", "/___, \n", "k = 0 " ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sympy.Sum((-1)^k/(2k+1), (k,0,oo))" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle \\frac{\\pi}{4}$\n" ], "text/plain": [ "pi\n", "--\n", "4 " ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "doit(sympy.Sum((-1)^k/(2k+1), (k,0,oo)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "次のセルの f(n,k) は\n", "\n", "$$\n", "f(n,k) = \\frac{1}{2^n}\\binom{n}{k} = \\frac{1}{2^n}\\frac{n!}{k!(n-k)!}\n", "$$\n", "\n", "を意味している. これは $p=1/2$ に対する二項分布における確率である.\n", "\n", "$$\n", "\\operatorname{lgamma}(n+1) = \\log \\Gamma(n+1) = \\log n!\n", "$$\n", "\n", "であることに注意せよ. \n", "\n", "次のセルで一度全体の対数を取った式を計算してから exponential を取っている理由は階乗を単体で計算すると簡単にオーバーフローしてしまうからである. 階乗の対数ならばオーバーフローしない. さらに, $\\ds\\binom{n}{k}$ と $1/2^n$ を別々に計算した後で掛け合わせる計算の仕方もよくない. 巨大な数を巨大な数で割る数値計算はオーバーフローやアンダーフローを起こしやすい. 対数を取って適度な大きさの数値にして差を取ってから, まとめて exponential するのがよい.\n", "\n", "しかし, そのように注意深く書いたコードであっても, もとの級数の収束は極めて遅いので, 1億項を足し合わせても小数点以下第4桁までしか正確に計算できていない. \n", "\n", "このようなことは頻繁に起こるので, 数値計算により適した公式を見付けたり, 遅い収束を加速する方法(加速法)を開発することは大事な仕事である." ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " 13.929964 seconds (156.03 k allocations: 10.648 MiB, 1.54% compilation time)\n" ] }, { "data": { "text/plain": [ "(1.5707399078367754, 1.5707963267948966)" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f(n,k) = exp(lgamma(n+1)-lgamma(k+1)-lgamma(n-k+1)-n*log(2))\n", "@time sum(k->f(2k,k)/(2k+1), 0:10^8-1), π/2" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Bernoulli数とEuler数を用いたTaylor展開" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Bernoulli数とEuler数の定義\n", "\n", "Bernoulli数 $B_n$ とEuler数 $E_n$ を次のように定める:\n", "\n", "$$\n", "\\frac{z}{e^z-1} = \\sum_{n=0}^\\infty B_n \\frac{z^n}{n!}, \\quad\n", "\\frac{2}{e^z+e^{-z}} = \\sum_{n=0}^\\infty E_n \\frac{z^n}{n!}.\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**注意:** これらの母函数はある確率分布のモーメント母函数分の1になっている:\n", "\n", "$$\n", "\\int_0^1 e^{zx}\\,dx = \\frac{e^{z}-1}{z}, \\quad\n", "\\int_\\R e^{zx}\\frac{\\delta(x-1)+\\delta(x+1)}{2}\\,dx = \\frac{e^{z}+e^{-z}}{2}.\n", "$$\n", "\n", "ここで $\\delta(x-a)$ はデルタ(超)函数である:\n", "\n", "$$\n", "\\int_\\R \\varphi(x)\\delta(x-a)\\,dx = \\varphi(a).\n", "$$\n", "\n", "モーメント母函数は統計力学における分配函数に対応しており, モーメント母函数分の $e^{xz}$ はカノニカル分布の確率密度函数に対応している. このような視点からのBernoulli数およびBernoulli多項式の一般化については\n", "\n", "* 黒木玄, Euler-Maclaurinの和公式の一般化\n", "\n", "を参照せよ. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**問題:** $B_0=1$, $B_1=-1/2$ であることを示せ.\n", "\n", "**解答例:** 以下の計算から得られる:\n", "\n", "$$\n", "\\frac{z}{e^z-1} = \\frac{1}{1+z/2+O(z^2)} = 1-\\frac{z}{2}+O(z^2).\n", "\\qquad\\QED\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "この問題の結果と,\n", "\n", "$$\n", "\\frac{z}{e^z-1}+\\frac{z}{2} = \\frac{z}{2}\\frac{e^z+1}{e^z-1} =\n", "\\frac{z}{2}\\frac{e^{z/2}+e^{-z/2}}{e^{z/2}-e^{-z/2}}\n", "$$\n", "\n", "が偶函数になることより, $B_n$ は $n$ が3以上の奇数のとき $0$ になることがわかる.\n", "\n", "$\\ds\\frac{2}{e^z+e^{-z}}$ が偶函数であることより, $n$ が奇数のとき $E_n=0$ となることがわかる.\n", "\n", "後で次の公式を用いる:\n", "\n", "$$\n", "\\frac{z}{2}\\frac{e^{z/2}+e^{-z/2}}{e^{z/2}-e^{-z/2}} = \n", "\\sum_{k=0}^\\infty \\frac{B_{2k}}{(2k)!}z^{2k},\n", "\\quad\n", "\\frac{2}{e^z+e^{-z}} =\n", "\\sum_{k=0}^\\infty \\frac{E_{2k}}{(2k)!}z^{2k}.\n", "\\tag{$*$}\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**問題:** Bernoulli数 $B_n$ とEuler数 $E_{2n}$ が次の漸化式を満たすことを示せ: $n=1,2,3,\\ldots$ に対して,\n", "\n", "$$\n", "B_n = -\\frac{1}{n+1}\\sum_{k=0}^{n-1}\\binom{n+1}{k}B_k, \\quad\n", "E_{2n} = -\\sum_{k=0}^{n-1} \\binom{2n}{2k}E_{2k}.\n", "$$\n", "\n", "**注意:** これらの漸化式と $B_0=E_0=1$ を用いて, Bernoulli数 $B_n$ とEuler数 $E_{2n}$ を順次求めることができる. $\\QED$\n", "\n", "**解答例:** $B_n$ の漸化式は $\\ds\\frac{z}{e^z-1}\\frac{e^z-1}{z}=1$ から得られる.\n", "\n", "$$\n", "1 = \\frac{z}{e^z-1}\\frac{e^z-1}{z} =\n", "\\sum_{k,l=0}^\\infty \\frac{B_k}{k!(l+1)!}z^{k+l} =\n", "\\sum_{n=0}^\\infty \\left(\\sum_{k=0}^n \\frac{n!}{k!(n-k+1)!}B_k\\right)\\frac{z^n}{n!}.\n", "$$\n", "\n", "すなわち\n", "\n", "$$\n", "\\delta_{n,0} =\n", "\\sum_{k=0}^n \\frac{n!}{k!(n-k+1)!}B_k =\n", "\\frac{1}{n+1}\\sum_{k=0}^n \\binom{n+1}{k}B_k =\n", "\\frac{1}{n+1}\\sum_{k=0}^{n-1} \\binom{n+1}{k}B_k + B_n. \n", "$$\n", "\n", "これより $B_n$ の漸化式が得られる. \n", "\n", "$E_{2n}$ の漸化式は $\\ds\\frac{2}{e^z-e^{-z}}\\frac{e^z-e^{-z}}{2}=1$ から得られる.\n", "\n", "$$\n", "1 = \\frac{2}{e^z+e^{-z}}\\frac{e^z+e^{-z}}{2} =\n", "\\sum_{k,l=0}^\\infty \\frac{E_{2k}}{(2k)!(2l)!}z^{2k+2l} =\n", "\\sum_{n=0}^\\infty \\left(\\sum_{k=0}^n \\binom{2n}{2k}E_{2k}\\right)\\frac{z^{2n}}{(2n)!}.\n", "$$\n", "\n", "すなわち\n", "\n", "$$\n", "\\delta_{n,0} = \\sum_{k=0}^n \\binom{2n}{2k}E_{2k} =\n", "\\sum_{k=0}^{n-1} \\binom{2n}{2k}E_{2k} + E_{2n}.\n", "$$\n", "\n", "これより $E_{2n}$ の漸化式が得られる. $\\QED$" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\left[ \\begin{array}{r}\\displaystyle 1\\\\\\displaystyle \\frac{1}{6}\\\\\\displaystyle - \\frac{1}{30}\\\\\\displaystyle \\frac{1}{42}\\\\\\displaystyle - \\frac{1}{30}\\\\\\displaystyle \\frac{5}{66}\\\\\\displaystyle - \\frac{691}{2730}\\\\\\displaystyle \\frac{7}{6}\\\\\\displaystyle - \\frac{3617}{510}\\end{array} \\right]$\n" ], "text/plain": [ "9-element Vector{Sym}:\n", " 1\n", " 1/6\n", " -1/30\n", " 1/42\n", " -1/30\n", " 5/66\n", " -691/2730\n", " 7/6\n", " -3617/510" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Bernoulli数 B_{2k} の例\n", "\n", "BernoulliNumber(n) = sympy.bernoulli(n)\n", "B = [BernoulliNumber(2k) for k in 0:8]" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\left[ \\begin{array}{r}\\displaystyle 1\\\\\\displaystyle -1\\\\\\displaystyle 5\\\\\\displaystyle -61\\\\\\displaystyle 1385\\\\\\displaystyle -50521\\\\\\displaystyle 2702765\\\\\\displaystyle -199360981\\\\\\displaystyle 19391512145\\end{array} \\right]$\n" ], "text/plain": [ "9-element Vector{Sym}:\n", " 1\n", " -1\n", " 5\n", " -61\n", " 1385\n", " -50521\n", " 2702765\n", " -199360981\n", " 19391512145" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Euler数 E_{2k} の例\n", "\n", "EulerNumber(n) = sympy.euler(n)\n", "E = [EulerNumber(2k) for k in 0:8]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### tan, cot, sec, cosec の展開\n", "\n", "$B_{2k}$, $E_{2k}$ に関する公式($*$)を使うと, \n", "\n", "$$\n", "\\begin{aligned}\n", "&\n", "\\frac{z}{2}\\cot\\frac{z}{2} = \\frac{z}{2}\\frac{\\cos(z/2)}{\\sin(z/2)} =\n", "\\frac{iz}{2}\\frac{e^{iz/2}+e^{-iz/2}}{e^{iz/2}-e^{-iz/2}} =\n", "\\sum_{k=0}^\\infty \\frac{B_{2k}}{(2k)!}(iz)^{2k} =\n", "\\sum_{k=0}^\\infty (-1)^k\\frac{B_{2k}}{(2k)!}z^{2k},\n", "\\\\ &\n", "\\cot z = \\frac{\\cos z}{\\sin z} = \\sum_{k=0}^\\infty (-1)^k \\frac{2^{2k}B_{2k}}{(2k)!}z^{2k-1},\n", "\\\\ &\n", "\\tan z = \\frac{\\sin z}{\\cos z} = \\cot z - 2\\cot(2z) = \n", "\\sum_{k=1}^\\infty(-1)^k\\frac{2^{2k}(1-2^{2k})B_{2k}}{(2k)!}z^{2k-1},\n", "\\\\ &\n", "\\cosec z = \\frac{1}{\\sin z} =\n", "\\cot\\frac{z}{2} - \\cot z =\n", "\\sum_{k=0}^\\infty(-1)^k\\frac{2^{2k}(2^{-(2k-1)}-1)B_{2k}}{(2k)!}z^{2k-1}\n", "\\\\ & \\qquad =\n", "\\sum_{k=0}^\\infty(-1)^k\\frac{2(1-2^{2k-1})B_{2k}}{(2k)!}z^{2k-1},\n", "\\\\ &\n", "\\sec z = \\frac{1}{\\cos z} = \\frac{2}{e^{iz}-e^{-iz}} = \n", "\\sum_{k=0}^\\infty \\frac{E_{2k}}{(2k)!}(iz)^{2k} =\n", "\\sum_{k=0}^\\infty (-1)^k\\frac{E_{2k}}{(2k)!}z^{2k},\n", "\\\\ &\n", "\\coth z = \\frac{e^{z}+e^{-z}}{e^{z}-e^{-z}} = \n", "\\sum_{k=0}^\\infty \\frac{2^{2k}B_{2k}}{(2k)!}z^{2k-1}\n", "\\\\ &\n", "\\tanh z = 2\\coth(2z) - \\coth z =\n", "\\sum_{k=0}^\\infty \\frac{2^{2k}(2^{2k}-1)B_{2k}}{(2k)!} z^{2k-1}.\n", "\\end{aligned}\n", "$$\n", "\n", "__注意:__ $B_{2k}$ は本質的に $\\ds\\frac{z}{2}\\cot\\frac{z}{2}$ のMaclaurin展開の係数であり, $E_{2k}$ は $\\sec z$ のMaclaurin展開の係数である.\n", "\n", "__注意:__ $\\tan z = \\cot z - 2\\cot(2z)$ は次のように示される:\n", "\n", "$$\n", "2\\cot(2z) = \\frac{2\\cos 2z}{\\sin 2z} =\n", "\\frac{2(\\cos^2 z - \\sin^2 z)}{2\\cos z \\sin z} = \\cot z - \\tan z.\n", "$$\n", "\n", "ゆえに $\\tan z = \\cot z - 2\\cot(2z)$. $\\tanh z = 2\\coth(2z) - \\coth z$ は次のように示される(わざと少し計算の仕方を $\\tan$ の場合から変える):\n", "\n", "$$\n", "2\\coth(2z) = \\frac{2(e^{2z} + e^{-2z})}{e^{2z} - e^{-2z}} =\n", "\\frac{(e^z+e^z)^2 + (e^z-e^{-z})^2}{(e^z+e^{-z})(e^z-e^{-z})} = \\coth z + \\tanh z.\n", "$$\n", "\n", "ゆえに, $\\tanh z = 2\\coth(2z) - \\coth z$." ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle 1 - \\frac{z^{2}}{12} - \\frac{z^{4}}{720} - \\frac{z^{6}}{30240} - \\frac{z^{8}}{1209600} + O\\left(z^{10}\\right)$\n" ], "text/plain": [ " 2 4 6 8 \n", " z z z z / 10\\\n", "1 - -- - --- - ----- - ------- + O\\z /\n", " 12 720 30240 1209600 " ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "z = symbols(\"z\")\n", "series((z/2)*cot(z/2), z, n=10)" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle \\frac{1}{z} - \\frac{z}{3} - \\frac{z^{3}}{45} - \\frac{2 z^{5}}{945} - \\frac{z^{7}}{4725} - \\frac{2 z^{9}}{93555} + O\\left(z^{10}\\right)$\n" ], "text/plain": [ " 3 5 7 9 \n", "1 z z 2*z z 2*z / 10\\\n", "- - - - -- - ---- - ---- - ----- + O\\z /\n", "z 3 45 945 4725 93555 " ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "z = symbols(\"z\")\n", "series(cot(z), z, n=10)" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle z + \\frac{z^{3}}{3} + \\frac{2 z^{5}}{15} + \\frac{17 z^{7}}{315} + \\frac{62 z^{9}}{2835} + O\\left(z^{10}\\right)$\n" ], "text/plain": [ " 3 5 7 9 \n", " z 2*z 17*z 62*z / 10\\\n", "z + -- + ---- + ----- + ----- + O\\z /\n", " 3 15 315 2835 " ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "z = symbols(\"z\")\n", "series(tan(z), z, n=10)" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle \\frac{1}{z} + \\frac{z}{6} + \\frac{7 z^{3}}{360} + \\frac{31 z^{5}}{15120} + \\frac{127 z^{7}}{604800} + \\frac{73 z^{9}}{3421440} + O\\left(z^{10}\\right)$\n" ], "text/plain": [ " 3 5 7 9 \n", "1 z 7*z 31*z 127*z 73*z / 10\\\n", "- + - + ---- + ----- + ------ + ------- + O\\z /\n", "z 6 360 15120 604800 3421440 " ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "z = symbols(\"z\")\n", "series(csc(z), z, n=10)" ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle 1 + \\frac{z^{2}}{2} + \\frac{5 z^{4}}{24} + \\frac{61 z^{6}}{720} + \\frac{277 z^{8}}{8064} + O\\left(z^{10}\\right)$\n" ], "text/plain": [ " 2 4 6 8 \n", " z 5*z 61*z 277*z / 10\\\n", "1 + -- + ---- + ----- + ------ + O\\z /\n", " 2 24 720 8064 " ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "z = symbols(\"z\")\n", "series(sec(z), z, n=10)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## べき級数の収束" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### べき級数の定義\n", "\n", "$\\ds \\sum_{k=0}^\\infty a_k x^k$ の形式の級数を**べき級数**と呼ぶ.\n", "\n", "$\\ds \\sum_{k=0}^\\infty |a_k x^k|$ が収束するとき, べき級数 $\\ds \\sum_{k=0}^\\infty a_k x^k$ は絶対収束するという." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### べき級数の収束半径" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**準備:** 実数列 $\\alpha_n$ が $n\\to\\infty$ のとき $\\alpha_n\\to\\infty$ となることを, 任意の実数 $M$ に対して(どんなに大きな実数 $M$ に対しても), ある番号 $N$ が存在して $n\\geqq N$ ならば $\\alpha_n\\geqq M$ となること(すなわち, どんなに大きな $M$ に対しても, ある番号以降のすべての $n$ について $\\alpha_n\\geqq M$ 成立すること)であると定める. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### d'Alembert の判定法\n", "\n", "**定理( d'Alembert の判定法):** $k\\to\\infty$ のとき $\\ds\\frac{|a_k|}{|a_{k+1}|}\\to\\rho > 0$ が成立していると仮定する(上の準備のもとで $\\rho=\\infty$ であってもよいとする). このとき, べき級数 $\\ds\\sum_{k=0}^\\infty a_k x^k$ は $|x|<\\rho$ で絶対収束し, $|x|>\\rho$ で収束しない.\n", "\n", "**注意:** 実際には $0R>0$ より, ある番号 $N$ が存在して, $k\\geqq N$ のとき,\n", "\n", "$$\n", "\\frac{|a_k|}{|a_{k+1}|} \\geqq R, \\quad\\text{i.e.}\\quad \\frac{|a_{k+1}|}{|a_k|}\\leqq \\frac{1}{R}.\n", "$$\n", "\n", "ゆえに, $n=0,1,2,\\ldots$ に対して, \n", "\n", "$$\n", "|a_{N+n} x^{N+n}| =\n", "\\frac{|a_{N+n}|}{|a_{N+n-1}|}\\cdots\\frac{|a_{N+2}|}{|a_{N+1}|}\\frac{|a_{N+1}|}{|a_N|}|a_N||x|^{N+n} \\leqq\n", "\\frac{1}{R^n} |a_N| r^{N+n} =\n", "|a_N| r^N \\left(\\frac{r}{R}\\right)^n.\n", "$$\n", "\n", "$r\\rho$ であると仮定する. $\\ds\\sum_{k=0}^\\infty a_k x^k$ が収束しないことを示したい. $|x|>\\rho$ と $|a_k|/|a_{k+1}|\\to\\rho<|x|$ より, ある番号 $N$ が存在して, $k\\geqq N$ ならば, $|a_k|>0$ かつ\n", "\n", "$$\n", "\\frac{|a_k|}{|a_{k+1}|} \\leqq |x|, \\quad\\text{i.e.}\\quad \\frac{|a_{k+1}|}{|a_k|} \\geqq \\frac{1}{|x|}.\n", "$$\n", "\n", "ゆえに, $n=0,1,2,\\ldots$ に対して,\n", "\n", "$$\n", "|a_{N+n}x^{N+n}| = \n", "\\frac{|a_{N+n}|}{|a_{N+n-1}|}\\cdots\\frac{|a_{N+2}|}{|a_{N+1}|}\\frac{|a_{N+1}|}{|a_N|}|a_N||x|^{N+n} \\geqq\n", "\\frac{1}{|x|^n}|a_N||x|^{N+n} =\n", "|a_N||x|^N > 0.\n", "$$\n", "\n", "ゆえに $a_n x^n$ は $0$ に収束しない. これより, $\\ds\\sum_{k=0}^\\infty a_k x^k$ が収束しないことがわかる. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**例:** べき級数 $\\ds \\sum_{k=0}^\\infty \\frac{1}{k!}x^k$ について, $k\\to\\infty$ のとき, \n", "\n", "$$\n", "\\frac{1/k!}{1/(k+1)!} = k+1 \\to \\infty\n", "$$\n", "\n", "なので, そのべき級数は $|x|<\\infty$ で絶対収束する. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**例:** べき級数 $\\ds\\sum_{k=0}^\\infty \\frac{(-1)^k x^{2k}}{(2k)!}$ を $x^2$ のべき級数とみなす.\n", "\n", "$$\n", "\\frac{1/(2k)!}{1/(2(k+1))!} = (2k+1)(2k+2)\\to \\infty \\quad(k\\to\\infty)\n", "$$\n", "\n", "なので, そのべき級数は $|x|<\\infty$ で絶対収束する.\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**問題:** べき級数 $\\ds\\sum_{k=0}^\\infty \\frac{(-1)^k x^{2k+1}}{(2k+1)!}$ が $|x|<\\infty$ で絶対収束することを示せ.\n", "\n", "**ヒント:** このべき級数を $x^2$ のべき級数と $x$ の積とみなしてから, d'Alembertの判定法を適用せよ. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "d'Alembertの判定法だけで十分な場合が多いが, より精密なCauchy-Hadamard定理の定理もよく使われる." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Cauchy-Hadamard定理\n", "\n", "**Cauchy-Hadamard定理:** $\\rho\\geqq 0$ を $\\ds \\frac{1}{\\rho}=\\limsup_{n\\to\\infty}|a_n|^{1/n}$ によって定める(右辺が $0$ のとき $\\rho=\\infty$ と定め, 右辺が $\\infty$ のとき $\\rho=0$ と定める.). このとき, べき級数 $\\ds\\sum_{k=0}^\\infty a_k x^k$ は $|x|<\\rho$ で絶対収束し, $|x|>\\rho$ で収束しない.\n", "\n", "**注意:** 実際には $0\\rho$ と仮定する. このとき, \n", "\n", "$$\n", "\\frac{1}{\\rho} = \\limsup_{n\\to\\infty}|a_n|^{1/n}=\\inf_{n\\geqq 0}\\sup_{k\\geqq n}|a_k|^{1/k}\n", "$$\n", "\n", "より, $n=0,1,2,\\ldots$ に対して $\\ds\\sup_{k\\geqq n}|a_k|^{1/k}\\geqq\\frac{1}{\\rho}$ なので, $\\ds \\frac{1}{\\rho} > \\frac{1}{|x|}$ より, 各 $n$ ごとにある $k\\geqq n$ で $\\ds |a_k|^{1/k} \\geqq \\frac{1}{|x|}$ を満たすものが存在し, \n", "\n", "$$\n", "|a_k x^k| = \\left(|a_k|^{1/k}|x|\\right)^k \\geqq \\left(\\frac{1}{|x|}|x|\\right)^k = 1\n", "$$\n", "\n", "となっている. 数列 $a_k x^k$ は $0$ に収束しないことがわかった. ゆえに級数 $\\ds\\sum_{k=0}^\\infty a_k x^k$ も収束しない. $\\QED$\n", "\n", "**注意:** Cauchy-Hadamardの定理の証明はシンプルなので上極限の使い方を学ぶために適切な題材になっている. $\\QED$\n", "\n", "**注意:** d'Alembertの判定法もCauchy-Hadamardの定理も一般のべき級数を等比級数と比較することによって収束を判定している. 大雑把に言えば, d'Alembertの判定法は\n", "\n", "$$\n", "|a_k x^k| = |a_0| \\prod_{j=1}^k \\frac{|a_j||x|}{|a_{j-1}|}\n", "$$\n", "\n", "の $\\ds \\prod_{j=1}^k \\frac{|a_j||x|}{|a_{j-1}|}$ の部分が $1$ 未満のある $r\\geqq 0$ に対する $r^k$ 以下であれば収束すると考える判定法であり, Cauchy-Hadamardの定理は\n", "\n", "$$\n", "|a_k x^k| = \\left(|a_k|^{1/k}|x|\\right)^k\n", "$$\n", "\n", "が $1$ 未満のある $r\\geqq 0$ に対する $r^k$ 以下であれば収束すると考える判定法である. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**例:** べき級数\n", "\n", "$$\n", "1 - x + x^2 - x^3 + x^4 - x^5 + \\cdots\n", "$$\n", "\n", "の収束半径は数列 $|-1|^{1/1}=1$, $|1|^{1/2}=1$, $|-1|^{1/3}=1$, $|1|^{1/4}=1$, $\\ldots$ の上極限の $1$ であり, $|x|<1$ で $\\ds\\frac{1}{1+x}$ に収束するので, このべき級数は $x\\nearrow 1$ で $1$ に収束する.\n", "\n", "それではべき級数\n", "\n", "$$\n", "F(x) = \\sum_{n=0}^\\infty (-1)^n x^{2^n} = x - x^2 + x^4 - x^8 + x^{16} - x^{32} + \\cdots\n", "$$\n", "\n", "についてはどうなるだろうか? これの収束半径も数列 $|1|^{1/1}=1$, $|-1|^{1/2}=1$, $|1|^{1/4}=1$, $|-1|^{1/8}=1$, $\\ldots$ の上極限の $1$ になる. \n", "\n", "もしも $x\\nearrow 1$ で $f(x)$ が $\\alpha$ に収束するならば, $F(x^2) = x - F(x)$ なので, $x\\nearrow 1$ の極限を取って $\\alpha=1-\\alpha$ すなわち $\\ds\\alpha=\\frac{1}{2}$ となる. \n", "\n", "そこで実際に $x\\nearrow 1$ のとき $F(x)\\to 1/2$ となるかどうかを確認するために1000項足した結果を計算してみると, 例えば\n", " \n", " F(0.9) = 0.4677755990574414\n", " F(0.99) = 0.49409849522830906\n", " F(0.999) = 0.5001242215513184\n", " F(0.9999) = 0.5020251448564931\n", " F(0.99999) = 0.4973598550256996\n", " F(0.999999) = 0.5007394876031053\n", "\n", "を得る. これらは確かに $\\ds\\frac{1}{2}=0.5$ にかなり近いように見える.\n", "\n", "**しかし, べき級数の $F(x)$ の値は $x\\nearrow 1$ で収束しない!!!** この事実のTauber型定理を使った証明については\n", "\n", "* 黒木玄, ガンマ分布の中心極限定理とStirlingの公式\n", "\n", "の第10.4節を見よ. 数値計算結果を用いた初等的な証明を下の方で紹介する. $\\QED$" ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "F(0.9) = 0.4677755990574413\n", "F(0.99) = 0.4940984952283092\n", "F(0.999) = 0.5001242215513184\n", "F(0.9999) = 0.502025144856493\n", "F(0.99999) = 0.49735985502569974\n", "F(0.999999) = 0.5007394876031052\n" ] } ], "source": [ "# 上のセルのべき級数の数値計算例\n", "\n", "F(x; N=10^3) = sum(n->(-1)^n*x^(2.0^n), 0:N)\n", "@show F(0.9)\n", "@show F(0.99)\n", "@show F(0.999)\n", "@show F(0.9999)\n", "@show F(0.99999)\n", "@show F(0.999999);" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "data": { "image/png": "iVBORw0KGgoAAAANSUhEUgAAAlgAAADwCAIAAABT1I0hAAAABmJLR0QA/wD/AP+gvaeTAAAgAElEQVR4nOydZ3wU1drAnynZbHolCamkECAhtASkhF4DhCogVYQrigoqKHJRQEXxIgpYQLioiBRf1IuAtEDohBYShBAgJEB6byTZPjPn/TCwLJs2m+xmS87/Q36zkzMzZ2Z35pmnEwghwGAwGAymtUIaewIYDAaDwRgTLAgxGAwG06rBghCDwWAwrRosCDEYDAbTqsGCEIPBYDCtGiwIMRgMBtOqoYUPTUlJ2bZtm0wmmzZt2ogRI7T+K5VKP/30U/XHIUOG1B6DwWCE8Pjx402bNmVkZPTs2XPhwoVWVlZaA7Zu3ZqZmckve3l5vfPOO/xybm7ud999l5+fP2rUqBkzZhAEAQAHDx48c+ZMaWmpr6/v/Pnz27dv34KngsGYAUI1wqysrP79+/v4+ERHR0+fPj0uLk5rgEwm+/LLL12eYmNjo++pYjCthdjY2Nu3b48bN27fvn1qIafJnj17CgsL+XvN0dGRXymTyaKjo6VS6ejRoz/55JNvv/2WX5+UlBQUFBQbGyuXy6OiotQSFIPBPAEJ44MPPpg5cya/vGnTpmHDhmkNKC0tJQhC4N4wGEx9XL582cXFRaFQIIQePXokFotLS0u1xkRHRx88eFBr5c6dO3v06MEvx8XF+fv7MwyjNSYyMnLHjh0GmTcGY7YI1QivXLkyaNAgfnnQoEGXL1+uc9jKlStXrVp17tw5vQhpDKYVcvny5b59+4pEIgBo166dl5dXcnJy7WG///77smXLdu7cqVKp1Buqb9KBAwfm5OTk5eVpbpKUlJSdnR0VFWXYE8BgzA2hPsLCwkI3Nzd+2d3dXSKRVFVVqW0yAEDT9MyZM93d3YuLiydPnrxkyZIVK1bUuav9+/d/8cUXAQEB6jXLly/v2rVrU09BD6hUqtpuGCPCMAxN6+C+NTQIIY7jKIoy9kSeYTpfWZkCPrsJ1gT3dV9rvexQ814DgDZt2hQUFGiN6du3r7OzM03T33777bZt286fP0/TdGFhYc+ePfkB1tbWDg4OBQUF/v7+APDOO+988803JElu2LChc+fO9R26b9++7u7u6t9eaGjoRx99pJeTMhwcxwEASZpZ3J/p/ICFY2rPJYHQNC0WixsZI3Bf1tbWSqWSX1YoFARBaO3ayclp165d/PKwYcNiYmLee+89/q1Wi4qKCmtr66lTp6pnGRwcbNyHrFQqbfRKtSQymUwkEvGRDqYAwzAcx9X5bRoL0/nK/pPCxedDO1u91ewVi8VqJQ8AFAqFra2t1ph169bxC2+88Ub79u2PHj06btw4sVisvkkBQKlUqjfctGnTV199df369YkTJwYHB48dO7bOQz969GjGjBkeHh78x3bt2tU+tKmhVCoRQtbW+nkLaTGqq6tN/9pqIZFIbGxsTOe5JASO4xQKRaPDhApCX1/f7Oxsfjk7O9vDw6OBx2LXrl0VCkVpaam3t3ft/9rY2Pj5+akFoSlAkqRJvVHy8zGdHxz5FGNP5BnGnc/lYjT9NFujQt/0ofZnwtIIwpNm9bVzX1/fU6dO8cscx+Xm5vr4+NQ32M7Orn379rm5ufD8TVpUVKRQKDQ3pGm6d+/eEydOPHbsWH2C0NraesyYMYGBgfo6lxaAJEmEkEn9OIVgajeUEEztuaRHhH4TkydP3rdvH/+iunv37smTJ/Prjx49mpWVBQDl5eW8jYIf4O3t3bZtWwNMGIMxMvcq0cSTzJZ+1MnR9Lpb3GBv4u3O1BgfTl/7j42NTU5OTk9PB4CjR4/a2dn16tULAG7evJmQkAAACoWipqaGH3z37t2kpKTIyEgAmDRp0pEjR8rLywFg9+7dgwYNcnV1ZRimoqKCHyyTyS5duoTTJzAYLYRqhDNmzNi1a1dkZKSbm1tWVpY6HObtt99euXLlnDlzdu/evX79+rCwsJKSkvz8/N27d1vkiwOmlVOjgsnx7Bc9qdF+BADcmqR/l4mXl9fKlSv79+/fs2fPK1eubN26lXcc7N69+8GDB/369SssLIyIiOjWrZuVlVViYuLSpUtfeOEFAOjTp8+YMWMiIyM7deqUlJT0999/A4BMJgsMDOzcubO9vX1ycnKfPn0WLlyo9zljMGYNgQT3I+Q47vr163K5vFevXmr3TE5OjouLi729PQCkp6dnZWU5OTmFh4c3YP7eu3fv33///dtvvzV/9vqiurrawcHB2LN4Rk1NjZ2dnem8STAMwzCMifjkeIzylbEIXoxnPW1ga7S2S1vv83n48OHDhw8jIiI8PT35NeXl5SqViv9YUlJy9+5dAOjQoYN6AE9KSkpJSUlkZKSTkxO/RiKR3Lp1Sy6Xt2vXrmGzZ7t27c6cOWNeplHz9RGa1DNHCBKJxNbW1nSeS0LgOE4mk9nZ2TU8TIf3WZIkeRONJn5+furl9u3bY6sLxlJRsDD/Aith0Ld9WyJwLigoKCgoSHONq6urerlNmzZt2rSpc8OIiAitNXZ2dn369NH7DDEYi8GEYmGTk5OnTp0qXEPVIwghzdeckSNHbtmypeWngTFNWARHc7iPrnOdnImDw2mRmYU46IGZM2deuXLF2LMAkiSPHj2K37YxeseEBGF+fn5AQMD27duNO41r165t3brVuHPAGB05C5eL0eUidK0EXSzk2jsRq7qTkwNbnwwEAIDbt29/9913HTt2NO40pk2bVlRUhAUhRu+YkCAEAFtbWy1zUMuTk5Nj3AlgjAgCiM9D2+9xcblcZ1eirwcxM4T4oZ9VWzPL+NI/vr6+Rr83TcpLjWkxSuXgLvibv1aC0h+jmSG6vbOaliDEYIxIfB5ansiqOHgzjNwabeVqZuEXGIwFcrkYDTjMbOxNvRUmSLbtTOdKZDAzRLejYEGIwUCRDBZdYpPL0Lqe5KRA0pyi4jAYi2bbXe7FQPK/9ziBgrBIBo+VOgeatFKfBwaj5mAW122/KsQRbk+mJ2MpiLFEFCwklqBrJUihtwpILUR8PvqkB5ldg8oaL5QGAFCtRBVPR1YqoUrV4OinYI0Q03pRcvD+VfZwNto/nO7jgSUgxgJhEWxI4b68xfrbEwRAVg36sBv1dmfzeOHLlSAVh0KdiK6uxM0yNMS78VlXqeDx04K7X6ewthQsFhBchQUhppWSI0FTTrHetkTyRNrJhMqJYzB6Q8bAi6cYGQOXx9EhjgQA3H+M5p5jk0vRLwMp0xeGN8uhuxsBAOEuRGqFIEFYrQL5U61XyoBI2Dm2FtNoZWVlff9CCD1+/LglJ4MxOmcK0AsHmRcDyf8No7AUNCJyuVwul9f3X6lUqtlPA6MTLIIppxhXa+JEzBMpCAChTsSp0XSuBK24bgZG0jsVKNyFAIBQJyK9SpDnT8KAgn0yUsmCQG+hRQnCixcvjtJg/fr1/PqzZ8/OmjWrvq0IgoiJiUlJSWmpaWKMCQL4OoWbeYbZM5h+L8L034kthFdffVXz3iwpKeHXjxw5kq8VVydxcXHz5s1rqTlaGh9dZ5Uc7BhA0c8/5m1o+GMY/dsDFJ9nhOolOpH2GHVwIgAgyAEeVQuarZx55gdVcEIFoUWZRgsLC+/cubNjxw7+o7r9xYoVK9T92+pkyZIlq1ev3r9/v8GniDEq1Sr41wX2UTW6Op72s8NCsOU4f/78jBkzoqOj+Y98T+/Dhw/b2tp27969vq0mTJjw4YcfpqamhoeHt9BELYVzBWhXBvpnIk3Xpey4WcO2aOr1BDZ1Mm1tQv22tVFnBAY4EFk1gjaRs6B42glGyYLASmUWpRECgK2t7dCnhIWFAcDt27fz8vL4OzA9Pf3jjz/mjS1yuXzlypWZmZkAEBsbe/bs2dp9wDGWRGoF6nWQcRHBhbFYChqBiIgI9b3J18jevn379OnT+f9+//336p42R48e5V9nCYKYNm3ajz/+aKw5mykKFl69yG7tRzWQhz7Kl+jsQnx/R2/twwzBo2oIcgAA8LMjciXCNEL2mUVUwQESphNamiBUKBQ3nlJdXQ0AJ06ciI6O5kuJhoSE/PPPPytWrACAd9999969e+3atQMAa2vrHj16nD592qhzxxiQn+9zg48w/+5Kbo2mTPkV2IJ59OgRf2NmZGQAAMMwp0+f7t+/P//fqKioqVOnZmVlpaenz507V60m9u/fPy4uzmiTNk823OY6uxBj/Rt52/s8ilx/i5UwLTMpnVFyUCxHvnYEALhag5wFaWNTRQBKDqxIULIA8OSvEEzRNLr+FvfFTd0cuT/0o6YFkQBQWFi4YMECfuXmzZt79eqVlpambitDEMTPP//cvXt3qVR64sSJ5ORk9R7atWuXlpampzPAmBCVSliYwN6pQOfG0p2csSLYdKpVEPYnI2F0cCy1dySujn/ykNm6dev//d//AUBkZOTWrVvz8vKkUmlAQAD/3969e7/zzjuzZs2qqqpas2ZNt27d+PWBgYHp6ekcx5ldP3djUSKHDSms+rI3QLgL0d+L/CmNWxxuitc2V4K8bQnq6S3b1oYokKJgx4ZuYQULIhJEJMhZsKZAwQpt4mCKgvDtzuS/Ouj2xTg+DfwLCAhITEzU/JdSqbSyslJ/dHV1/eSTT1555ZWDBw+qG7YBgLW1dQPRaxgz5VQ+mneenRBA7BhPi7Ei2DwcrCD1RZrVxZZmpXEfr1u3btKkSeqPCoWCpmlN8fbBBx/88MMP3t7er732mnqlSCRiWZZhGJEIR/cK4ot/2BnBZJCDoHe+JRHknLPsW2GkCYaN5dSAn0YbQS9bKJJBsGNDm8hZEFNgRQIfL6M062AZEQki/ZV5bNu2rTpEDQCqqqo+//zz0aNHf/nll6NHj6bpJ1eguLhY7cnHWABVKvjgGnskG/04gBrhY3p3uXniaNX4GIF4eXkxDFNZWens7Myv+f77793d3XNyck6cODFixAh+ZXFxsbu7O5aCAimSwc507vZkod9THw/CSQQn89BIX5O7R3IkyM/+2aw8bYhCGQJoaJ68IKRIQsUhAEK4IDRFjVi/9O3bV9ME+sYbbwwdOvTvv/+2s7NbvXq1en1ycnLfvn2NMUGM/jmQxXX+k2ERpEymsRQ0TRwdHTt37qy+N5OSkj799NP/+7//27Nnz9y5c/Pz8/n1+MbUiU232RnBpE7NUhZ0JH9MM8WQmVwJ+GpohG3EUCxrZBMFi6wpwooEFQcAwKJWGTVqbW2t2cWbZ8SIEY8ePcrLywOA3377LT09fePGjSRJ7tq1688//7x48SIApKamkiQZFRVlhElj9EpGFRobx3yYyO0eTP03GifLmwqurq58pKgmM2bMOHjwIABIpdLXX399y5YtoaGhgwYNeu211xYvXsy7dw4cONBAEjBGk2oV/JjGLY3Q7ak+LYiMz+MqhFXybEnypcjb9tlbbBsxlDTmvFKyIKKAJoB3ZCOBMaMWJghjY2MvXbqktVIkEi1atIjv9zt9+vSrV6/a2NgAgIeHR1paGm8O/f7775cvX67ZpB5jdlSpYHki2+cQM6At+c8keoAX/jZNiMuXL48ZM0Zr5YIFC44ePVpVVWVra5uYmDh16lR+/erVq//880+CIB49evTo0aPx48e3+HzNkl/uc0O8yXbCvINqnEQwwpf8X6bJKYX5UvDWUG3biIlSeSNyTcmBiAS1Rsi1To2wPt599111cn1tOI4LDw+fO3duC84Io09UHGy5w3X4XVUig1uTrJZ1Ia1axe/a7HFxcdm8eXNubm59AwoLC3/66SfNYDdMfSCA7+80Mf5zWhCx76HpCULJcxqhmxgabUDBC0KaBIYDAEBgzsEyesfGxkYzDk0LkiTfeuutlpwPRl9wCH5/yK1M4oId4XgM3dUVa4Fmhjoopk769OnTYjMxd+LzkC0N/TybcgvE+JLzzrM6NYJvAQploOnsdLMmyuSNSGveNEpwTzRCLAgxFg4C+DubW3mds6Hhv/2pwW2xCMS0arbd417v1ERLiA0Nw33IIzncy+1NyJZSKENeNk3RCBHS8BGabx4hBtMwcbnow2siBrhPI8lxASZ062IwRqFYBqfzuR0Dmm5DHhdAHMhELwto3dcyPFaCiAQbDQHlag3lwgQhh7BGiLFozhSgldfZCgUs68TMCbe2YDXw1KlTFy9eDAgImDFjRu0sumvXrv3zzz/qj3PnzuXHIIT+97//8VWqJ0+ezMd/VVRUHD9+PCMjw9PT88UXX6wdWY0xd37N4CYEkA7N8KXG+JKLLqkUrKkUICyUIU+b5+5vF2uiQtFYsAwLIgoY9MRHiINlMJbGxUI0+Ajz+kV2YScyZTI9yZ+zYCn43XffvfLKK1ZWVr/++mtsbGztAQcOHNiyZUvSUxjmSRHGxYsXr1mzxtra+rPPPlu8eDG/cvTo0fv27WNZNi4urmPHjllZWS13JpgWYed97pXQZj3M3cUQ5kxcLDKVxkxFMvC0eW6NswiqVMA1OEElh0TkszxCrBFiLIfrpWjldTbtMazuQc4MJutsK2NJqFSqtWvX/vbbb4MGDVqyZElAQMClS5dqJ5WPGDHiyy+/1FxTUFCwffv2jIwMX1/f2bNnh4SEfPjhh15eXsePH1dXExw+fPjOnTtXrVrVQieDMTw3ypCUgehm5wuN8iPjcrmh3iahEhbJkMfzGiFFgB0NVSpwrj85mDeNKnTPIzQhQWhnZxcXF2d0uw3DMOqK+Bjjcq8SfZTEXSlGH3Uj53UgRZYuAnlSU1Orq6sHDBgAAGKxeMiQIfHx8bUF4f3797dt2+bn5zd8+HA+weD8+fOdOnXy9fUFAB8fn06dOp07d27atGmaNXVpmm5CuTI7O7v+/ftTlJEfkdXV1XZ2do2Pa2XszuBmheghCXq4D/FGgqkkURTLwKNWCKuziKhUIGdRvefKm0at2Ccl1hCYYbDM4MGDi4uLhVYL1ys1NTX29vbqj7a2ulQowhiAfCn6OJk7mMW9F0HtGkjZmNDv1OAUFBS0adNGXY3ay8urdqdMZ2dnsVickpKyefPmDz744MKFC87OzgUFBZ6enuoxXl5e6kJlPHFxcYmJierO1bWprq7+4osv1IIzMDBw/vz5AHDs2DGZrLHyVoaHJEknJyeF4rmQCaVSaZSHRjNRKBR6KaDKItibQZwcgRSK5rZT6uIAmdVkXpXS3bru66lQKCiKapnCIwU1hJsItE7KyYosrlG2rf+yyZQEiYAEQqbgFApgOZJhOZZtvJeRaT1g1OV3Wxiaph0cHIxyaIwWNSr48ha75Q73r45k2hSrBswglgpJkhz37MWcZdnaqtiyZcvU/x04cODGjRs/+eSThjdMTk6eM2fO7t27vby86js0RVFOTk4uLi78R09PT14e29ramuzbIUmSCCGza9JEkqRe5ny2AHxsoYM++ouJSOjnAeeLiBfb1b03fs4tIwhLFRDmDFpNMZytoYpp6LIxiNcIgQWSJAEBAEEImbBpCUJMa4ZD8Es6tyqJG9KWuDGp9TaR5/ulMAzDt0YpKChQN+erDUVRgwcPvn//Pr+hpu5YUFDg7e3NL6ekpIwZM2br1q2jRo1q4NC2trZvvPGGun+nWYAQQgiZXfUZKysrvcz5f9ns9BDCSk+1lIb5cheK0fT2ddvA+Tm3jCAsU7Jedtrn5WzNSriGTpYjOGsaWbEAJD+MIQhCyAuH0MuHEPrxxx9feumlxYsXNxx19uOPP65Zs0bgbjEYnoQi1Osgs+M+d2A49esgqtVKQQAIDw9v06bNiRMnAKCqqurUqVMxMTEA8Pjx45SUFH6M2trDsuyZM2dCQ0MBYMiQIQ8ePEhPTweAjIyMjIyMwYMHA0BaWlpMTMyGDRsmTpxolDPCGAgVBwcyuSmBertZBrYlzhWYhJ25RI7a2Gifl5MVPFY2tJWKAytSo+i23qNGv/rqq59//nnt2rUJCQn9+/dPS0vjS1drcf78+ZUrV7Isu3LlSoF7xrRyCmXwwTX2TD5a14t8KdgE+4O2NBRFrVmzZt68edOnTz9//vzw4cN79OgBAOfOnfvXv/5VXFwMAFFRUWFhYS4uLufPn0cIvfvuuwDg5ua2dOnSUaNGTZgw4eDBg++9956bmxsATJs2TaFQ/Pzzzz///DMADB8+XG1ZxZg1p/NReyfC315vN01XV6JAhkrk0MbYtdZK65qDkwiqVA1tpUJgRQBFAt8+Ws+VZRiG2bRp06+//jp06NCJEyeeO3fu999/f/nll7WGSaXSRYsWff7558uXLxd0cEzrhkXww13u02R2Xgfy7hTaDtvpnzJnzpxu3bpdunRp2LBhvDoIAH369Pnjjz/45d9+++369esSiWTcuHFDhgxR95des2bNiBEjUlNTd+zYoQ5+3rJli1QqVe+8gQL0GPPij0fci4H6dI6SBPT2IC4UcpPaGdnnWiJH7mJtAe8oEqQRUgSwCABAeAisoGdPbm5uQUGB+r4aMGDA1atXawvClStXzpo1Kzg4WPDRMa2XG2XotYusHQ3nxtKd9OHqtzC6dOnSpUsXzTVt2rQZOHAgv9yxY8eOHTvWuWH//v218n9wY1uLhOHgUBa3srue3x+jPclLRWhSO/3uVTc4BBUKcNfuXwmOVkR5g8VltAShnvMICwsLHRwc1MG+7u7u165d0xpz9erVs2fPXrlypXZHQC2ys7NPnz49ZMiQJzOg6ZUrV3bv3l3YhA2CRCIxqWaEEokEIWQ6U2Keope9SRlYe5v+LZP8tCszI5AjAGpqdN6JqX1lcrkcBx5jWpILRSjAngjQn12Up68nsSLRyNmElUqwt4LapTMcRZDZ4LNCxSFrkqBJZJA2TDY2Npq5O3K5XCutVaFQLFiwYMeOHULioDw9PcPDw1esWKFe061bN800vpYHIWTcCdTGzs7OdB70vBQUi/XgNzhTgF69wPb2IG6/SLURNz03wtS+MnNMZcOYNX9lchMNYMDs1Ya4VY4ULBix6GhpXXZRAHC0guqGfYQc2NMaGqF+E+p9fX2VSmVhYSGfgZSVlcVXr1CTlZWVmpo6bNgwAGAYpqamxtXVNTExsU4zqbW1taenJz8Y03qoVsGya+yRbLQ1mhrtZyoyHoMxRxDAgUwUF6N/QWhLQ0dnIrkM9fEw2k1aKge3WnZRAHCwgiqdfISCTaOCrqObm9vgwYN37twJAKWlpUeOHHnxxRcBoKSkZNeuXQAQHBxcUlLy4MGDBw8e7N27183N7cGDB+3atRM2B4zlc6YAddnPqDhImUxjKYjBNJPkUmRLg4Gc6709iKvFxrRwlClQnS2CHUVElUpHH6F+S6ytW7cuNjb2xIkT9+/fnzZtWlRUFACkp6fPmTNn9uzZFEWpq1E4ODgQBKH+iGnlyBj4IJH9KxNt70+N8sUiEIPRAwezuPEBhrqberUhjuUaUxCWysGtrh5rDlZQ05hp1IoEmgSD+AgBICoqKiMjIzk52dvbW23w7Nmzp1YxQwB44YUXEhMTBe4WY9kklqA559hId+LWJNqlLlsHBoNpAn9no+/7GsqJ16sN8ekNY8bLlCmgTo3QXoCP8DmN0BBtmPgK9JprrKysauckicXigIAA4bvFWCQsgi/+4b6/w37Xl5qi11QnDKaVk12D8qWot8F8eKFORKkclSvA1Ugvr2Vy5FZXsEyjGiHDAW1Q0ygGI5zMajTrLGtLQ9IE2qcVF0vDYAzB39koxpekDHZjkQT0cCOSStFwH+PcvGUKaFdXLpK9FVEtyEdIMBwCvQfLYDDC2fuAe+EQMzmQjIvBUhCD0T+Hs7mx/oa9s6LaENdLjeYmLKsnatSeBinTkGxTcUATQJOGSZ/AYIRQrYK3LrGJJShuFN3NDYtADEb/SBi4VIT2DTWsDtPDjfjjkdEEYbkCuYnrOEGSADEFUgbqK8fIoCb6CLFGiNEPSaUo6gAjIuH6BCwFMRhDcSqP69mGcDRw16ke7kRymfE0QkXdGiEA2DfoJlRxyIokmlBiDQtCTHNBAN/c5sbEMZ9Fkdv7U7bYyoDBGIyjOWi0n8Gf2yGORLkclSsaH2kIGojTsbciaup3E/LBMhrpE0IrPuGHFqZZlCnglXNsiRxdHkcHOmBFEIMxLEdz0DudDS4ISQK6uhH/lKEh3ka4qcsVyLWuPEIAsKehpv6ax4atLIPB1ElCEerxF9PBCc6PxVIQgzE4KeVIREHHFunW0s2N+McY1lEZAwhBfYalxkyjtXyEWCPEGA4EsP4WtzGF/XEAPQaXTMNgWoRjuSimpcozdXMjzuYbQRA2oA4CgB3dkCBkENBEU9owYY0QozOlchgbxxzK4hInYCmIwbQcx3O4UYZ3EPJ0dSVulhtFEDaUyG9vRUiYemfFa4QkARyOGsUYlEtFKPIAE+FKnB1D++I0QQympahWQVIpGty2hW66cBciowopW7zUWsOC0I4GSf0+Qq3KMhyuLIPROwhgQwr31S1sDsVgjMDpfK63B9FiUdliCgIdiLuVqKtri97sjZhGdfURCjsoFoQYQVQqidcvsMUydHU87a/vptgYDKZRjueikb4tasPr4krcKm95QdgMjRABTWiYRrGPEKNHksqgz1EyyAHOjcVSEIMxDnG5aFTLWmIiXImUFncTliuggU419lYgMUDUKBaEmEbYfIcbF4/WRXIbelNW+PeCwRiD+48Rw0FYiyROqIlwMYIgrGgkarShYBneR6ipEQoEm0Yx9VKtglcvsOlV6MJowt/GmI06MZhWzok8NKLF+1p3doHbFS18TChXgL99vf+1bdA0qp1Qj6NGMc0kpRz1PMA4iyAhlg6qqyUKBoNpMU7kopEtLggDHIgqJapUtuhBK5QNmUbtaJA25CNENEHgfoQY/fDLfW7ZNXZjb2pmCAkATP2/PIyBSE1NvXXrVkhISM+ePWv/NzMzs6ysjF8mSbJ79+7qf125cuXRo0fdu3fv2LGjeqVcLr9//76NjU379u0NPXOM3lFycL6Q+2WggStt1yPCPJcAACAASURBVIIACHMhUitQP8+Wk8HlCuRqXa+GZtegj1DbNIo1QkzTkDEw7zy7/hZ3bizNS0FMy7N169ahQ4fGx8dPmTLlo48+qj3g008/nT59+vLly5cvX645YOnSpTNnzjx58uTAgQN/+eUXfuXGjRudnJwGDBiwePHilpk/Rr9cLkIdnQmj9Ivv7ELcrmhRt0hFg8Eytg36CHH6BEYP3H+Mppxiu7oS1ybQ9XX8whgamUz20UcfHThwIDo6OjMzMyws7K233vLy8tIa9tprry1dulRzTVZW1g8//JCenu7j43Pq1KnZs2fPnDnTyspq6tSp8+bN27FjR1xcXAueB0ZvnMjjRhipWXy4C5HasoKw0fSJBk2jQBNAkQTLcaCLaRS/8mOesO8h1/8w81YY+esgCktBI5KQkGBtbR0dHQ0A7dq169at27Fjx2oPy8/PP3369MOHD9Vrjhw50rt3bx8fHwAYMmSISqVKTEwEAB8fHycnp5aaPkb/nMhFw3yM86wOcyHutLRGiFxE9Ur9hoNlnphGAfh6OMK7T+AHHgYULCy9yp7Iw53lTYK8vDxfX1/1R19f37y8PK0xFEUlJCTcunXr+vXrsbGxv/zyC0mSmhsSBOHt7V17w4aRyWR79uxxd3fnP/r7+48cObIZp9ISsCyLEGJZ1tgT0Q2WZQXOuUwB6VWopxtnlFPs6IBSK55cXn7OBGHARwSLoIYBe6rea2NDgkRV79fNcEAglgBgWMSyLALgOCSkJyEWhK2dR9Vo6im2nQNxfQJt6LbXGCGwLEuSz17/aZpWqbTDA7Zs2WJlZQUAxcXFkZGRe/funTVrFsMwjW7YMCqVKiUlxcHhSZRwVVXVkCFDmngaLYVKpUIIaZ64WaBSqQR+OydziH4eBMGqVMYQhB4ikLFUsYRxESF+zgYVhGUKwoEmWKbec6URSBmqzkvHcECRFKNScQzBIkKlUnGI4hDiuMbrpWJB2Ko5kMW9dpH9qBu1KNzMniMWjJeXV0lJifpjUVHRwIEDtcbwUhAAPDw8Ro4cmZycPGvWrLZt296+fVs9pri42NvbW6dDOzo6/uc//wkMDGzq3I0ASZIIIWtrY0SSNAOVSiUWi4WMPFvMjvQjxGKj3aFhzsxDmaifI8GyrFgsNqgglCmRq5gVi0X1DXBFIGPrvnQyBmhCJRaLbcQIAb8TFUGSFEU1elz8+GulqDh49wq75Ap3eASNpaBJ8cILL+Tn5/POv+rq6qtXrw4YMAAAVCqVRCLRGsxx3K1bt3i/4IABAxISEmQyGQDcvXu3srKyR48eLT59jJ6Jz0fDjRQpw9PRmbhb2UJuwgoFuNQrBAEa9BEyCPjSV7j7BEYQWTVo2mnWy4ZImkA3EKmMMQpubm4LFiyYPHnyggUL/vjjj5EjR3bq1AkAduzY8d1336WkpADAwIEDhw4d6ujoePjw4dLS0nnz5gFAjx49+vbtO378+IkTJ/7www+LFi1ydHQEgJs3b/7222/Xr19/+PDh8uXLe/ToMXXqVOOeI0Yg6Y+RioNOLVtZTYtOLSgIGy40CgC2NMjqE4Qc0CQAPAuWQQACw2WwIGx1HMriFlxkP+hKvdOZxIExpsmGDRv27Nlz48YNPvOBXxkdHc0LNgBYvHjxP//8k5OTM23atBkzZtjZ2fHr9+/f/9NPP6Wnp69YsWLatGn8Snt7+6CgoKCgIP6jh4dHy54NpumcykfDvI18m3ZyJs4UtFBbwoYLjQIARQBNgpwFcS17J59ECAAUCSz3RABijRCjjYqD5Yns/kx0cDj9ggcWgqYLSZKzZ8+ePXu25sqwsLCwsDB+efLkyZMnT669oVgsfvPNN7VWBgcHBwcHG2iqGINyMg9NbGd0QQj3KlvoWA3XV+OxpUHK1CEI+fpq8NQ0ip7m1AsBO4daC1k1qP9hJqMKkiZgKYjBmAEsgrMFnLEyCNW0cyCKZKg+g6R+qVSCc4M+QgCwpQlpXcVlnplGiWcZhFgQYp5xIIt74SAzLYg8MJwySqEmDAajK0mlyMeO8LIx8jQoAoIdiftVLeEmrFAglwZNo1C/m5AvKwNaGiGuLIMBACUH71xhl1zhDo2g38VOQQzGfIjPM76DkKejE3GvReJlGo0aBQBbCqR1pRmqfYSaGuGjGiKtqvFrqIOPMD4+/qeffuI47pVXXhk1apTWf/Py8rZs2XLv3j2Kovr27fv6668LzJLBGI6H1WjaKdbPnkieSDdqcMBgMCbFqXxuSUTjOXAtQAdnuFcJYz0NfiDhPsLaqE2jTzRCAAC4/xidyCd7tG1kn0I1wsTExMmTJ8fExIwfP3769OkJCQlaA8rKymxtbV9++eUpU6bs3r174cKFAveMMRB/POL6HGJeDiX3D6OwFMRgzAsZA4klaICXSWiEHZyIe49NxTRqU58gfGoa5TVC7ul8hRQAEKoRfvvttwsXLpwzZw4ApKenf/PNN/369dMc0KVLly5duvDLzs7Oc+fOFbhnjN6RMfDuFfZ0ATo+iu6Oa4diMGbIxSLU1Y1wMI2qhx2ciA0pLZFBIcg0Wp+P8Pk8QrV3UIi2p4NGqJZ80dHRfFX7OikqKvrtt9+GDRsmcM8Y/XKvEvU+xFSrIGkCloIYjLkSn8cN8zaVGI5QJyK9SmDcSbMQYhq1oeqOGn2WR6hhGgX9aoRFRUVubm78spubW0FBQe0xEonEz8+vqqoqJCTk5MmT9e0qMzPz9OnTmsV8V69eHRkZKXAmhkAikRi0gJ6uSCQShFATprTnEbXyJrW6C/tyEAsKqFHoZz7MU/SzO31gal+ZXC5X16rGYJpPfD76prepCEInEdjTUCCFEFvDHkho1GhdwTJ1pk8AgJDHhFBBaGtrK5fL+WWZTGZvb197jJ2dXXl5uVKpXLNmzciRI2/fvl1nSXhvb+/w8PAVK1Y8mQFN9+zZ09bWwBe4QRBCdZ6REbGzs9PpQV+jgjcS2OQydGYMFd6ocUFHeCloUtFPpvaVCWn1gsEIpEwBD6qQSeX7hjoR6dVkiLsBD8FwIGGg0R44An2EyBA+Qj8/v8zMTH45MzPTz8+vvpEikWjp0qWfffZZQUEBXwu49gBPT09sO9Uj/5Shl06zA9sSieNpG1wsCIMxc87kc/08CStTUQgBnlhHIcaQh6hUgqMVNJrjVZ+PUFVX1CgI0wiFXumpU6fu3LmTZVmO43755ZcpU6bw63fu3JmbmwsAOTk56maJBw4ccHNza9u2sZBVjD74/g436jjzSSS5LZrCUhCDsQBO5RutJX19hDoRGdWG1VCF2EUBwIaqN32idh4h/7FRhF7rBQsWIIQiIiK6du1aVVX11ltv8esXL16cmpoKALt3727btm2/fv06dOjw0Ucf7dmzx+xaZZodFQqYeJLdeZ9LiKWnBeGrjcFYCPF5aKhppNKrCXUCgwtCZeMhowBgQxNytq4Sa09rjWqZRoVUlxGqQdjb2587d+7OnTscx3Xu3FntvsrMzORdNf/+979fffXVhw8fOjk5BQUFqRuHYgzEpSI04ww7OZD4fShtUiYUDAbTHLJqULUKRbialiBs3xIaYeMhowBgQ0GZvI71GsEyBKfhtNenjxAACIIIDw/XWuni4qJednd3d3c3pC8VAwAAHIJ1t7jvUtnt/ekxfqZ1t2AwmGZyKh8N8Ta5aojBDkSulGA4sDJYrZtGezDx2NQTNaqdPqEOlhFwaOxTMjOKZDD7LKPiIHE87WNnajcLBoNpLvF5aJhRW9LXiTUFbW3gUTUKNViXYCFJhABgQzVSdPtJZZmn6/XpI8SYAvF5qMdfTF9PIn40loIYjAWCAM7kc6bmIOQJduDSqwy4fyFlZaB+jbC+yjJYI7QcGA4+TmZ3pqPdg6nBbU3xJsFgMM3ndjmytyIC7E3xHg+yRxmGbMZUoUAeNo2feEPpE3wbJo0O9aB3HyHGWORI0IwzrB0NSRNoD2M3J8NgMIbjVL7JxYuqCXGADINqhEro4Nz4MDFFyNg6Cp8y6Gn6hO4aITaNmjqHs1GvA0ysP3lsFJaCGIyFE5/HmaCDkCfIwdAaoTDTaH0+whYosYZpeVQc/DuR/fMR2j+c7mNKxZYwGIwhUHFwsQjtHGSi+kmIAzKwjxC5WDd+7o37CHVPqMeC0ETJqkHTz7BtxETyRNpVQCQVBoMxd66VoBBHws1U73d/O5QnQeosBb0jNGq0Ph8hAiveR6iVPoGjRs2Uo3lk70PslEDy4AgKS0EMppUQn4eGmKqDEABEJHjbEo+qDWUdFWgataUEaoRP5ol9hOaHioOlV9n3k+kDw6glESaXVIvBYAxHfD5naiVGtWjvZMB4GYG1RsU0IaurH6G2IMTpE2ZKjgRNO8W6i4mLI1W+LrhGXasmMzOztLQ0IiLC2roOm0BlZaW6hpRIJLKzs1P/6969e3K5PCIigqKelQCpqam5e/euj4+Pt7d3AweVhI2Ws/jtyzhUq+BmGYr2NOnrH+JIZFQhYcJFNxgOpCw4NiNYRsUhK5KAp5NTlyPFCfXmxPFc1OsAMymQPDiCchHh5natmrfffrtPnz5vv/12SEjI7du3aw8ICQkJDAwMDg4ODg5etGgRv1KlUsXGxo4ZM2bevHndunUrKiri158/fz44OHjJkiVdu3Zdt25dA8eVhQ7dmoXbCxuH84WoZxvC1rR1kyAHMFDgaKUSnKwECdh6g2WeVpYBPpUQp0+YFyyCj66zCy6wfwyl38Pm0FZPYmLi3r17b968mZCQMH/+/A8++KC+YeXl5eXl5T///DO/Zt++fZmZmampqcnJyZ07d1bLvEWLFq1Zs+bChQuXL19es2YN3zetTlxOr9+Va5dpMCcQpgHi80zdLgoAIY7wwDCCUKBdFABEJHAIavefUJtGAYAEYJ6mGuJgGTOgWAYjjzFXS1DSRDraCwtBDPz++++xsbEeHh4AMH/+/OPHjz9+/Lj2sIqKioKCAq0NZ86cKRaL+Q337dsHAPfu3UtLS5s1axYAhISE9OvX73//+199h6aqCuf7S5ZerSNbGWNoTLD1Um1CHIkHhvERlitAeGBgnYGjmuGsJIE1QvPhUhGKOsD09SSOj6LbiI09G4xpkJ2dHRgYyC/7+vpSFFVbhyMIYvLkyd26dfP394+Pj6+9YWBgYEFBgVKpzM7O9vLysrW1Va/Pzs6u79AqlSo878SVPOn6w0nx8fF1WmUxhqBQBvlSFOlu6oIw0IHIqkF1dQNsLgJzJ3hs6gocfc40SgCjS/qEaRukLZpvU7m1/7A7BtAxuJUSRgOpVKoOkCEIwtraWiKRaI25detW27ZtAWDz5s1Tp0599OiRk5OTTCZTbygWixFCMplMKpWKRM8iEMRice29qamurv7vlu/c2qd+EvFyz2PLO4d1/OKLL/R8evpGqVQihFQqlbEnohsSiYTQeEIfziSj21AySY0Rp9QoUqnUhuPcrcVpxRJ/Oz0Lw4LHpANF1dTU1WmwFtakdenjGpvnlUKZgmZVqKaGBQACRNUSKYAIABBbl0fxebAgNAISBl69wKY9RlfG0e0csBTEPIeXl1d5eTm/LJfLa2pqeJmniXrNm2++uWrVqps3bw4YMMDT01O9YVlZma2trZOTk+be+PXBwcH1HdrV1XXPnj2BgYHDjzHjR8e9FWYGFiNeENYZW2vKIIT4luY8F8vYmADC3t6kz4IgCFtb2/ZObD5jG6bvsuBSgvOwQwKvgK0VQ4rt7LXmQLH2NoS9PQkAFKmyFtsCMABA0413UDSDH7qFkVGF+hxibChIiMVSEFMHUVFRFy9e5JcTEhK8vb0byHmoqKioqanh+2NHRUUlJCTw6y9evBgVFQUAnTp1kslkd+/eBQCEUEJCAr++YTb1ptbcYMsVzT8bjCDi802xB2GdBDsSDwwQTiUwm57HhgJ5g6ZRUsM0+iyjsH6wRtiiHMlB888zn0ZSCzriVxBM3cyYMWP16tWrV6/u3bv3+++/v3jxYj4jcNasWZ07d16+fPmVK1eOHDkSFRUlk8m++eab6Ojo8PBwAHj99dd79uwZFRXl5eX16aefbt26FQCcnJzmz5//6quvrlq16tChQ9bW1jExMY3OIdyFmBpIrk5iv+trsH7kmKfcqURWJIQ4mo8gNEDgaLkC+QrusdposAylGSyDo0ZNBwSw5ga38CJ7YDiNpSCmARwcHM6fP19YWPjDDz+8+eaby5Yt49cPHDiwa9euAODj4yOXy3fs2HHw4MGXXnrp8OHDJEkCQGhoaFxc3KVLl3bv3r158+YJEybwG3711VexsbHff/89SZKnTp3STLRvgI8jqd8fcXcqcSqFwYnPQ8PNRB0EgGBHMETgqE7BMuI6g2U00ycIUHdqEvK0xRphS1CtgpfPscUydG0C7YVbKWEaIzQ0dNu2bVorX331VX7Bz89v/fr1dW7Yu3fv3r17a60UiUT1JSM2gJs1fNiNWnqFPTYKPyUMy8k8bk57s3k5DnEkHlTpP8FG1/QJecPpE4A1QhODdwp6iOH0GCwFMebEwk5kZg0czcFKoQFRcnChEA3xNptHcZCDQXyE5YIT6gHAhiJktXI4nvcREs/SJwRkEprN1TdT4vNQ9N/MW2Hk1mhKhC82xqywIuHrF6j3rrIMzrA3GJeLUKiT6bZeqo2TCMQUFMn0vNuKZifUMxyinxbmIrGP0HT4LpWbc475fSj9eid8nTFmyWg/ws8Ott7DktBQnMzjzMhByGOIeJlyBRIuCMV1RY1qV5ZRl1gTsEP8gDYIKg5eu8j+mMZdiqUH4MJpGHPm697UZzfYCpxKYRhO5qERJl9iVIsgB+Khvq2j5Qpw1cE02niwDPM0awJ3nzAO5QoYeYwplOFMQYwl0NmFGB9Afv5P4+U5MLpSroC0x6iPabdeqk2wIzys1ucOJQyQBIgFp+qI6+rEpO5QD1rpEwJ2iAWhnkl/jPocYqLaEH8No+xxS0GMRfBpJLUznTNQ24HWzKl8rr8XYXbRA0EOejaNliuQcHUQ+KhRwekT2EfY0pwvRAMOMx90Jb/sReF2ShiLwdMGlkRQHyRiT6GeOZGLRvqa30NY7z5CnXInAMCmrib19aZPCNih+X0HJsuuDG7qKWbPYHpeKL6qGEvj3c7k9RKUUISVQn0Sl4tGmFukDAAEO4B+fYS6CsI6g2W0NUL0RARiH2HL8ekNbnUSd2YMPcTkO4phME1ATMHnUeTSq4bowNNKuVuJaBJCnczvieFtR1QqQVrLS9dkyuU6mkbrCpbRihpl0BOjKNYIWwIVB/POs4ezucvj6E7O5vebxmAEMiOEZDnY9wAbSPXDCfNUBwGAAAi012fgaLkCdMqkrDNYRqvoNss90QX17CO8c+fOyy+/HBMTs2nTJrZWh6fKyspvv/122rRpsbGxn332WXW1XoOKTJUaFcSeYErk6MwY2hNXjcFYNATAVy9QK65zChxAqg+O53Ijfc1SEAJAkCPo0U2ou4+wsTxCeGYa1adGWFVVNWjQoNDQ0Pfee2/Hjh3r1q3TGpCUlHTp0qWJEye+9tprJ0+enDJlisA9my9FMhh0hAmwJ/4aRtvhcoyYVsDAtkQXV+K7O1gpbC4yBi4VmVNlNS2CHAg9ZlDoHDXamGmUIoFBTzVCATsU+vzes2dPhw4dPvzwQwDYtGnTzJkzP/jgA80y9kOHDh06dCi/3KFDhw4dOtTU1Gh2nrQwHlShUcfZ2e3JVd3N9aeMwTSBdb3I/n8z80JJnV7hMVpcKqW6uhFOgjvwmRrBjsT9x3rTCMsUEOKow3gxTchr1f17rsQaPDON6jNYJikpqW/fvvxy3759CwoK8vLy6huckZHh6upqZ2cncOdmx40yNOAw+34XLAUxrY4OTsSUIHLNDWwebRYnC4hRZpg4oUa/xWV0No0KCJbRyTQqVCMsKipq3749v2xtbW1vb19YWOjv7197ZEVFxaJFi9auXUvU46PMzMyMi4vr3r07/5GiqPXr1wvpmm04ampqhA++WEy+fNlqU6Qq1oczkCdUIpFwHFffBWx5GIZhGEalUhl7Is/Q6StrAWQymYODg7Fn0UKs7k6F/0/1VhgZbCa9ZE2QU4XU3jAzvnrBjvBQf10JyxXITazDa0Hd6RNawTJIh2AZoYLQ3t5eJntSbxwhJJfL67ztq6urY2JiYmNjFyxYUN+ufHx8evbsuXbtWvWasLAwGxsjh5oIfIr9nc396wq7byg9uK0BjRoEQdjZ2ZmaIBSLxcaeyHO0HsFjanjYwLudqRXXuX1DcP/6ppBZjSqU0N3dVG7wJtDOnsiqQRwSZHhslDK5zsEyDXeo19QIATWuuQoVhH5+fpmZmfxydnY2QsjHx0drjEQiGTNmTPfu3Tds2NDArqysrFxdXSMjIwUe2nTY+4B77yp7ZCQdZc6/YAym+bzTmez4B3O1GL3gge8FnTmei4Z6cWZ94WxocBMTeVLkZ6eH82hK+kRdptHnim4bwkc4bdq0w4cPFxQUAMCPP/4YExPj6OgIAIcPH75y5QoAyGSycePGBQcHb9682XRUGT2y7R63/BoXPxpLQQwGbGn4NJJ87xr2FDaFozlouJfZX7ogB71ZR8sUyE2sW9RonZVltNInhEeNChWEkZGRr7zySteuXSMjI3fv3v3ll1/y67du3Xr48GEAOHz48OnTp//66y93d3dXV1dXV9cHDx4I3LnpsyGFW3eTOzuWCsMp8xgMAADMbk9WKeFgFk6l0A0FC+cLuaFtzb5Ej75a1deogNal9QQAiGvVGmU4oMhnMo/vPsGLN336CAFg/fr1S5cuLSkp6dixo5XVk8YKf/75J0mSADB+/Pjy8nLN8bzKaAF8/g+3K507P5by1YcRAIOxDCgCvuxFvXOFHeNH0mYc/9jSnC9EnV0IF5HZC8JgR+KhPnLqdVUHoS6NUDNSBp74CJH+8wh5vLy8vLy8NNeoAyhEIpFIZLZJMfWzOon9XyY6O5b2woVjMJjnGelL+NnB9jRuYScsCYVyNIeL8bOEyxXkAIdz9LCfMrluDkKoK2pUM1IGnvoICUOUWGuFrEhkD2ShM2OwFMRg6mZdL2rNDbbahDJrTJ2jOWi0nyXYloL0pBGWKsBNx4B0kgArEjRL/dUWhCwCChfdbj4fXGOP5aLTY+g2ppU1gMGYEN3diGHe5Fe3zD70o2VIf4wkDHRzswRBGKynnPoyOXLX0TQKtZTCujVCIAC3YWoOyxPZE3kofjStq86OwegFlUr1+PHjJmyoVCqlUmnt9VVVVbVr5euFz6LIzXe4gjqOidHmcA4a7WchUfUeNqBg4bGyufsp0zF3gkeruIyKQ1YaEo8EYLBG2Ew+vM7G5WIpiDEa27dv9/T0DA0N7dGjhzp/tzZxcXGurq5ff/01/7GqqmrKlCl+fn7t2rWbOnWqugLG8ePHAwMDIyIi/P39//rrL73P1t+emNeB/DgZK4WNczSHG2MRdlEevRRaK5Ujd92tbmKakGsEjmpphBRJ6FRZBgtCbT5OZg9no5MxWApijENOTs6777575syZoqKiwYMHv/3223UOq66ufv/990NDQ9UC7+OPP66urs7JycnNzZVIJHxdi7Kyspdeemnz5s1ZWVkHDhx45ZVXKioq9D7nFd2oA1ncnUqzj4Q0KFUquFaMhvlYzlM3yJFofjOmUjm46dJ6gqeWRvi8aRQ0gmUE7M1yvhK98J+b3B8P0ckYuglvKBiMXti7d+/gwYO7du0KAEuWLDly5EhZWVntYcuWLVu4cKFmgaczZ87MmTOHj9+eO3fujh07ACApKcne3n706NEA0LNnz9DQ0D/++EPvc3YWwfKu1PJrOKewIeJyub6ehCW1bAtygOY3YypTQFM0wkZ9hNg02jS+TeV+vs/Fj6Y9cIwoxng8fPiwY8eO/LKPj4+NjU1WVpbWmLNnz966deu1117TXGlnZ6d2Kz5+/DgrK4tlWTs7O4lEwjBPKjNWVlY2UOmC47js7OyHT6mq0qFwyBudyNsV6FwBVgrr5XA2ivW3qEdukIMeAkdLmxQso1VutI6oUV061FvQy0nz+CmN23ibOzeGamtr7KlgWjePHz/WzNZ1cHCorKzUHCCVSt98880//viDr2WhZsaMGV9++WVoaChBEBs3bmQYpqamJioqysPDY8mSJfPmzTtw4EBOTk4DMThlZWWzZs2i6SePhcjIyF9++UX4zFd1Jpdeoc8MV7akE0ypVCKETKo1Sp2wCI5mi1Z0UvJ9UyQSidmVopRKpVpdcbytyD8rqZoaWXN2WyQR2XKKmhrdBKoVWJXXKGvsnhghHtcQFFipm9JwrJUcADgCgOAExIhhQQgAsD+bXH2LOzOa8rc3s58mxvJo06aNpuSrrKz08PDQHLBhwwYfH5/U1NTU1NTc3FyRSHThwoX+/fsvXLjQ2tr6m2++cXJyev/999955x0nJycAOH369Nq1a5cvXx4dHT127Ng6u6epD33mzJnAwMCmzfzlcNiczhwttp0W1HJ6Dy8Ira1N3aV/oRD52bMdPJ70KkcImV3fcoIgbG1tNQVhZ0+Ulcza2zfr4perGH9XW3sd63bZixhCJLJ/+sS2kiBrmlVfUmsrFgBoCgEgmm68ehsWhHA8Fy27YRU/mmrvhKUgxvh07tx5165d/HJqaipJklqSqW3bts7OzryrLy8vTyqV8oKQIIj58+fPnz8fAD7//PNevXrx4318fDZv3gwAMpksKChIy6CqRwiA9S9Q88+zE9uRIosyAeqBv7O5cQGW9oQJsCfypEjLLKkrpXLk3oRgmSflRp9sWGceoaFKrFkel4rQy+eY36JVEa4WWB8OY4689NJL//73v7dv3z5kyJBly5bNmTPHzs4OAFatWuXu7r548WK1tAOAyZMnd+/efcWKFQBw7969nJwcf3//CxcubNy4tMW9zQAAIABJREFUka+GDwAHDhwIDg6Wy+Vr166NiIgYOnSo4SY/qC0R5gKb73DvdsaS8DkOZqHfBlta+0YrErxtiawaFNLUFs3VKrAiwUZ3QdR41CgyQBsmiyS1Ak2KZ3YNonu64Wg3jKng5OR07Nix33//fezYsUFBQevXr+fX29vb1+5f3aVLF7W+qFQq161bN27cuP379x88eLB37978+pSUlNmzZ8+fPz80NPSvv/4ytGvqPz2p/9xkK5udZ21J3K1Ecta8O/HWR7AjPGhGM6amRcoAgJgGeYPBMgz3tPuEgL21Xo0wuwbFHGc39qZG+BDVzY4AxmD0yAsvvHDy5EmtlcuWLas9cvXq1erlLl26xMfH1x6zcuXKlStX6neGDRDuQkwIINf+w37Zy9IUoCZzIAuNDzC32BhhBDvwqYRNPLkSObg3ycOopREqOSTSrCyjY/eJVqoRlitg1HF2aQQ5PbiVXgEMxnB8EkntuM9l6RgHaMEczOLGB1jmoybYsVldCUvk0KZJ6WoNp09Qmj5CbBqtExkD404wsf7E29iNgcEYAC8beCuM+vA69jgAAORJUMZjNMDLIhXC5ppGS2SoTZNMozYUIWOfCWAlB6JaCfVYI6wXDsGss2w7B+I/2G6DwRiM97qQZwvQ9VKsFMKBLDTGn2xOXKUpE9K8Kmslcmhaex8xJTShHqDx6Vnol1M/S66ylUr08wDKMl/PMBjTwI6Gj3uQy67iStywP5Ob1M5inzd83e0mS8JiGfKwaZJGSD/vI2RBpKHaPNEIAQBrhLX55jZ3Kg/tH0bjJCcMxtC8EkqWyOFQVqs2kJbKIbkUjbCgQtta2FuBgxUUSJsoCkvk4NEkjdCm4VqjoFseocV+PbU5lMWtT+EOj6SccMYgBmN4KALWv0B9kMgxrVgUHsziRviSTciTMyNCHImMproJi+WoTZM1Qg3TqJaPkCKBxXmEtblRhv51gf1rGBWAi6hhMC3FKF/Czw623Wu9kvDPR9xky7WL8oQ4EhlNdRMWy5quEQpMqMdRo0/Il6LxJ9it0VTPNhb+i8RgTI2vXqA+u8E2v4+5OVKhgCvFaIxldZyoTXAz4mWKZeDZxPQJvsTaE+qIGtUlod7CvyEAkDEw/gT7Rhg5qZ3lnywGY2p0cSXG+JNr/2mNUTMHsrhhPqQlNSCskxBHaLJptETejGCZ56JGkZV2Qj32ET4FAcw9z4a5EMu7WviZYjAmy5pI6qc07lEz0q7NlD8ecVMCLd8KFeJIpD9uypdbqQQxBeImJbJpV5apHTWKE+rVrLnB5dSg/0bjlEEMxmi0tYV3OlPLE1uXp7BMAZeLLN8uCgDtnZroI2xy7gQA2NAgbSBY5rmE+sYPYclf0l+Z3E9p3P7htDWWgxiMUVkaQV4pRpeKWpFSuP8RN9LX8u2iAOAsAmsKinTvzlsoA68mOQihjlqj2j5CFgfLAMDtCvR6AvvXMKrJFxqDwegLGxrWRpHvXmFbjyT87QH3UrDl20V52jfJOlokQ57N0AifS5/QMo0CDpYBKFfAxJPsxt5UD0vse4LBmCMzQkiSgD0ZrcJAmi9FN8vRKF/LfMDWpmkZFIXSJoaMAoBtI1GjBIsQSRDQagUhh2DmGWZ8ADEDd5bAYEwGAmBDb2pFIidhGh9s7ux7iMYHkE0LAzFH2jsR6boLwiIZ8rJtqkZIgbRB0yjDAdWaE+pXJrFKDv7Ts9X8BjEYM6GPB9Hfi1h30/JTKfZmcK3qRby9I6Q/1nmrZvkIaVCwz8ppa5lG+WAZotX6CA9kcXsy0L4hNG1pZ4bBWALrepE/3OWyLbpV4b1KVCCDwd6tyC/T3om4r7uPsFDadI2QALCmnjWpV9SvEerZNJqQkDBp0qQhQ4Zs3rwZ1VVt/NChQ6tWrXrttdcyMjKE71aP3H+MXrvI/jGUcm9SzR4MBmNofO2IReHU+9cs2VO4O4ObHkS0qgY3fAaFrpKwQAZtmxHMqGkdVbK1O9Q/EYH6FIRZWVmjR48eM2bM6tWrN23atH379tpjvv7665qamj179hQUFAjcrR6RMvDiKXZNJK6jhsGYNO9HkNdK0LkCy1QKOQS7M9Ds9q3LJOVoBY4iyJXo9p0WSJGXbdMPqhkvo+TAulZCPUUC6Nc0+uOPP8bExMyfP3/gwIFr16799ttva485d+7chg0bbG2bcWbN4PWLbA83YkHH1vX7w2DMDhsa1vci377MWmQuxblC5GINXVxb3et4qBNxXxc3IYugTA5NTp8AAFuNnPq6E+oBQL8a4Y0bN3r37s0v9+7d+86dOwqFQuh8Dc/2e9w/5WhLPxwgg8GYAS8Gkm5i2HbXAg2kv9znXm5l6iBPBx3dhEUy5CaG5hiQbahnglDBPqcRUgRwuiTUCy17UFRU5OLiwi+7uroihIqKivz9/YVPWs3Dhw/j4uJ69OihXvPVV1/16tWrCbviuVVBfHjdKm6oipPLa5q0B4lEQgi5Wi2FRCJBCJnOlJinGHsizzC1r0wulzs4OBh7FubEt32oIUeZqUGkJXn0q1RwKIv76gUrY0/ECIQ6EWm6CMJ8Kfg0NVKGR1Mj1BKEmp0IhRxDqCC0t7eXyZ6U0JFKpQDg6OgocFstAgICevbsuXbtWvWazp07W1tbN21v1SqYe4X5tg/ZvW3T++0ihOzt7Zu8uSGws7MznQc9LwXFYhN6YpnaV1Zn+BimAcJdiBnB5IrrrCWVAv7jITfYm2xjQjdKy9HBiYjP00HFz5MgbztDCULqOUHY+L0pVBAGBAQ8fPiQX37w4IGjo6Ozs7PgCT8HRVGurq6RkZFN21yLBRfZIW2Jl1pTyg4GYxl83IMK+5O5VoJ6WUqA249p3EfdLUeu60QHJ0jTxUeYJwGf5sWT2NKEjEW8yqfgwPp5HyGAAXyEL7300r59+yoqKgBg27Zt06dP59fv3r37xo0bgmeuZ35M4+5UoE19WukvD2OpHDlypEuXLh4eHjNmzKisrKxv2LVr16Kion799Vf+o0KhWLZsWXBwsL+//6pVq9RKamJi4qBBgzw9PcPDw3/44YeWOAFhOIlgXS/yrUssZxHqdEo5ypXAKF8LEeq6EuRIFMqQXHCxhDwp8tGnRoisNfyNlI6mUaGCcOTIkTExMR07duzUqdONGzdWr17Nr9+0adPFixf55YiICIIgSkpKBgwYQBDE/fv3Be68aaRWoA+vs/uGUK2njhGmNVBUVPTSSy99/vnn9+/fVygU77//fp3DFArFG2+8IZVKCwsL+TWff/75+fPnL126dOXKlSNHjvz0008AgBCaMGHC2LFj8/Lydu3atXz5cvUNawrMDCFtadh2zxKiZrancfNCW1f6oCYUAcEOOsTL5ErA165ZRxRqGtVj+gRBEFu3bk1JSTl06NCNGzfatm3Lr7969epbb73FL6ekpCANQkNDBe68CchZmH6G/U9PqqNza/3dYSyU3bt39+vXLzY21tnZ+dNPP927dy/vlddizZo1kyZNCg4OVq85dOjQ22+/7enp6e3tvWjRom3btgGARCLJz8+fNm0aTdM9evQICwszVr2LOiEANvelPk5mi3Vv4mNSSBnYm8H9q3Wnb3V0Ju5WCheEyLfZGqFET8Eyun1tHh4e7du31wzioCjKKDEdS6+yES7EK6Gt+meHsUju3r3brVs3fjk8PJxhmOzsbK0xN2/ePHbsWG1lUW0O5Tjuzp07AGBvbz979uyVK1deuXLlv//9b0lJyZgxYwx8BroR7kLMbU8uvWreBUj/7yHX15P0a96T3dzp5Ay6CMLmaoR2mhphnT5CvadPmBSHsrjjOejGJLOcPAbTMOXl5YGBgeqPDg4OpaWlmgMYhnn11Ve///57K6vnwvTHjh27cePGAQMGsCz7/fffS6VSmUxmY2Mzd+7c+fPnp6WlZWdnL1iwwM3Nrb5DFxUVBQUFqT8OGzZs//79+juzelkaSvQ8Jvo7Qz7IU2cbqVKpRAgplUpDTEw436aIPu7CVlcLFec1NU1L9TImUqmUZdkGNJ9Aa/JwPl1dXYcBQwsEkFNj7YLk1dVN9w9TLF0hgepqhkWAkFgmqVb/SyknAUSsSglAMypVo7syP1lSIIXXLrL7h9OOrTFXB2P5uLq6aj4lq6urtUTXN998ExQU5Onp+fDhQ6lUWl5eXlhY6OXl9dFHHymVyqFDh7q6uk6bNu3Ro0c2Njb5+fmxsbEJCQndunWTyWR9+vRp27btggUL6jy0p6fnmTNnNMVwy+AAsCUaLblC3pxE6+ry5wVhk/Ov9MLlYiTl2HEh1kI6/qgxu8RTkiRtbW0bEISR3ujrNFbIeZXIwZZWeTg3KwPK1Z4rkiIHBxsJA2JKpXlcezsOgLWxFgFwIqvGRYWZmRYRwNxzzMIwqo9HqzZBYCyYkJCQ27dv88v3798nCMLPz09zgFwuz8jImDp16tSpU5OSknbv3r1+/XoAEIvFX375ZVpa2uXLl0UiEW9fTUtLs7W15ZdtbGz69et38+bNFj+nxhnjR3R1JT67YZYG0u9SuTc7kTpJQYsk1Il4WI1UArT67Brkb9/c62X7tOi2nAWt9ydesFGW2obpm9tcDQMruprZtDEY4cyaNevMmTMXL15UKpWff/751KlT+dIB33333e+//w4AH3744fWn9O/ff/HixV9//TUA5OTkZGZmMgxz6tSpdevWLV++HADCw8OlUumff/4JANnZ2UeOHOnZs6dRz69evu1LbU/jUsrNLJciV4JO5HKvdMAPJRBT4G8nqENvVg0KaLYgtLMCiQoAQM4gMf3c3vhy2//f3nnGRXV0DXzuLrhUKUsHkd6EIAIiTRFQioDYpQQVUayxPeHJa0VjrHlEo9GowaixR0MSiSJKFVGkgyC99yIdli133g+T3KxLcY2soN7/B3+z4+Hec+/MnTPlzBl0GN/HdjBvXhs8kMX52YFKnjVI8hGjpqYWHh7u7+9Pp9NbW1uRkQMAFBUVDfSaUVJSIkJbVFRUODg4jBs3bsOGDd99952LiwsAQEFB4datW/v27ZOVlbWxsfHz8wsICHifj8M/SqLgGwtq0OMPLBj3qXz8c10KuVKDmCSDveCjK1PZDSa+88SwuBDoZgMAQN+AESEaC/J/HuEHs0bIxIF/POfQVKqW5Cc/AUHysbNkyZIlS5bwZJ48eXKgJPeBaPb29hUVFQNl5syZM9Y8RYdipT7lRil+/AW+zeTD6O12s0B4IZ4694NpSAWNsQx40QYXv0msvAu+e0suIYz1sHAAAIMDRHkNIQYAoGJ8WUHwAY0IQ9M5GhJYILlfgoTk4wUD4Lw99XA2518cdz4qnC/EnVQoGmTv/G+MZbHcV28WK++CmiM3IhxkjfCvESG/m/s+DLuS3AgvFuNnP6LgvCQkJIOiKYntMqMGJn4AcdeYOAjLxUM++zBa0ffDZ7JYbtubS66sE4zEiJBYIwQir4/J0aSoEOUjGhH2ssHyRM5pW6qC6GirQkJCInjWG1GEKCDsxViPu/ZzMW4kA6bIkcPBf9AZjzX2wa5hd+5BACq6odb4d3aW4VojHDA1+te/H8+I8L/POdYKmPfED0BVEhKSd4eCgZ+mUw9nc/L4GFuMFmwcHMrGd0wmp6leg4qBSTJYdutwBVfbA6XGAfF3XleVFMa6WRAA0MuGYjxeox/ZiDC2Dv5eCU+Q50uQkHxKaEpiBy2pn8dzmGN1WHi1FJ8gDuyVyOEgL5NlsaxhHUeLO4HOOw8HAQCSwgANPXvZQGywqdGPxFmmmwWCHnPO2lGl//2ZuyQkJB8kK/Up6hLY7vSxuMWehYOvM/FQc7KDPghmclhGy3CGsKgD6kmNgCEUFwZ9bIDDQQzh384yfG0iBGPcEIY858xUxtwmkH0uEpJPkR/tqVdKYFz9mJsgvVCEa0mC6eRwcDDM+TCE+iNhCDEAxIRAN3vIEaEw5cM3hHH18M9qeGwa2eciIflEkRMBF6dTA+I5zYzRVoWLXjb4OhM/YEk2TYNjIoOVdMI+9pAChe3QQHpk7iUpjHUx4UBDiIKuiAuBJA++bNwYNYQ9bLDqMeeMLVWKnBQlIfmEcVbFPtfBliewx86oMOwFbqeIWZDOokNAowJD6eGWCfPbgeEInSMrNQ50sEDPAGcZ4b+Dq5nK8nWjMWoId6ZxbBUxd3JSlITkk2efObWTBQ5ljwm3mfpecPwF54DlGG05xwhWCtizpsENYTcLNPVBzREKQSA1DnQyQTcLSL4e4g4ZQirfNxmLxfm0Cd4qg2HkpCgJCQkAQhRwYyb1ZB4ntm70h4X/l8oJ0qeQgR6HZ5oC9rRx8MJ60QYNpTH+TdTwjBcGHUzQxQISr0+NfvCGsJ8DghI5J6wpsqN5vhgJCckYQlUcu+Ig5B/PruoeTVuY3Ahj6iC5d/CN2ChiT4YwhFmt0JQ+Yt0IqXFYBxN2s4HERzYiPJjN0ZPCFmqOOcVISEhGEUcVbJsJdf4jTu/QXhgChYWDtU84/7OiSJAHTbwJLUmMgoHSwc5jymyFU0bOEMrQQBsTdLOgpPDga4R8MrbsTV4bPJ2Pf287trQiISEZC2wzoRhJYysSR+eYpqM5uJo4WKxFtk58MUMZix9s30tqM7SQHzFDKEsDr/pBBxOMf92tUpjy1+kTfDKGChWHIDiJ87UFVUWMnH8nISEZhPP21NoeuCvtfe+yf9EGj7/g/EDG/ecbRxUsZsCabg8bFHVAPj05+UGGhrX1w7Z+IMNrCAEAgMr3kHAMGcJzBTiGgVXkQc8kJCRDQKOC32YJ3SqH5wvenxMpEwefx3MOTaVOECf76PwyWxV7WIvzDN6fNcHJdIw2ct0JeRHQwgBtTCDzuk/Jh7pGWNcL92Rwztrxb8JJSEg+ReREwD0XamgGHlHxnmzhV885WpLkYahvh5o4pibO6zsaV4fPVBnJJl5BFGvqg239UIY2yBrhOL5LbKwU7ZZn+GoDitEI7bIkISH5iNEZj0W6UNc84UTXCny5MKICj6iE5+3JSdG3Zp4G5fbrnZX7NXC26kgaHUVRUNwJqBjvWRbIENJF+L3OmDCE96thZivplExCQsIvZnQswlno83h2TL0Ae895bXDNE84vTlRyN9e/wEcLu1mKs/42hRVdsLYH2iiOZHlNEMeKO6DyALcSDAAhClAQ+XDWCPvYYEMy53sbqghpB0lISPjGRhH71Vlo2WN4r0YgtrCxD3hFc/5nRSWjqf07dKUwQ2nsdvlflvBiMb5IkzJSW+kRCqJAXBhoSg7yX8t1Kfyf5T76hnB/FsdKAZulSlY1EhKSt8NWEfvdCax9Ci4Vj/B6YQcTuEWxl+lR/HVGv5H8cPm/ydS9GTiDA9qZ4IeX+HqjEX6ZGABOKhQXtUEue96eyr/RfedDgt+NgnZ4vgDPWUDuUCUhIfk3mNNB9Gw4Lw4v6YT7zEdmvNHOBG5R7OnK2G4z0gq+E7NUMQt5bG40u48DfLQpBgLwAvlt1gjMJY5yMW9I5uwyoyrxPYAlISEh4UFfCjybK5RYD+dGc9r63/Vq9b1g5p/saQoYGe54RLgwneo5keKnQ/nWauy+z1EwhE1NTXV1dQCA66V4GxOsG+nB8tsCITx37tzo6sDDb7/91tDQMNpa/MPLly/j4+NHW4t/YLFYFy5cGG0tXuPmzZvt7e2jrcW70t3d3d//zpbk/ZKRkZGSkiIvAh65C+lJAbMI9rvE5n7eDK1+Zy/WooRNG9nFrNdgs9nh4eECu7yg+OOPP2pra9/2r8ZRwAYjSrDBCK8O8kl1dfXdu3ffKMavEYIQhoWF2dvbu7u7x8bGDioTFxfn7u5uZ2d37NgxCIesiyUlJZWVlV0s8OVz/JTNW0zjCoi+vr5du3aNshKvc/HixZycnNHW4h8SEhJ+++230dbiH5qbmw8fPjzaWrzGDz/8UFRUNFJXq6urCwwMtLKyCg4Obm5uHkqsp6cnICAgLCyMyImOjvb29ra1tf3mm2/Y7L+Ccq5cuXIxF6dPnx7qgh0dHU1NTSP1FO+H6Ojo+/fvAwCEKeBbK+pZO+ryBE7Q47c+y5eNg4PZuFc0+5QN5f9MBds7b21tPXjwoEBvIQiuXLmSkZEx2lq8HRkZGdeuXXujGL9rhOfOnTtz5sylS5fKy8vnzZuXkZGhra3NLVBeXj537txTp07p6emtWLFCRERk3bp1w1wwNIPjoopZK4y2GSQhGXssWLDA1NT07NmzJ06c8PX1ffjw4aBiO3bsSEpKIsZwT548Wbx48cWLFzU1NTdv3sxgML7++msAgJeXF5PJRDKrV692d3d/P08xKrioYS8WCu3N4BjdZq03omycRKXzsfPhfjX8bypHRQykeguR4WM+Qfg1hCdPnty3b5+1tbW1tXVUVNT58+cPHTrELfDjjz96eHgEBAQAAPbv379z585hDCFLXvdKCf6C9JEhIRlAWlpafn5+QkLCuHHjTp06JS8v//LlS0NDQx6xp0+fpqam+vv7FxYWopwrV674+/t7e3sDAI4cOeLq6rpz504ajTZ37lwkkJyczGazFy5c+D4f5/0zXhj8z4q63ohyMAvXvcXymEBZrEWZqYKJD2jtqnvgbxUwvBDHAdhnTvGeSLrGfKLwZQhZLNbLly+nTZuGflpZWQ2cdc3Ozp41axYhUFhYyGAwREQG39nf5hRy1Iwqz/e2fxKST4esrCwzM7Nx48YBAMTFxY2NjbOzs3kMYX9//7p1665evXrr1i0is7e3V0VFBaUlJSVfvXpVWVmpp6dHCISHh/v4+EhISLyX5xhltCSx8/bUQ1Op10rwsBecpbFQUxLTGo/J0QATBy0M+LId9LKh2wTKt1ZUJ1WMHAZ+yvBlCJubm3Ecl5aWRj9lZWUbGxt5ZBobG7kFIISNjY0TJ04ceLXi4uI+kaQQqwUh+F8h5NXU1Ebx44QQMplMc3Pz0VJgICUlJRs3bpSUHGyb6GjQ3NzMYDBSU1NHW5G/YLPZra2tY6rICgsL29raRuRSTU1NMjIyxE8ZGZmBn9vu3bvnzZtnZGTEnTljxowDBw5s3bpVTk7uzJkzAIDGxkbCEPb09Pzyyy/R0dHD3JrD4bi4uFAofw2MRERE1NXV3/2JBEpTUxOO41FRUcOL6VCFGTKauZJKHBEpDGdTGZ1i7ZUynbU5EH75fhTlgsPhtLW1mZmZvfc7vxPl5eWFhYV79uwZbUXegs7OThrtzZPjfBnC8ePHAwB6e3uRqevu7paSkhoo09vbi9Ld3d0AgIEyiJs3b167dm38or9W7CkUira2tpDQaO5o7OzsRM84Rujs7JSUlMTGTCeVxWKxWCwxMbHRVuQfxlqR9fX12dnZjcilJCUliU8JANDT08PzpBkZGQ8ePHj+/DnPHy5fvjwnJ8fIyEhCQsLb25tGo8nJyRH/e/PmTVVVVWJeZ1Du3LnT09ND/KTT6QoKCu/0MIKHyWTiOD7U5NOYZaxVYH7o6uoSFxcn+kkfBDiOy8vLv1GML/MjISFBp9NLSkrQxEtpaenAoZ6GhkZpaSlKl5aWSktLEwNEHqSlpYf3oyEh+ZTR0NAoKSlBaQhhWVmZhoYGt0BOTk5VVZWSkhIAoK+vD8fxSZMm5eXlUSiU48ePh4WFcTicvLy8s2fPampqEn914cKFoKCg4W89b968EX4YEpIPAsgfGzZsWLJkCYSwtbVVXV09KioKQtjV1bV///6Ojg4I4cOHD1VVVZubmyGEfn5+a9eu5fPKJCQk3DAYDDk5uXv37kEIb9++raamxmKxIIRJSUlXrlzhEd6zZ8/ixYtRuq+vr729HULY0dHh5OS0adMmQqywsFBYWLi+vv49PQMJyQcFv4Pc3bt3V1RUaGho6OnpeXl5zZ49GwDQ2dm5e/fujo4OAICTk9OCBQv09fU1NTWLi4tDQ0MFZ7xJSD5iaDRaeHh4QECAkZHR+vXrL1y4gBYOEhMTL168OMwfNjc3a2hoaGtrKysrT5gwgXur5Y8//ujp6YkGkSQkJDxgcOid7wOpra0VExPjXsnnoa2traenR01NbSR0IyH5dGEymbW1tWpqasLCb7HLiMlk1tXVycrKfnDrTyQko8jbGUISEhISEpKPDMH6auI4fufOnby8PGNj4wULFgzqBpmenv7nn3/S6XQ/P7+h/GtGkMrKyps3bwIAFi9ezOODAABgMpkxMTFZWVk0Gs3FxWXSpEmC1qe2tvbGjRtMJnPRokU6OjpDiZWWlsbExHh6eiorKwtUHzabff369dLSUktLyzlz5gwq09bWduvWrbq6Om1t7UWLFomKCjZo+rNnz6KiopSVlX19fQfdUpKbm/vgwQMWi+Xg4GBtbS1QZVgs1osXL3JycnR1dW1sbAaVaWxsvHbtWm9v7/z58wduhBcc+fn5ERERYmJifn5+g3p7VlZW/v77793d3fPmzeNW7M8//0xPT584caKPjw/avwgAaGho+PXXX1tbWz08PLgd/TMzMyMjI2VkZPz8/IjJISaTee3atYqKCltbW2I/MT+8sb5BCCMjIzMzMzU0NHx8fIjxcV1dXURERFtbm5eX12effUbIR0dHp6SkqKio+Pr6oprJZDLj4uIyMzOFhYVnz55tYmKCJBMTEwsKClCaQqG80ZOIm7i4uISEBHV1dV9f30EdVtPT0x8+fCgqKurj40OURX9//82bNysqKqZMmeLh4UEI5+Xl3bt3j0KhLFmyhJhOu3btGnK/BwCoq6u7urqidEtLy9WrV7u6uubOnUs8Cz+0tbVdvXr11atXnp6eg+7c6Ovru3nzZlVVlaWlpZubG5Gfk5MTFRUlJCS0dOlSYqMqi8X65ZdfSkpKTExMvL29Udv+8OHD8vJy4g8lJCR8fX0BAL/88guxuUhZWdnT05NPnaurq9PT01+9ehUYGDioAITw9u3bA01MTU3NjRvM546bAAAVzUlEQVQ32Gz2okWLuIOg3b17Nz09XVdXd8mSJcRWhaamJsE6wm7YsOHAgQOioqL79+/ftGnTQIF79+6hzyYxMdHa2rqvr0+g+pSWlpqZmdXX1zc2Nk6ZMoXwzSMIDQ3dv39/Z2dnZWXltGnTbt++LVB9amtrzczMSktLOzo6LCwscnNzBxXjcDjLli3buHFjcXGxQPUBACxduvSHH34QFRXdvHkzCtDFQ0lJibGx8aNHj6hU6oMHDyorKwWqz61bt7y8vISEhO7fvz99+nQWi8UjcO/ePXt7+66uLgCAt7f32bNnBaqPr6/v/Pnzd+7cyb2TnZvm5uYpU6bk5eX19fVZW1u/t82XKSkp1tbWDAYjLy9vypQpLS0tPAJZWVnm5uY1NTUsFmv69OlPnjxB+cHBwbt27ZKQkLh9+7abmxuaIiorKzM1NS0oKBASEnJzc4uMjETC0dHRjo6OOI4nJydbWVkRey28vLwuXrwoIiKyatUq7tinb4S7vu3fv3+gQGBg4L59+yQlJa9fv+7l5YUyi4qKTE1NS0pKMAybNWsWsTnyyy+/3Lp1q5iY2P379x0cHDgcDgDgwIEDe/bsaW9vr6mpsbW1vX79OhL++eefL1y4kJ6enp6e/lYhNM+cORMQEECj0W7cuEG8MW4uX76M2vqioiJzc3MUvpXJZNrZ2d25c0dCQmLnzp3bt29HwpGRkQ4ODgwGo6GhwcLCoqysDOV/9dVX0dHRSD2ipWpvb7ewsEhPT2ez2fb29o8fP+ZT556eHisrq6SkJACAk5PTgwcPeAQYDIa1tfUff/whISEREhKyd+9elP/rr7/OmjWLxWLV1NSYm5tXVVUBADgczqxZsy5fviwpKXno0KGNGzci4bKysvS/OX78+E8//YTy9+7dGxkZifKJQEhv5OHDh8bGxnv27NmwYcNQMhs3bvzmm2+QiSHUqKqqmjx5cmVlZVtbm7m5eX5+PsoPDQ3dtm2bqKjo999/7+/vjzJfvXplbm7Or9fov6C2tpZGo9XU1EAIq6urRUREBjqtWVtb//DDDxBCHMctLS0vXLggOH0ghBs3bly1ahVKr1mzZv369TwCyAMWcfjwYVtbW4Hqs3379qVLl6L0l19+GRAQMKjYkSNHvvrqKzk5uYSEBIHqk5ubKyEhgV5CZmamlJRUV1cXj8zs2bO/+uorgarBjbGx8dWrVyGEbDbbyMjo1q1bPAJ+fn4hISEoffr0aUEXGYPBgBCuWbOG2yeTm/3793t4eKB0aGjo/PnzBaoPgbe39969e1F6zpw5Bw8e5BFYvHjxf/7zH5Q+efKkq6srhLCiooJKpaIPk81ma2pqPnr0CEK4bt26ZcuWIeHr16+bm5uj9PTp00+ePAkhxHHcxsbm7NmzEMKnT5/S6fTe3l4I4ePHjxUUFNBbeiOovnV2dsK/61t3dze3AHJ2Rb7oTCZTTU3t8ePHEMKgoKDVq1cjmUuXLtnY2EAIW1paKBRKcXExUs/ExCQiIgK+/lGHhYVZWlqidFBQ0OHDh/nRkxsWi6WmphYdHQ0hZDAYKioqcXFxPDLq6uq3b99GaT8/v9DQUAjhjRs3dHV1ORwOhLCmpkZMTKylpQVCaG5ufubMGSS8efNmolGaMGFCZmYmz5XDwsIcHR1R+ujRo6gQ+eHcuXNWVlY4jkMIT58+bWdnxyNw6dIlIyMjJFBWViYhIYE8kI2NjYlmee3atVu3boUQ3rt3T0VFpb+/H0LY0tIiLi5eXV3NfTUcx7W1ta9du4Z+Tpo06V+0XUwmk8PhpKeni4qKDipQV1dHo9HQrWtqakREROrq6iCEX375pb+/P5LZsmVLYGAghBBtzs7OzoYQtre3i4uL5+fnQwiPHDni4uIiwBFhQkLCpEmTVFVVAQBqamr6+vo8/Zeenp6nT5+iEMAYhrm5ucXExAhOHwBATEwMMeR3d3cfeDtuFwMqlcpPSAKB6gMAKCoq+vnnn3fv3i1QTRCxsbG2trboJUyePFlMTCwtLY1boLe39+HDh76+vjdv3rxx48arV68Eqk9jY+OLFy/QK6JSqS4uLgNfkZaWVklJCYQQAFBcXMwTC37EeWOViI2NfWOZCoKYmBgimvag962qqjIwMEBpAwODmJgYHMerq6vHjx+PvEmpVKquri4K8F1dXU0IGxoaoukpJpP5+PHjgR9sbGysg4MDmoe0tbXt7+8fam5joM52dnZounvQ+lZdXU2n01FYAGFhYW1tbaQez7MkJyf39PTU1tai6BxIPX19fTRSHOajzsnJOX369IMHD9DYkR8KCwtbWlpmzpwJAKDRaE5OTjyvGsfx2tpabvWQGlVVVbq6umg3uqqqqpCQEBqf8TwLd+ife/funT9/nnu0yl273NzcYmNjIX9OHugP0cyhm5vbkydPGIzXjueorq7W19dHApqammw2Ozk5eSj1qqqqtLS00Cw6nU6XkZGJi4vjvlp8fHxraysKe4t49OjRuXPnUlJS+NEWISwsPPzm/cTERENDQzSZrKqqamhomJiYCIZoV1NTU6WkpNAsupSUlI2NDcpHwgI0hPX19YqKisRPJSUldAwhtwAAgJBRUlJCOe9HJUVFRR59uGloaDh69OiWLVvepz6NjY08HySO46tWrTp27Jig1+EIfbjXlgYWWUVFBYZhQUFBKSkpv//+u7GxsUCnRhsaGsaNG0csRA3UBwCwY8cODMN0dXWNjY2fP3/+3XffCU4ffuAp046ODu5YLQKiu7u7q6tr+E/J0NCQmA5NSkpisVhNTU06OjpdXV1o7qi7uzsrKwu9YR5hAEBtbW1DQwOEcOBduKsNhmEKCgrDfFncvLG+6enptba2ohWBjo6O3NzcYdTT0NAQEhJCTW1/f39qairP1Zqbmw8dOkR81PLy8hiGvXz5ctOmTXZ2dnyuy9TX19PpdGJ5aaDOFApFT0+PWz0kYGBgkJmZiWIG5eTkdHZ2DvosxNWMjIyqqqqePXvm7OwcEhKCMuvq6rjfP5PJHDgHPpTaxKtWUlKCEPLUEAMDg7S0NGQdUWIY9QwMDPLy8tABnKWlpfX19TwvITw83N/fn2i1dHV1Gxsb09LSPDw81qxZw4/CfD7UoCaG5xtEEx7DCwvQWYZCoeA4TvzkcDhU6msnFKOfhMxAAYGqhOP4ULdrb2+fM2dOYGAg94L2e9AHwzAef6JTp07p6uo6OzsLVA1ufbg7mANLBE16rF27dvny5QAAHx+fY8eOnThxQnD6oLka9Fo4HM7AUHw//fRTYWHhmTNnREREduzYcfjw4QMHDghIH37gKVOUI+ib8vMp7dy509HR0d3dXVRUFK1a0Wg0GRmZvXv3Ojk5ubi4ZGZmTpgwAXXzt23bNmPGjJkzZyopKdXU1FAoFBqNhh5k4F0oFApx9uFQdx+UN9a3CRMmbN++3cHBYdasWZmZmRMnTkTqhYSEODg4ODs70+n0+vp6DMNoNNr48eMPHz7s5eXl7u6enZ2tqKhIOP4AADo7O+fMmePj4zN//nyUQ9ST/v7+KVOmhIeHD7MWxa0zT7M2sE4eO3bM398/Pj6+traWzWYjNebMmWNlZWVhYTF16tSMjAxNTU2Uf+jQoblz52ZlZXV1dXV1dREDViJ6akhIiImJycqVK/X19alUKk/t4v9VD/+H3t7eFy5csLCwsLCwyMzMVFdXR+odPXp0/vz5z58/b2tr6+3tRerNmDHDw8PD0tLS1tYWHcnH/ao7OjoiIiJQBwURERGBEjt37jQ0NAwKCrKwsOBHbf4fCrxeIbkfFtXboQoO5QvQEKqoqHB3Ourr6wmPI4SSkhKGYfX19SgQVH19vaBdIrlVGup2nZ2dbm5u06dPfw/tKbc+dXV1ysrKPI3mhQsXaDQa8ifq6OjYtm3btm3bli5dKjh9iLkLCGFDQwNPkaGJ7smTJ6OfkydP5n+5/l+grKzMZrNbWlpQtMBBi+zEiRN79+5Fr+jbb791cHD45ptvRjFMK0+ZysrKvofRvKioqLS0dH19PYp9OOiL0tLSys/Pf/bsmaioKJvN9vb2RkPt7du3L1mypKCg4MCBA+vXr0euywoKCllZWSkpKRiGycjImJmZTZw4kUKhoAVFNJlJ3EVFReXp06foLhwOp6mpiafaDIWKigrhTDRofQMAhIaG+vn5FRcXHzx4cOXKlUg9FRWVnJycZ8+eCQkJiYuLW1tbo/mxL774wsvLKy8vb9++fbt27ULVFQDQ3d3t7u5uaWl59OjRgWrQaDQ7Ozs+z1VWVlZubW1lMpmo6a+vr+c+3wPh6uqan5+fkZGhrq5+//59dJI5hUKJiIjIyMhobm4+fvy4kZERehZra+vCwsLnz58rKSllZ2efOnWK52r6+vqqqqrFxcX6+vo8tUtERGSYXd3cqKioNDQ0EH9IoVB4oitQqdTIyMiMjIzW1tbjx4/r6Ogg9ezt7QsKClJTU1HjcPnyZSR/+fLlnJycurq6Y8eOWVtbc3u8X716VUdHZ1DHVHV1dR0dneLi4hExhEOZGJ63pKKigmGYsrIyjzAKDvyX8NsuYPJPc3OzqKgoWrsuLCwUExN79eoVGqIWFBQgGUdHR3ScPYvFMjExuXHjhuD0gRCGhIT4+vqidEBAAOE7kJGRgVbUe3p6ZsyYERQUhAYigubrr7/29PRE6fXr1wcHB6N0dnZ2W1sbhDAvLy/tb6Slpc+fPy/QKFklJSViYmJNTU0QwqSkJDk5OeT1UF1dXVpaimTs7OyIxfMlS5Zs2bJFcPpACKdOnXru3DkIYX9/v7a2dmRkJISwp6cnNTUVCVhZWYWFhaH0r7/+qqioKFB9EDzOMn19fampqcgP4tixY8ivEkIYEhLi5+f3HvSBEPr4+Pz3v/+FEOI4PnPmzBMnTkAI2Wx2ampqX18ftySHw1m4cOHAIIj5+fliYmKFhYU8+cHBwQsXLkRpV1dX5GDCZrOnTJny888/Qwizs7OlpKRQjY2KiiJiwr2R4uJi7vomLy8/sL4RZGdni4mJlZWVcWfiOL5ixYqBL7m8vFxSUjIjIwNC2NPTM3PmzBUrVqACIiCUZDAYhoaGp06d4kdnDoejra2N3HC6urrk5eVTUlIghB0dHQN9Wzo7O/X19S9dusSTf+XKlQkTJiBnE4K+vr6pU6d+++233LpBCF++fCksLFxUVAQhPHv2rLW1NXqQ0NDQefPm8aMzuqOpqSmbzYYQHj16dPbs2cTF0Yw3N+Hh4ZqamjyF2Nvba2ZmhlyluPnjjz/k5OS4vZzMzc25xbivU1FRISoqmpaWxqfaEMKBzjIFBQVI55aWFlFRUfRmUF1C/kd79uwh3kxwcDDyP+rt7ZWVlU1OToYQNjY2ioqKorp08uTJ6dOnC9AQQgh37NihpaW1ZcsWTU1N5DoFITx06JC9vT1KJyYmysjIrFu3ztHR0crKiqdmjDg1NTUqKio+Pj5+fn4qKiqEp5O4uDhyA/vPf/5DpVKdnJycnZ2dnZ2JKI4CoqmpSVNTc/78+cuXL5eXl0edBgihkpLSnTt3eITfg9cohHD16tWTJk3avHmzqqoq0TRs27ZtwYIFKB0fHy8vL//FF18sXrx44sSJyE1LcNy/f19WVnbDhg12dnYODg7oS0bDCPSBRURESElJrV69etOmTXQ6nc/m7F9z6dIlZ2dnNTW1CRMmODs7X79+HUKYl5cHAEB9qfb2dn19fU9Pz6CgIDqd/uLFC4HqQ5CTkyMrKxsUFOTp6WlgYICUQd5ML1++hBAmJCS4urquW7cOTX+hXimEcOXKlStWrAgICKDT6d9//z3KzM3NdXR0XLdunZ2dnaGhYW1tLcp/8uSJjIzM2rVrnZ2dLSwsCBPr6+tramq6adMmJSWln376iX+1V61aRdQ34u5bt24l6ltAQEBgYKC/vz+dTj9//jzKTE9Pd3Z2XrdunbW1tbGxMdGUb9y4MSAgAH1NhEfo9u3bKRSKo6Mj+qgJP96JEyf6+fmtWbNGV1fX1taWp7swDNeuXVNQUPjiiy/Mzc2Jq927d09KSgqlT5w4sWjRotWrV2tpaX3++eeEAba3t1+zZs28efPodDrxLV++fHnevHnBwcEGBgYeHh6oDYyLi/vss8+CgoKWLVsmLS1N+Gl3d3ebmJi4uroGBwfLyMikp6fzqTODwbCwsHByclq7dq2MjExSUhLKt7GxQaYXQmhtbb127dq5c+fKyckhgwEhDA8PX7BgQXBwsJ6e3vz58wmrNnv2bNRDkpGRuX//PnGjnJwcGo2GHH0R6enpRkZGgYGBgYGBdDp9oK/+UDQ3Nzs7O1tZWVEoFGdnZ6K7Y2tre+TIEZTetWsXMjFaWlq7d+9GmY2Njerq6gsXLly2bJmioiLReTpx4oSqqurmzZuNjIyIjmBnZ6eRkZHAI8s8fvw4Pz/f2NjY1tYW5VRUVLS0tBBD4/Ly8piYGGlpaU9PT0F7aQIAXr169eeff0IIPTw8ZGVlUWZcXJypqamsrGxBQUFNTQ0hTKPR7O3tBapPR0dHZGQki8Vyd3cnVrMTExMNDAx49kQnJCSYmpoKOuYAhPDRo0dlZWUWFhbEgX/FxcV9fX3EtuXKyspHjx5JS0u7uLi8h4Mki4uL4+Pj5eTkPDw80H7qzs7OlJQUZ2dnNAVaWVn5+PFjNps9bdo0wsNNQJSVlRE7vQAAOjo6GhoaPT09ycnJjo6OaImiu7v77t27fX19bm5ugp7t56auri4qKkpMTMzDwwOVC5vNjouLs7W1FRMTYzAYsbGx1dXVampqs2fPJnaml5aWPnnyhMlkzpgxQ1dXF2UymcyEhISysjIFBQU3NzfuPeOVlZUPHz6UkpLy9PQk8iGEUVFRVVVV1tbW3Nvb38ig9a2oqIjBYKDrFBcXJycns1gsR0dHLS0tQr34+Pjy8nIlJSVXV1ei3aisrExMTGQwGMh+E1dDu98QwsLCM2bMAADk5uZmZmYymUwdHZ0ZM2a81XR6Xl7ekydPVFVV3dzc0HJGa2trbm6ug4MDSsfExLS1tZmYmHBHXUhNTc3OzhYREXF1dSVOyOro6IiNjW1qatLT03NwcEBqMJnMZ8+eFRcXCwkJWVpach882dvbe/fu3e7ubhcXl7cKZslgMCIjI9vb22fNmkUcH5SamqqoqIhOnUxJScnJyRETE3N1daXT6Uigra0tNja2paXFwMAAvTdEVlZWeno6ilHAPctaXV1dX18/depUIofNZqekpBQWFlIoFDMzM1NTUz4V7u/v5155ERERQZOZaWlp8vLyxCMkJSXl5eVNmjSJ+xy0jo6Ou3fvstnsOXPmcB/DlJaWlp6erq2tze140dPTQ4ZYIyEhISH5pPmQjlgkISEhISEZcUhDSEJCQkLySUMaQhISEhKSTxrSEJKQkJCQfNKQhpCEhISE5JOGNIQkJCQkJJ80/w8RvOgg8cDPCgAAAABJRU5ErkJggg==", "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", "\n", "\n", "\n", "\n" ], "text/html": [ "" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 上の f(x) が x→1 で収束しないことの数値的確認\n", "\n", "F(x; N=10^3) = sum(n->(-1)^n*x^(2.0^n), 0:N)\n", "x = 0:0.001:0.999\n", "P1 = plot(x, F.(x), label=\"F(x)\", ylims=(0,0.5), xlims=(0,1))\n", "x = 0.999:0.000001:0.999999\n", "P2 = plot(x, F.(x), label=\"F(x)\", ylims=(0.497, 0.503), xlims=(0.999,1))\n", "plot(P1, P2, size=(600, 240), legend=:topleft)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 収束円盤の境界上でのべき級数の収束" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 準備: Cesàro総和可能性\n", "\n", "Cesàro総和可能性から収束円盤の境界上での収束性(後で説明するところのAbel総和可能性)が導かれるので, Cesàro総和可能性について準備しておこう.\n", "\n", "**定義:** 級数 $\\ds\\sum_{k=0}^\\infty a_k$ が**Cesàro総和可能**(Cesàro summable)であるとは, その部分和 $\\ds s_n = \\sum_{k=0}^n a_k$ の加法平均\n", "\n", "$$\n", "\\frac{s_0+s_1+\\cdots+s_n}{n+1}\n", "$$\n", "\n", "が $n\\to\\infty$ で収束することであると定める. その収束先を**Cesàro和**(Cesàro sum)と呼ぶ. $\\QED$\n", "\n", "**問題:** $\\ds s_n = \\sum_{k=0}^n a_k$, $\\ds t_n = \\sum_{k=0}^n s_k$ とおく. 級数 $\\ds\\sum_{k=0}^\\infty a_k$ がCesàro総和可能ならば $a_n=O(n)$, $s_n=O(n)$, $t_n=O(n)$ となることを示せ.\n", "\n", "**解答例:** $\\ds\\sum_{k=0}^\\infty a_k$ のCesàro総和可能性は $\\ds\\frac{t_n}{n+1}$ の収束性と同値である. ゆえに, 収束数列が有界であることより, ある $M>0$ が存在して, すべての番号 $n$ について\n", "\n", "$$\n", "|t_n|\\leqq M(n+1)\n", "$$\n", "\n", "となることが導かれる. そのとき, \n", "\n", "$$\n", "\\begin{aligned}\n", "&\n", "|s_n|=|t_n-t_{n-1}|\\leqq |t_n|+|t_{n-1}|\\leqq M(n+1)+Mn = M(2n+1), \\quad\n", "\\\\ &\n", "|a_n|=|s_n-s_{n-1}|\\leqq |s_n|+|s_{n-1}|\\leqq M(2n+1)+M(2n-1)=4Mn.\n", "\\end{aligned}\n", "$$\n", "\n", "これで $a_n=O(n)$, $s_n=O(n)$, $t_n=O(n)$ であることがわかった. $\\QED$\n", "\n", "**注意:** 特に級数 $\\ds\\sum_{k=0}^\\infty a_k$ がCesàro総和可能ならばべき級数 $\\ds\\sum_{k=0}^\\infty a_k z^k$, $\\ds\\sum_{k=0}^\\infty s_k z^k$, $\\ds\\sum_{k=0}^\\infty t_k z^k$ の収束半径は $1$ 以上になる. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**問題:** 級数 $\\ds\\sum_{n=0}^\\infty a_n$ が $\\alpha$ に収束するとき, 級数 $\\ds\\sum_{n=0}^\\infty a_n$ はCesàro総和可能でかつそのCesàro和は $\\alpha$ に一致することを示せ.\n", "\n", "**解答例:** $\\ds s_n = \\sum_{k=0}^n a_k$ とおく. $s_n\\to\\alpha$ ならば $\\ds\\frac{s_0+s_1+\\cdots+s_n}{n+1}\\to \\alpha$ となることを示せばよい. しかし, その事実はノート「01 収束」ですでに示している. $\\eps$-$N$ 論法の応用の典型例であり, $\\eps$-$N$ 論法が使える人にとって証明は容易である. $\\QED$\n", "\n", "**問題:** 級数 $\\ds\\sum_{k=0}^\\infty (-1)^k$ は発散するが, Cesàro総和可能であり, そのCesàro和は $\\ds\\frac{1}{2}$ になることを示せ.\n", "\n", "**解答例:** 一般に級数 $\\ds\\sum_{k=0}^\\infty a_k$ が収束していれば $a_n\\to 0$ となるが, $(-1)^n$ は収束しないので $\\ds\\sum_{k=0}^\\infty (-1)^k$ は収束していない(すなわち発散している). $\\ds s_n=\\sum_{k=0}^n a_k$ とおくと, $n$ が偶数ならば $s_n=1$ となり, 奇数ならば $s_n=0$ となる. このことから, $\\ds\\frac{1}{n+1}\\sum_{k=0}^n s_k$ は $n$ 以下の偶数の割合に一致するので, $n\\to\\infty$ で $\\ds\\frac{1}{2}$ に収束する. $\\QED$\n", "\n", "**問題:** $\\quad\\ds\\sum_{j=1}^n (-1)^{j-1}j^2 = (-1)^{n-1}\\frac{n(n+1)}{2}$ を示せ.\n", "\n", "**解答例:** 数学的帰納法. $n=0$ のとき両辺は $0$ になり等しい. $n\\geqq 0$ でその等式が成立していると仮定すると,\n", "\n", "$$\n", "\\begin{aligned}\n", "\\sum_{j=1}^{n+1} (-1)^{j-1}j^2 &= \n", "(-1)^{n-1}\\frac{n(n+1)}{2} + (-1)^n (n+1)^2 \n", "\\\\ &=\n", "(-1)^n\\frac{n+1}{2}(-n+2(n+1)) =\n", "(-1)^n\\frac{(n+1)(n+2)}{2}.\n", "\\end{aligned}\n", "$$\n", "\n", "ゆえに数学的帰納法より任意の $n\\geqq 0$ について示したい等式は成立している. $\\QED$" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle - \\frac{\\left(-1\\right)^{n} n \\left(n + 1\\right)}{2}$\n" ], "text/plain": [ " n \n", "-(-1) *n*(n + 1) \n", "-----------------\n", " 2 " ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "j, n = symbols(\"j n\", integer=true)\n", "doit(sympy.Sum((-1)^(j-1)*j^2, (j,1,n)))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**問題:** $n$ が平方数ならば $a_n=1$ でそれ以外ならば $a_n=0$ であるとする. このとき, 級数 $\\ds\\sum_{k=0}^\\infty (-1)^k a_k$ は発散するが, Cesàro総和可能であり, そのCesàro和は $\\ds\\frac{1}{2}$ になることを示せ.\n", "\n", "**解答例:** $\\ds s_n = \\sum_{k=0}^n (-1)^k a_k$ とおく. 整数 $j$ について $(-1)^{j^2}=(-1)^j$ なので $\\ds s_n = \\sum_{0\\leqq j\\leqq\\sqrt{n}} (-1)^j$ となる. これより, $s_n$ は $\\sqrt{n}$ 以下の最大の整数が偶数であれば $1$ になり, 奇数ならば $0$ になる. ゆえに $s_n$ 自身は収束しない. $\\sqrt{n}$ 以下の最大の整数が $m$ になることと $m^2\\leqq n< (m+1)^2$ は同値である. $\\ds \\sigma_n = \\frac{1}{n+1}\\sum_{k=0}^n s_k$ とおく. $\\ds\\sigma_n\\to \\frac{1}{2}$ を示せばよい. 偶数 $m$ に対する $m^2\\leqq n<(m+1)^2$ で $\\sigma_{n-1}<\\sigma_n$ となり, 奇数 $m$ に対する $m^2\\leqq n<(m+1)^2$ で $\\sigma_{n-1}<\\sigma_n$ となる. ゆえに, $\\sigma_n$ は偶数 $m$ に対する $n=(m+1)^2-1$ で極大値\n", "\n", "$$\n", "\\sigma_n = \\frac{1}{(m+1)^2}\\sum_{j=1}^{m+1}(-1)^{j-1}j^2 = \\frac{1}{2}\\frac{m+2}{m+1}\n", "$$\n", "\n", "になり, 奇数 $m$ に対する $n=(m+1)^2-1$ で極小値\n", "\n", "$$\n", "\\sigma_n = \\frac{1}{(m+1)^2}\\sum_{j=1}^{m}(-1)^{j-1}j^2 = \\frac{1}{2}\\frac{m}{m+1}\n", "$$\n", "\n", "になることがわかる. これより, $\\ds \\sigma_n\\to\\frac{1}{2}$ であることがわかる. $\\QED$" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " 2.622538 seconds (274.52 k allocations: 18.491 MiB, 9.35% compilation time: 2% of which was recompilation)\n" ] }, { "data": { "image/png": "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TmhoaExMjLgwLS2trKwsMDBQqmjR999//9JLL1l8yWAwMMbE2gwJCalZlUhCISEh5u0oNjbW2dnZ29tbzMFVl4s1VbVwcnKyXq/39/eXZhAWpbRr167vvfdeRkbGvHnzBg4cKEkYyKLk5GQPD4/Zs2cfvEuj0TDG1q9ff/r06dTU1B07dnh5eZkHW02bNm3KlCnp6enffPONm5ubWBg1s+3bt//555+pqal//vlnSEiIONiKMfbee+8NHDjw1q1bu3fvVqlUt27dYoxpNBo3N7c1a9akp6dPnTp12rRpksbepsXHx9va2hYWFpqXnD17dvv27UlJSRcvXhw9evTAgQPFyxD27Nnj7e194cKFuLi49u3bb9u2Tbqo25xr164dPHhw4MCBM2fOPHjwoDhoMTMzU6VSbdmyJTU1NTIy8o033hALL1myZMiQISkpKdu3b1epVLdv32aMlZaWqtXq77777vbt25MmTRKHTEuTgBljN27cGDNmTOfOnSdNmpSeni5VGKimkydPjrhfamoqY+yLL77o06dP586dBw8e/O2335qvHCssLHzxxRcDAgIiIiKio6Mljb3t2rhx46BBgzp37ty/f/9PP/1Up9OJy/V6/YIFC4KCgvr16/f777+by0dHR0dERAQEBLz44otFRUUSRY3YunXr3n333apLzp07FxUVFRgYGB4ePnfuXPMlBoyx1atXh4WFdevWbcWKFc0eaZu2YsWKqrvEffv2icsPHjw4YMCAoKCguXPnarVacaFOp/v73/8eFBTUv3///fv3m1dy5syZoUOHBgQEzJw5UxzljrcjRAghhCSAc0EjhBBCEsAEjBBCCEkAEzBCCCEkAUzACCGEkAT+H6bkSc8n1CTBAAAAAElFTkSuQmCC", "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": [ "" ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "aa(n) = n == floor(typeof(n), √n)^2 ? one(n) : zero(n)\n", "ss(n) = sum(k->(-1)^k*aa(k), 0:n)\n", "tt(n) = sum(k->ss(k), 0:n)\n", "sigma(n) = tt(n)/(n+1)\n", "N = 1000\n", "n = 0:N\n", "plot(size=(640, 180), xlim=(-0.005*N, 1.005*N))\n", "@time plot!(n, sigma.(n), label=\"sigma_n\")\n", "hline!([1/2], label=\"1/2\", ls=:dash)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**問題:** $n$ が $2$ のべきで表わされる整数ならば $a_n=1$ でそれ以外ならば $a_n=0$ であるとする. このとき, 級数\n", "\n", "$$\n", "\\sum_{k=0}^\\infty (-1)^{\\log_2 k} a_k =\n", "0+1-1+0+1+0+0+0+0+0+0+0+0-1+\\cdots\n", "$$\n", "\n", "はCesàro総和**不可能**であることを示せ.\n", "\n", "**解答例:** $\\ds s_n=\\sum_{k=0}^n (-1)^{\\log_2 k} a_k$, $\\ds \\sigma_n=\\frac{1}{n+1}\\sum_{k=0}^n s_k$ とおく. $s_n$ は $2^m\\leqq n < 2^{m+1}-1$ のとき $m$ が偶数なら $1$ になり, 奇数なら $0$ になる. ゆえに $\\sigma_n$ は偶数 $m$ に対する $n=2^{m+1}-1$ で極大値\n", "\n", "$$\n", "\\sigma_n = \\frac{1}{2^{m+1}}\\sum_{k=0}^{m+1}(-1)^{k-1}2^k = \\frac{2^{m+2}-1}{3\\cdot 2^{m+1}}\n", "$$\n", "\n", "になり, 奇数 $m$ に対する $n=2^{m+1}-1$ で極小値\n", "\n", "$$\n", "\\sigma_n = \\frac{1}{2^{m+1}}\\sum_{k=0}^{m}(-1)^{k-1}2^k = \\frac{2^{m-2}-1}{3\\cdot 2^{m+1}}\n", "$$\n", "\n", "になる. これより, $m$ を偶数のまま $m\\to\\infty$ とすると $\\ds\\sigma_{2^{m+1}-1}\\to\\frac{2}{3}$ となり, $m$ を奇数のまま $m\\to\\infty$ とすると $\\ds\\sigma_{2^{m+1}-1}\\to\\frac{1}{3}$ となる. これより, $\\sigma_n$ が収束しないことがわかる. これで級数 $\\sum_{k=0}^\\infty (-1)^{\\log_2 k} a_k$ はCesàro総和不可能であることが分かった. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Abel総和可能性\n", "\n", "**定義:** 級数 $\\ds\\sum_{k=0}^\\infty a_k$ が**Abel総和可能**(Abel summable)であるとは\n", "\n", "$$\n", "f(x) = \\sum_{k=0}^\\infty a_k x^k\n", "$$\n", "\n", "の右辺のべき級数の収束半径が $1$ 以上でかつ $x\\nearrow 0$ のとき $f(x)$ が収束することであると定める. $f(x)$ の $x\\nearrow 1$ での収束先を**Abel和**(Abel sum)と呼ぶ. $\\QED$\n", "\n", "**問題:** 級数 $\\ds\\sum_{n=0}^\\infty a_n$ が $\\alpha$ に収束するとき, 級数 $\\ds\\sum_{n=0}^\\infty a_n$ はAbel総和可能でかつそのAbel和は $\\alpha$ に一致することを示せ.\n", "\n", "**解答例:** $\\ds\\sum_{n=0}^\\infty a_n$ が収束することより, 特に $a_n\\to 0$ なので, べき級数 $\\ds\\sum_{k=0}^\\infty a_k x^k$ の収束半径は $1$ 以上であることがわかる. $|x|<1$ を満たす複素数 $z$ に対して $f(z) = \\ds\\sum_{k=0}^\\infty a_k z^k$ とおく. $\\ds s_n=\\sum_{k=0}^n a_k$, $s_{-1}=0$ とおく. $s_n$ は収束するので特に有界である. このとき, $a_k=s_k-s_{k-1}$ を代入すると, \n", "\n", "$$\n", "\\sum_{k=0}^n a_k z^k = s_n z^n + (1-z)\\sum_{k=0}^{n-1} s_k z^k.\n", "$$\n", "\n", "$|z|<1$ のとき $s_n$ の有界性より, $s_n z^n\\to 0$ となるので\n", "\n", "$$\n", "f(z) = (1-z)\\sum_{k=0}^\\infty s_k z^k.\n", "$$\n", "\n", "これと\n", "\n", "$$\n", "\\alpha = (1-z)\\frac{\\alpha}{1-z} = (1-z)\\sum_{k=0}^\\infty \\alpha z^k\n", "$$\n", "\n", "の差は任意の番号 $N$ について\n", "\n", "$$\n", "f(z) - \\alpha = (1-z)\\sum_{k=0}^\\infty (s_k-\\alpha)z^k =\n", "(1-z)\\sum_{k=0}^{N-1} (s_k-\\alpha)z^k + (1-z)\\sum_{k=N}^\\infty (s_k-\\alpha)z^k\n", "$$\n", "\n", "となる. $R\\geqq 1$, $\\ds\\frac{|1-z|}{1-|z|}\\leqq R$ と仮定する. 任意に $\\eps>0$ を取る. $s_k\\to\\alpha$ なのである番号 $N$ が存在して $k\\geqq N$ ならば $\\ds|s_k-\\alpha|\\leqq \\frac{\\eps}{2R}$ となる. ゆえにそのとき\n", "\n", "$$\n", "\\left|(1-z)\\sum_{k=N}^\\infty (s_k-\\alpha)z^k\\right|\\leqq\n", "|1-z|\\sum_{k=N}^\\infty\\eps|z|^k\\leqq\n", "\\frac{\\eps}{2R}\\frac{|1-z|}{1-|z|} \\leqq\n", "\\frac{\\eps}{2}.\n", "$$\n", "\n", "$s_k-\\alpha$ は有界なので $k$ によらない定数 $M>0$ が存在して $|s_k-\\alpha|\\leqq M$ となるので, $\\ds\\frac|1-z|\\leqq\\frac{\\eps}{2MN}$ とすると,\n", "\n", "$$\n", "\\left|(1-z)\\sum_{k=0}^{N-1} (s_k-\\alpha)z^k\\right| = |1-z|MN\\leqq \\frac{\\eps}{2}. \n", "$$\n", "\n", "このとき,\n", "\n", "$$\n", "|f(z) - \\alpha| \\leqq \\frac{\\eps}{2} + \\frac{\\eps}{2} = \\eps.\n", "$$\n", "\n", "これで, ある $R\\geqq 1$ について, $z$ が $|z|<1$ かつ $\\ds\\frac{|1-z|}{1-|z|}\\leqq R$ を満たしながら $1$ に近付くとき, $f(z)$ が $\\alpha$ に収束することが示された. 特に $x$ が区間 $[0,1)$ の上を動きながら $1$ に近付くならば $f(x)$ は $\\alpha$ に収束する. これで, Abel総和可能性とAbel和が $\\alpha$ に等しくなることが示された. $\\QED$\n", "\n", "**注意:** 上の問題の結果は**Abelの連続性定理**と呼ばれることがある. $|z|<1$ かつ $\\ds\\frac{|1-z|}{1-|z|}\\leqq R$ を満たす $z$ 達の領域は**Stolz領域**のように呼ばれることがあるらしい. $\\QED$\n", "\n", "**問題:** 級数 $\\ds\\sum_{n=0}^\\infty a_n$ がCesàro総和可能でかつそのCesàro和が $\\alpha$ になるとき, 級数 $\\ds\\sum_{n=0}^\\infty a_n$ はAbel総和可能でかつそのAbel和は $\\alpha$ に一致することを示せ.\n", "\n", "**証明:** $\\ds s_n=\\sum_{k=0}^n a_k$, $s_{-1}=0$, $\\ds t_n=\\sum_{k=0}^n s_k$, $t_{-1}=0$ とおく. $\\ds\\sum_{n=0}^\\infty a_n$ がCesàro総和可能であるとき, $a_n=O(n)$, $s_n=O(n)$, $t_n=O(n)$ となることは上の方ですでに示した. そのことより, べき級数 $\\ds\\sum_{k=0}^\\infty a_k z^k$, $\\ds\\sum_{k=0}^\\infty s_k z^k$, $\\ds\\sum_{k=0}^\\infty t_k z^k$ の収束半径が $1$ 以上になることがわかる. $|z|<1$ を満たす複素数 $z$ に対して $\\ds f(z)=\\sum_{k=0}^\\infty a_k z^k$ とおく. このとき, $|z|<1$ ならば\n", "\n", "$$\n", "f(z) = (1-z)\\sum_{k=0}^\\infty s_k z^k = (1-z)^2\\sum_{k=0}^\\infty t_k z^k =\n", "(1-z)^2 \\sum_{k=0}^\\infty \\frac{t_k}{k+1} (k+1) z^k.\n", "$$\n", "\n", "これと\n", "\n", "$$\n", "\\alpha = (1-z)^2\\frac{\\alpha}{(1-z)^2} = (1-z)^2\\sum_{k=0}^\\infty \\alpha (k+1)z^k\n", "$$\n", "\n", "の差は任意の番号 $N$ について\n", "\n", "$$\n", "f(z)-\\alpha = \n", "(1-z)^2 \\sum_{k=0}^{N-1} \\left(\\frac{t_k}{k+1}-\\alpha\\right) (k+1) z^k +\n", "(1-z)^2 \\sum_{k=N}^\\infty \\left(\\frac{t_k}{k+1}-\\alpha\\right) (k+1) z^k\n", "$$\n", "\n", "となる. $R\\geqq 1$, $\\ds\\frac{|1-z|}{1-|z|}\\leqq R$ と仮定する. 任意に $\\eps>0$ を取る. 級数 $\\ds\\sum_{n=0}^\\infty a_n$ のCesàro総和可能性は $\\ds\\frac{t_k}{k+1}\\to\\alpha$ を意味するので, ある番号 $N$ が存在して $k\\geqq N$ ならば $\\ds\\left|\\frac{t_k}{k+1}-\\alpha\\right|\\leqq\\frac{\\eps}{2R^2}$ となる. そのとき,\n", "\n", "$$\n", "\\left|(1-z)^2 \\sum_{k=N}^\\infty \\left(\\frac{t_k}{k+1}-\\alpha\\right) (k+1) z^k\\right| \\leqq\n", "|1-z|^2\\eps\\sum_{k=N}^\\infty(k+1)|z|^k \\leqq\n", "\\frac{\\eps}{2R^2}\\frac{|1-z|^2}{(1-|z|)^2} \\leqq \n", "\\frac{\\eps}{2}.\n", "$$\n", "\n", "$\\ds\\frac{t_k}{k+1}-\\alpha$ は有界なので $k$ によらない定数 $M>0$ が存在して, $\\ds \\left|\\frac{t_k}{k+1}-\\alpha\\right|\\leqq M$ となるので, $\\ds |1-z|\\leqq\\sqrt{\\frac{\\eps}{MN(N+1)}}$ ならば\n", "\n", "$$\n", "\\left|(1-z)^2 \\sum_{k=0}^{N-1} \\left(\\frac{t_k}{k+1}-\\alpha\\right) (k+1) z^k\\right| \\leqq\n", "|1-z|^2M\\frac{N(N+1)}{2}\\leqq \\frac{\\eps}{MN(N+1)}\\frac{MN(N+1)}{2}= \\frac{\\eps}{2}.\n", "$$\n", "\n", "このとき,\n", "\n", "$$\n", "|f(z) - \\alpha| \\leqq \\frac{\\eps}{2} + \\frac{\\eps}{2} = \\eps.\n", "$$\n", "\n", "これで, ある $R\\geqq 1$ について, $z$ が $|z|<1$ かつ $\\ds\\frac{|1-z|}{1-|z|}\\leqq R$ を満たしながら $1$ に近付くとき, $f(z)$ が $\\alpha$ に収束することが示された. 特に $x$ が区間 $[0,1)$ の上を動きながら $1$ に近付くならば $f(x)$ は $\\alpha$ に収束する. これで, Abel総和可能性とAbel和が $\\alpha$ に等しくなることが示された. $\\QED$\n", "\n", "**問題:** 収束半径が $1$ のべき級数 $\\ds f(x)=\\sum_{k=0}^\\infty (-1)^k x^{k^2}$ について, $x\\nearrow 1$ のとき $\\ds f(x)\\to \\frac{1}{2}$ となることを示せ. \n", "\n", "**解答例:** $n$ が平方数のとき $a_n=1$ でそれ以外のとき $a_n=0$ とおくと, $\\ds f(x) = \\sum_{j=0}^\\infty (-1)^j a_j x^j$ となる. 上の方で級数 $\\ds\\sum_{j=0}^\\infty (-1)^j a_j$ がCesàro総和可能でかつそのCesàro和が $\\ds\\frac{1}{2}$ になることを示した. ゆえに, その級数はAbel総和可能でかつそのAbel和も $\\ds\\frac{1}{2}$ になる. すなわち, $x\\nearrow 1$ のとき $\\ds f(x)\\to \\frac{1}{2}$ となる. $\\QED$\n", "\n", "**問題:** Cesàro総和不可能だが, Abel総和可能な級数の例を挙げよ.\n", "\n", "**解答例:** $a_k = (-1)^k (k+1)$, $\\ds s_n = \\sum_{k=0}^n a_k = 1-2+3-4+\\cdots+(-1)^n(n+1)$, $t_n=\\sum_{k=0}^n s_k$ とおくと,\n", "\n", "$$\n", "\\begin{aligned}\n", "&\n", "s_0 = 1, \\quad \n", "s_1 = -1, \\quad \n", "s_2 = 2, \\quad \n", "s_3 = -2, \\quad \n", "s_4 = 3, \\quad \n", "s_5 = -3, \\quad\n", "\\ldots,\n", "\\\\ &\n", "t_0 = 1, \\quad\n", "t_1 = 0, \\quad\n", "t_2 = 2, \\quad\n", "t_3 = 0, \\quad\n", "t_4 = 3, \\quad\n", "t_5 = 0, \\quad\n", "\\ldots\n", "\\end{aligned}\n", "$$\n", "\n", "すなわち, $t_{2k}=k+1$, $s_{2k+1}=0$ なので $\\ds\\lim_{k\\to\\infty}\\frac{t_{2k}}{2k+1}=\\frac{1}{2}$, $\\ds\\lim_{k\\to\\infty}\\frac{s_{2k+1}}{2k+2}=0$ となるので, $\\ds\\frac{t_n}{n+1}$ は収束しない. すなわち, 級数 $\\ds\\sum_{k=0}^\\infty a_k = 1 - 2 + 3 - 4 + \\cdots$ はCesàro総和不可能である. しかし, \n", "\n", "$$\n", "f(x) = \\sum_{k=0}^\\infty a_k x^k = \\sum_{k=0}^\\infty(-1)^k(k+1)x^k = \n", "\\sum_{k=0}^\\infty \\binom{-2}{k}(-x)^k = \\frac{1}{(1+x)^2}\n", "$$\n", "\n", "は $x\\nearrow 1$ で $\\ds\\frac{1}{4}$ に収束する. すなわち, 級数 $\\ds\\sum_{k=0}^\\infty a_k = 1 - 2 + 3 - 4 + \\cdots$ はAbel総和可能であり, そのAbel和は $\\ds\\frac{1}{4}$ になる. $\\QED$\n", "\n", "次の問題とその解答例は次のスライドのp.25にある.\n", "\n", "* Peter Duren, Sums for Divergent Series: A Tauberian Adventure, Slide 2013-10\n", "\n", "**問題:** $n$ が $2$ のべきで表わされる整数ならば $a_n=1$ でそれ以外ならば $a_n=0$ であるとする. このとき, 級数\n", "\n", "$$\n", "\\sum_{k=0}^\\infty (-1)^{\\log_2 k} a_k =\n", "0+1-1+0+1+0+0+0+0+0+0+0+0-1+\\cdots\n", "$$\n", "\n", "はAbel総和**不可能**であることを示せ. ただし, $|x|<1$ のとき\n", "\n", "$$\n", "f(x) = \\sum_{k=0}^\\infty (-1)^{\\log_2 k} a_k x^k =\n", "\\sum_{j=0}^\\infty (-1)^j x^{2^j} =\n", "x - x^2 + x^4 - x^8 + x^{16} - x^{32} + \\cdots\n", "$$\n", "\n", "とおくと, 数値計算の結果 $f(0.995)=0.50088\\cdots$ が正しいことを認めて使ってよいものとする.\n", "\n", "**解答例:** $0 f(x^4)$ より, $f(x)0.5$ となることから, もしも $x\\nearrow 1$ で $f(x)$ が収束するならばその収束先 $\\alpha$ は $0.5$ より大きくなる. これで矛盾が導かれた. $x\\nearrow 1$ で $f(x)$ は収束しない. $\\QED$" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " 0.073335 seconds (82.74 k allocations: 5.668 MiB, 93.16% compilation time)\n" ] }, { "data": { "text/plain": [ "6-element Vector{BigFloat}:\n", " 0.00497500000000000000000000000000000000000000000000000000000000000000000000000275\n", " 0.9851245006249999999999999999999999999999999999999999999999999999999999999999928\n", " 0.9473625810237993796873652874030756837463378906249999999999999999999999999999727\n", " 0.5718265527518791413369599184207730651863317022847063397385549887356997426795488\n", " 0.5008815862056572522950678763359730015035702048673540602989286876366169520887714\n", " 0.5008815862056572522950678763359730015035702048673540602989286876366169520887714" ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f(x; N=2^5) = sum(j->(-1)^j*x^(typeof(x)(2)^j), 0:N)\n", "@time [f(big\"0.995\"; N=2^m) for m in 0:5]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Stolz領域の形:** $R\\geqq 1$ に対して, Stolz領域 $K_R$ を\n", "\n", "$$\n", "K_R = \\left\\{\\,z\\in\\C \\,\\left|\\, |z|<1,\\; \\frac{|1-z|}{1-|z|}\\leqq R \\right.\\right\\}\n", "$$\n", "\n", "と定める. $K_R$ の形については次のセルのプロットを見よ. $\\QED$" ] }, { "cell_type": "code", "execution_count": 45, "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", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\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": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x = -1:0.005:1\n", "y = -1:0.005:1\n", "z = x' .+ im.*y\n", "f(z, R) = (abs2(z)<1 && abs(1-z) ≤ R*(1-abs(z))) ? 0.0 : 1.0\n", "t = 0:0.01:2π\n", "\n", "PP = []\n", "for RR in [1.0, 2.0, 5.0, 10.0]\n", " P = plot(aspectratio=1)\n", " plot!(xlim=(-1,1), ylim=(-1,1))\n", " plot!(title=\"R = $RR\", titlefontsize=10)\n", " heatmap!(x, y, f.(z, RR), colorbar=false, color=:plasma)\n", " plot!(cos.(t), sin.(t), label=\"\")\n", " push!(PP, P)\n", "end\n", "\n", "plot(PP..., size=(750, 170), layout=@layout([a b c d]))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**問題:** $a_k\\geqq 0$ かつ $\\ds\\sum_{k=0}^\\infty a_k=\\infty$ ならば, $x\\nearrow 1$ のとき $\\ds \\sum_{k=1}^\\infty a_k x^k\\to\\infty$ となることを示せ.\n", "\n", "**解答例:** $a_k\\geqq 0$ かつ $\\ds\\sum_{k=0}^\\infty a_k=\\infty$ と仮定し, $M>0$ であるとする. ある番号 $N$ が存在して $n\\geqq N$ ならば $\\ds\\sum_{k=0}^n a_k\\geqq 2M$ となる. ゆえに $\\ds\\frac{1}{2^{1/N}}\\leqq x<1$ とすると, \n", "\n", "$$\n", "\\sum_{k=0}^\\infty a_k x^k \\geqq\n", "\\sum_{k=0}^N a_k x^k \\geqq\n", "x^N \\sum_{k=0}^N a_k \\geqq\n", "\\frac{1}{2}2M = M.\n", "$$\n", "\n", "これで $x\\nearrow 1$ のとき $\\ds \\sum_{k=1}^\\infty a_k x^k\\to\\infty$ となることが示された. $\\QED$\n", "\n", "**例:** $\\ds f(z) = \\sum_{k=0}^\\infty\\frac{z^{2\\cdot 3^k}-z^{3^k}}{k}$ とおく. 右辺のべき級数の収束半径は $1$ であり, $z=1$ でも収束しており, $f(1)=0$ となっている. ゆえに, Abelの連続性定理より, ある $R\\geqq 1$ について, $z$ が $\\ds\\frac{|1-z|}{1-|z|}\\leqq R$ を満たしながら $1$ に近付くと(特に $z\\nearrow 1$ のとき) $f(z)$ は $f(0)=0$ に近付く.\n", "\n", "しかし, $\\ds z_m=e^{\\pi i/3^m}$ とおくと, $m\\to\\infty$ で $z_m\\to 1$ であり, さらに $k\\geqq m$, $0\\leqq r\\leqq 1$, $z=r z_m$ ならば $z^{2\\cdot 3^k}-z^{3^k}=r^{2\\cdot3^k}+r^{3^k}$ となり, $r$ のべき級数 $\\ds\\sum_{k=m}^\\infty\\frac{r^{2\\cdot3^k}+r^{3^k}}{k}$ は $r=1$ のとき $\\infty$ になるので, 上の問題の結果より, $r\\nearrow 1$ で $\\ds\\sum_{k=m}^\\infty\\frac{r^{2\\cdot3^k}+r^{3^k}}{k}\\to\\infty$ となる. このことから, $|z|<1$ を満たす $z$ を $1$ に自由に近付けてよいことにすると, $f(z)$ は $0$ に収束しなくなることがわかる. $\\QED$ " ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "f(1) = 0.0\n", "f(0.9 * e ^ ((π * im) / 3 ^ 1)) = 1.5497581048837092 - 1.447746731035876e-15im\n", "f(0.9999 * e ^ ((π * im) / 3 ^ 2)) = 2.1652569095059886 - 0.00025970371463305745im\n", "f(0.9999999 * e ^ ((π * im) / 3 ^ 3)) = 2.7262170557818766 + 0.3007667935718108im\n", "f(0.9999999999 * e ^ ((π * im) / 3 ^ 4)) = 3.046854906145112 + 0.2649066855815363im\n", "f(0.9999999999999 * e ^ ((π * im) / 3 ^ 5)) = 3.2124675281844013 + 0.1962355974206421im\n" ] } ], "source": [ "f(z; N=39) = sum(k->(z^(2*3^k)-z^(3^k))/k, 1:N)\n", "@show f(1)\n", "@show f(0.9*e^(π*im/3^1))\n", "@show f(0.9999*e^(π*im/3^2))\n", "@show f(0.9999999*e^(π*im/3^3))\n", "@show f(0.9999999999*e^(π*im/3^4))\n", "@show f(0.9999999999999*e^(π*im/3^5));" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 準備: Vitaliの定理\n", "\n", "複素函数論を使うことができれば, べき級数の収束円盤の境界の一部分までべき級数で定義された函数が解析接続されているというAbelの連続性定理の仮定も強い仮定のもとで, Abelの定理よりも強い結論を得ることができる. そういう結果を示すための準備として, 次のVitaliの定理を引用しておく.\n", "\n", "**Vitaliの定理:** $D$ は$\\C$ の連結開集合であり, $f_n$ は $D$ 上の正則函数列であるとする. もしも $f_n$ が $D$ 上で広義一様有界でかつ複素数列 $f_n(z)$ が収束するような $z\\in D$ の全体が集積点を持つならば, 正則函数列 $f_n$ は $D$ 上で広義一様収束する. $\\QED$\n", "\n", "ここで, $f_n$ が広義一様有界であるとは, $D$ の任意のコンパクト部分集合 $K$ に対してある定数 $M>0$ が存在して, $K$ 上ですべての番号 $n$ について $|f_n|\\leqq M$ となることであり, $f_n$ が $D$ 上で広義一様収束するとは, $D$ の任意のコンパクト部分集合 $K$ 上で $f_n$ が一様収束することである. 正則函数列の広義一様収束先の函数も正則函数になる. \n", "\n", "Vitaliの定理の証明はこのノートで扱わないが, その定理は極めて有用である. Vitaliの定理を使えば, 領域 $D$ 内のほんの一部分での収束さえ証明すれば, 領域 $D$ 全体での収束が証明できてしまうことがある. 実際に次の節でVitaliの定理がそのような使われ方をする.\n", "\n", "Vitaliの証明については以下の文献を参照せよ:\n", "\n", "* 大島利雄, 関数論, 2003年\n", "\n", "* 斎藤恭司述, 松本佳彦記, 複素解析学特論 (archive), 1978年, 2009年" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### M. Riesz の補題とその応用\n", "\n", "この節の内容については\n", "\n", "* Remmert, Reinhold. Classical topics in complex function theory. Graduate Texts in Mathematics 172, Springer, 1998\n", "\n", "の第11章 \"Boundary Behavior of Power Series\" の§1 \"Convergent on the Boundary\" (pp.244-249)を参照した. この文献のこの章は収束円盤の境界上でのべき級数の振る舞いに関する結果やアイデアに関する歴史的覚え書きについても非常に詳しい. \n", "\n", "基本は次の補題である. $g_n$ の定義の仕方が絶妙で本質を突いている.\n", "\n", "**M. Rieszの補題:** $\\ds\\sum_{k=0}^\\infty a_k z^k$ は収束半径が1の複素べき級数であるとし, 複素数列 $a_n$ は有界であると仮定する. \n", "\n", "$$\n", "a < b\\leqq a+2\\pi, \\quad\n", "c > 1, \\quad\n", "K=K_{a,b,c}=\\{\\, z\\in\\C \\mid a\\leqq\\arg(z)\\leqq b,\\; |z|\\leqq c \\,\\}\n", "$$\n", "\n", "であるとし, $|z|<1$ における正則函数 $\\ds\\sum_{k=0}^\\infty a_k z^k$ は $K$ を含む $\\C$ の開集合上の正則函数 $f$ に拡張されると仮定する. $K$ 上の函数列 $g_n$ を次のように定める:\n", "\n", "$$\n", "g_n(z) = \\frac{f(z) - s_n(z)}{z^{n+1}} (z-\\alpha)(z-\\beta),\n", "\\quad s_n(z) = \\sum_{k=0}^n a_k z^k,\n", "\\quad \\alpha = e^{ia}, \n", "\\quad \\beta = e^{ib}.\n", "$$\n", "\n", "このとき, 函数列 $g_n$ は $K$ 上で一様有界である. $\\QED$\n", "\n", "**証明:** $\\kappa = ce^{ia}$, $\\lambda = ce^{ib}$ とおく. 最大値の原理より, $K$ の境界上で, すなわち, 線分 $[0,\\kappa]$, $[0,\\lambda]$ および円弧 $L = \\{\\,ce^{i\\theta}\\mid a\\leqq\\theta\\leqq b\\,\\}$ の上で函数列 $g_n$ が一様有界であることを示せば十分である. 線分 $[0,\\kappa]$ を $0$, $\\alpha$, $(0,\\alpha)$, $(\\alpha,\\lambda]$ に分割して考える. \n", "\n", "複素数列 $|a_k|$ の上界の一つを $A>0$ と書き, $|f|$ の $K$ 上での上界の一つを $M>0$ と書く.\n", "\n", "$z=0$ において, $|g_n(0)| = |a_{n+1}||0-\\alpha||0-\\beta|=|a_{n+1}|\\leqq A$.\n", "\n", "$z=\\alpha$ において, $|g_n(\\alpha)|=0$.\n", "\n", "$z\\in(0,\\alpha)$ は $z = re^{ia}$, $0< r < 1$ と表わされる. そのとき,\n", "\n", "$$\n", "\\begin{aligned}\n", "&\n", "|f(z)-s_n(z)| = \\left|\\sum_{k=n+1}^\\infty a_k z^k\\right| \\leqq \n", "A\\sum_{k=n+1}^\\infty r^k = \\frac{A r^{n+1}}{1-r},\n", "\\\\ &\n", "|z-\\alpha|=1-r, \\quad |z-\\beta|\\leqq 2\n", "\\end{aligned}\n", "$$\n", "\n", "なので, \n", "\n", "$$\n", "|g_n(z)|\\leqq\n", "\\frac{A r^{n+1}}{1-r}\\frac{1}{r^{n+1}}(1-r)2 = 2A.\n", "$$\n", "\n", "$z\\in(\\alpha,\\kappa]$ は $z=re^{ia}$, $11$ なので,\n", "\n", "$$\n", "\\begin{aligned}\n", "&\n", "|f(z)-s_n(z)| \\leqq \n", "|f(z)|+A\\sum_{k=0}^n c^k \\leqq\n", "M + \\frac{A(c^{n+1}-1)}{c-1} \\leqq\n", "M + A\\frac{c^{n+1}}{c-1},\\\\ &\n", "|z-\\alpha|\\leqq c+1, \\quad |z-\\beta|\\leqq c+1,\n", "\\end{aligned}\n", "$$\n", "\n", "なので,\n", "\n", "$$\n", "|g_n(z)|\\leqq\n", "\\left(M + A\\frac{c^{n+1}}{c-1}\\right)\\frac{1}{c^{n+1}}(c+1)(c+1) \\leqq\n", "\\left(M + \\frac{A}{c-1}\\right)(c+1)^2.\n", "$$\n", "\n", "以上によって, $|g_n|$ が $K$ の境界上で一様有界であることが示されたので, 最大値の原理から $K$ 全体で一様有界であることも導かれる. $\\QED$.\n", "\n", "**M. Rieszの有界性定理:** $\\ds\\sum_{k=0}^\\infty a_k z^k$ は収束半径が1の複素べき級数であるとし, 複素数列 $a_n$ は有界であると仮定する. \n", "\n", "$$\n", "S=\\{\\, z\\in\\C \\mid A<\\arg(z) 1\n", "$$\n", "\n", "であるとし, $|z|<1$ における正則函数 $\\ds\\sum_{k=0}^\\infty a_k z^k$ は $S$ 上の正則函数 $f$ に拡張されると仮定する. このとき, 部分和の函数列 $s_n(z) = \\ds\\sum_{k=0}^n a_k z^k$ は\n", "\n", "$$\n", "S_{|z|\\leqq 1} = \\{\\,z\\in\\C\\mid A<\\arg(z)0$ と書く. M. Rieszの補題より, ある定数 $G>0$ が存在して, すべての番号 $n$ について $K$ 上で $|g_n|\\leqq G$ となる. ゆえに, $z\\in Z$ のとき, $|z|\\leqq 1$ でもあるので,\n", "\n", "$$\n", "|s_n(z)| = \\left|f(z) - \\frac{g_n(z)z^{n+1}}{(z-\\alpha)(z-\\beta)}\\right| \\leqq\n", "|f(z)| + \\frac{|g_n(z)||z^{n+1}|}{|z-\\alpha||z-\\beta|} \\leqq\n", "M + \\frac{G}{d^2}.\n", "$$\n", "\n", "これで $s_n(z)$ が $Z$ 上で一様有界であることが確かめられた. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**FatouとM. Rieszの収束定理:** M. Rieszの有界性定理の状況において, さらに複素数列 $a_n$ が $0$ に収束していると仮定すると, べき級数 $\\ds\\sum_{k=0}^\\infty a_k z^k$ は $S_{|z|\\leqq 1}$ 上で $f$ に広義一様収束する. $\\QED$\n", "\n", "**証明:** $S_{|z|\\leqq 1}$ の任意のコンパクト部分集合 $Z$ は M. Rieszの補題におけるある $K=K_{a,b,c}$ で $A0$ と書く. このとき, $z\\in Z$ ならば, $|z|\\leqq 1$ でもあるので,\n", "\n", "$$\n", "|f(z)-s_n(z)| = \\frac{|g_n(z)||z^{n+1}|}{|z-\\alpha||z-\\beta|} \\leqq\n", "\\frac{|g_n(z)|}{d^2}.\n", "$$\n", "\n", "したがって, $s_n(z)$ が $f(z)$ に一様収束することを示すためには, $g_n(z)$ が $Z$ 上で $0$ に一様収束することを示せば十分である. さらに, そのためには, Vitaliも定理より, $00$ を取る. この場合には, $a_n$ が $0$ に収束すると仮定してあったので, ある番号 $N$ が存在して, $k\\geqq N$ ならば $\\ds |a_k|\\leqq \\eps\\frac{1-r}{(r+1)^2}$ となる. 以下, $n\\geqq N$ と仮定する. このとき, $|z-\\alpha|\\leqq r+1$, $|z-\\beta|\\leqq r+1$, \n", "\n", "$$\n", "|f(z)-s_n(z)|\\leqq\\sum_{k=n+1}^\\infty |a_k|q^k \\leqq \n", "\\eps\\frac{1-r}{(r+1)^2}\\frac{r^{n+1}}{1-r}\n", "$$\n", "\n", "なので, \n", "\n", "$$\n", "|g_n(z)|\\leqq \\eps\\frac{1-r}{(r+1)^2}\\frac{r^{n+1}}{1-r}\\frac{1}{r^{n+1}}(r+1)^2 = \\eps.\n", "$$\n", "\n", "これで $\\ds\\lim_{n\\to\\infty}g_n(z)=0$ が示された. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**注意:** FatouとM. Rieszの収束定理より, 収束半径 $1$ のべき級数で定義された $|z|<1$ における正則函数 $\\ds f(z)=\\sum_{k=0}^\\infty a_k z^k$ が $z=1$ まで解析接続されているとき, 複素数列 $a_n$ が $0$ に収束することと $\\ds\\sum_{k=0}^\\infty a_k = \\lim_{n\\to\\infty}\\sum_{k=0}^n a_k$ が収束することが同値であることがわかる. 後者ならば前者は自明であるが, その逆向きはFatouとM. Rieszの収束定理の証明を読めばかなり非自明である. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**例:** FatouとM. Rieszの収束定理(もしくはRieszの有界性定理)において, べき級数の係数が $0$ に収束する(もしくは有界である)という仮定を除くことはできないことは次の例を見ればわかる. 有理函数 $\\ds f(z)=\\frac{1}{(1+z)^2}$ は $z\\ne-1$ 以外で正則であり, そのべき級数展開\n", "\n", "$$\n", "f(z) = \\sum_{n=1}^\\infty (-1)^{n-1} n z^n\n", "$$\n", "\n", "の収束半径は $1$ であり, $\\ds f(1)=\\frac{1}{4}$ である. しかし, 右辺のべき級数の係数 $(-1)^{n-1}n$ は $0$ に収束していないし(有界でさえない), そのべき級数は $z=1$ のとき\n", "\n", "$$\n", "\\begin{aligned}\n", "&\n", "s_N = \\sum_{n=1}^N (-1)^{n-1} n = 1-2+3-4+\\cdots+(-1)^{N-1}N = \n", "(-1)^{N-1}\\left\\lfloor\\frac{N+1}{2}\\right\\rfloor,\n", "\\\\ &\n", "s_1=1,\\ s_2=-1,\\ s_3=2,\\ s_4=-2,\\ s_5=3,\\ s_6=-3,\\ \\ldots\n", "\\end{aligned}\n", "$$\n", "\n", "となって収束しない(有界でさえない). $\\QED$\n", "\n", "**例:** $\\ds \\log(1+z) = \\int_0^z \\frac{dt}{1+t}$ は $z\\ne -1$ 以外では多価正則であり, そのべき級数展開\n", "\n", "$$\n", "\\log(1+z) = \\sum_{n=1}^\\infty (-1)^{n-1}\\frac{z^n}{n}\n", "$$\n", "\n", "の収束半径は $1$ であり, その係数 $(-1)^n/n$ は $0$ に収束している. ゆえに, FatouとM. Rieszの収束定理より, このべき級数は\n", "\n", "$$\n", "|z|\\leqq 1, \\quad -\\pi < \\arg(z) < \\pi\n", "$$\n", "\n", "において $\\log(1+z)$ に広義一様収束している. $\\QED$\n", "\n", "**例:** $\\ds\\Li_2(z)=\\int_0^z\\frac{-\\log(1-t)}{t}\\,dt$ は $z=1$ 以外では多価正則であり, そのべき級数展開\n", "\n", "$$\n", "\\Li_2(z) = \\sum_{n=1}^\\infty \\frac{z^n}{n^2}\n", "$$\n", "\n", "は $|z|\\leqq 1$ において一様絶対収束している. $\\ds\\sum_{n=1}^\\infty\\frac{1}{n^2}=\\zeta(2)=\\frac{\\pi^2}{6}$ なので, Abelの定理より, $z\\nearrow 1$ のとき, $\\ds\\sum_{n=1}^\\infty\\frac{z^n}{n^2}\\to\\zeta(2)$ となる. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 超幾何級数\n", "\n", "次のべき級数を**Gaussの超幾何級数** (Gauss's hypergeometric series)と呼ぶ:\n", "\n", "$$\n", "{}_2F_1(a,b; c; x) = \\sum_{k=0}^\\infty \\frac{(a)_k (b)_k}{(c)_k k!} x^k.\n", "$$\n", "\n", "ここで\n", "\n", "$$\n", "(\\alpha)_k = \\alpha(\\alpha+1)\\cdots(\\alpha+k-1).\n", "$$\n", "\n", "より一般に\n", "\n", "$$\n", "{}_rF_s(a_1,\\ldots,a_r;b_1,\\ldots,b_s;x) =\n", "\\sum_{k=0}^\\infty \\frac{(a_1)_k\\cdots(a_r)_k}{(b_1)_k\\cdots(b_s)_k k!}x^k\n", "$$\n", "\n", "と定める." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**問題:** Gaussの超幾何級数 ${}_2F_1$ が $|x|<1$ で絶対収束することを示せ.\n", "\n", "**解答例:** d'Alembertの判定法を使おう.\n", "\n", "$$\n", "\\frac{(a)_k(b)_k/((c)_k k!)}{(a)_{k+1}(b)_{k+1}/((c)_{k+1}(k+1)!)} =\n", "\\frac{(c+k)(k+1)}{(a+k)(b+k)}\\to 1 \\qquad(k\\to\\infty)\n", "$$\n", "\n", "より, Gaussの超幾何級数は $|x|<1$ で絶対収束する. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**問題:** 以下を示せ:\n", "\n", "$$\n", "(1)_k=k!, \\quad (2)_k = (k+1)!, \\quad\n", "(1/2)_k k! = \\frac{(2k)!}{4^k}, \\quad\n", "(2k+1)(1/2)_k = (3/2)_k.\n", "$$\n", "\n", "**ヒント:** 3つ目の公式を除けば易しい. 3つ目の公式は以下のようにして示される:\n", "\n", "$$\n", "(1/2)_k k! =\n", "\\frac{1}{2}\\frac{3}{2}\\cdots\\frac{2k-1}{2} k! =\n", "\\frac{1\\cdot3\\cdots(2k-1)}{2^k}\\frac{2\\cdot4\\cdots(2k)}{2^k} =\n", "\\frac{(2k)!}{4^k}. \\quad \\QED\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**例:** 初等函数を以下のように表すことができる:\n", "$$\n", "\\begin{aligned}\n", "&\n", "{}_0F_0(;; x) = \\sum_{k=0}^\\infty\\frac{1}{k!}x^k = e^x.\n", "\\\\ &\n", "{}_0F_1(;1/2;-x^2/4) = \n", "\\sum_{k=0}^\\infty \\frac{(-x^2/4)^k}{(1/2)_k k!} =\n", "\\sum_{k=0}^\\infty \\frac{(-x^2)^k}{(2k)!} = \\cos x.\n", "\\\\ &\n", "{}_1F_0(a;; x) = \\sum_{k=0}^\\infty\\frac{(a)_k}{k!}x^k = (1-x)^{-a}.\n", "\\\\ &\n", "{}_2F_1(1,1;2;x) = \\sum_{k=0}^\\infty\\frac{k!k!}{(k+1)!k!}x^k = \n", "\\sum_{k=0}^\\infty\\frac{x^k}{k+1} = -\\frac{\\log(1-x)}{x}.\n", "\\\\ &\n", "x\\;{}_2F_1(1/2,1;3/2;-x^2) =\n", "x\\sum_{k=0}^\\infty\\frac{(1/2)_k k!}{(3/2)_k k!}(-x^2)^k =\n", "x\\sum_{k=0}^\\infty\\frac{(-x^2)^k}{2k+1} = \\arctan x.\n", "\\end{aligned}\n", "$$\n", "\n", "**問題:** 上の例の結果を確認せよ. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**問題:** $\\sin x$ を ${}_0F_1$ を使って表せ. $\\QED$\n", "\n", "**問題:** $\\arcsin x$ を ${}_2F_1$ を使って表せ. $\\QED$\n", "\n", "**ヒント:** 「超幾何 初等函数」を検索." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**問題:** ガンマ函数とベータ函数を\n", "\n", "$$\n", "\\Gamma(s) = \\int_0^\\infty e^{-x}x^{s-1}\\,dx, \\quad\n", "B(p,q) = \\int_0^1 t^{p-1}(1-t)^{q-1}\\,dt\n", "\\quad(s,p,q > 0)\n", "$$\n", "\n", "と定めると, \n", "\n", "$$\n", "(x)_k = \\frac{\\Gamma(x+k)}{\\Gamma(x)}, \\quad\n", "B(p,q) = \\frac{\\Gamma(p)\\Gamma(q)}{\\Gamma(p+q)}\n", "$$\n", "\n", "が成立することを認めて, $c>b>0$ のとき\n", "\n", "$$\n", "{}_2F_1(a,b;c;x) = \\frac{1}{B(b,c-b)}\n", "\\int_0^1 t^{b-1}(1-t)^{c-b-1}(1-xt)^{-a}\\,dt\n", "$$\n", "\n", "が成立することを示せ. これを**Gaussの超幾何函数の積分表示**と呼ぶ.\n", "\n", "**解答例:** \n", "\n", "$$\n", "\\begin{aligned}\n", "\\frac{(a)_k (b)_k}{(c)_k k!} x^k &=\n", "\\frac{\\Gamma(b+k)\\Gamma(c)}{\\Gamma(b)\\Gamma(x+k)} \\frac{(a)_k}{k!}x^k =\n", "\\frac{B(b+k,c-b)}{B(b,c-b)}\\frac{(a)_k}{k!}x^k\n", "\\\\ &=\n", "\\frac{1}{B(b,c-b)}\\int_0^1 t^{b-1}(1-t)^{c-b-1} \\frac{(a)_k}{k!}(xt)^k\\,dt.\n", "\\end{aligned}\n", "$$\n", "\n", "ゆえに, これを $k=0,1,2,\\ldots$ について足し上げて目的の公式を得る. $\\QED$\n", "\n", "**注意:** 高校数学における積分の取り扱いにおいて\n", "\n", "$$\n", "I = \\int_\\alpha^\\beta (x-\\alpha)^A (\\beta-x)^B (\\gamma-x)^C \\,dx\n", "$$\n", "\n", "の形の積分に出会っている人はその時点でGaussの超幾何函数にすでに出会っていると言える. この形の積分は $x = (1-t)\\alpha+t\\beta$, $z=(\\beta-\\alpha)/(\\gamma-\\alpha)$ とおくと\n", "\n", "$$\n", "I = (\\beta-\\alpha)^{A+B+1}(\\gamma-\\alpha)^C\\int_0^1 t^A (1-t)^B (1-zt)^C \\,dt\n", "$$\n", "\n", "と変形される. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**問題:** 以下の公式を示せ: $c>b>0$ のとき,\n", "\n", "$$\n", "{}_1F_1(b;c;x) = \\frac{1}{B(b,c-b)}\\int_0^1 t^{b-1}(1-t)^{c-b-1}\\,e^{xt}\\,dt\n", "$$\n", "\n", "となることを示せ. これを**Kummerの合流型超幾何函数の積分表示**と呼ぶ.\n", "\n", "**解答例:**\n", "\n", "$$\n", "\\begin{aligned}\n", "\\frac{(b)_k}{(c)_k k!} x^k &=\n", "\\frac{\\Gamma(b+k)\\Gamma(c)}{\\Gamma(b)\\Gamma(x+k)} \\frac{x^k}{k!} =\n", "\\frac{B(b+k,c-b)}{B(b,c-b)}\\frac{x^k}{k!}\n", "\\\\ &=\n", "\\frac{1}{B(b,c-b)}\\int_0^1 t^{b-1}(1-t)^{c-b-1} \\frac{(xt)^k}{k!}\\,dt.\n", "\\end{aligned}\n", "$$\n", "\n", "ゆえに, これを $k=0,1,2,\\ldots$ について足し上げて目的の公式を得る. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**問題(Gaussの超幾何微分方程式):** $y={}_2F_1(a,b; c; x)$ が\n", "\n", "$$\n", "x(1-x)y'' + (c-(a+b+1)x)y' - aby = 0\n", "$$\n", "\n", "を満たしていることを示せ. これを**Gaussの超幾何微分方程式**と呼ぶ.\n", "\n", "**解答例:** $\\d=\\frac{d}{dx}$ とおく. $x\\d x^k = kx^k$ となる. ゆえに, $\\ds{}_2F_1(a,b;c;x)=\\sum_{k=0}^\\infty \\frac{(a)_k (b)_k}{(c)_k k!} x^k$ より,\n", "\n", "$$\n", "\\begin{aligned}\n", "&\n", "(x\\d+a)y = \\sum_{k=0}^\\infty \\frac{(a)_k (b)_k}{(c)_k k!} (a+k)x^k =\n", "\\sum_{k=0}^\\infty \\frac{a(a+1)_k (b)_k}{(c)_k k!}x^k =\n", "a\\,{}_2F_1(a+1,b;c;x),\n", "\\\\& \\therefore\\quad\n", "(x\\d+a)(x\\d+b)y = ab\\,{}_2F_1(a+1,b+1;c;x).\n", "\\\\ &\n", "\\d(x\\d+c-1)y = \\sum_{k=1}^\\infty \\frac{(a)_k (b)_k}{(c)_k k!}(c+k-1)k x^{k-1} \n", "\\\\ &\\qquad\\qquad\\quad =\n", "\\sum_{k=1}^\\infty \\frac{a(a+1)_{k-1} b(b+1)_{k-1}}{(c)_{k-1} (k-1)!} x^{k-1} =\n", "ab\\,{}_2F_1(a+1,b+1;c;x),\n", "\\\\ & \\therefore\\quad\n", "[\\d(x\\d+c-1)-(x\\d+a)(x\\d+b)] y = 0.\n", "\\end{aligned}\n", "$$\n", "\n", "そして,\n", "\n", "$$\n", "\\begin{aligned}\n", "\\d(x\\d+c-1)-(x\\d+a)(x\\d+b) &=\n", "x\\d^2+c\\d - (x^2\\d^2 + (a+b+1)x\\d + ab) \n", "\\\\ &=\n", "x(1-x)\\d^2 +(c-(a+b+1)x)\\d - ab.\n", "\\end{aligned}\n", "$$\n", "\n", "これで示したい公式が示された. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**注意:** Gaussの超幾何函数に関する詳しい結果を用いて, Virasoro代数の対称性を持つBelavin-Polyakov-Zamolodchikovの共形場理論の $c=1$ の場合を詳しく分析すると, Painlevé VI 方程式の $\\tau$ 函数を構成できるという面白い結果については, 次の集中講義のノートを参照せよ.\n", "\n", "* 名古屋創, 共形場理論とPainlevé方程式, 東北大学数学教室における集中講義, 2018年5月7日~10日\n", "\n", "この集中講義の第2回目はGaussの超幾何微分方程式の易しい入門的解説になっている. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**問題(Kummerの合流型超幾何微分方程式):** $y={}_1F_1(b; c; x)$ が\n", "\n", "$$\n", "xy'' + (c-x)y' - by = 0\n", "$$\n", "\n", "を満たしていることを示せ. これを**Kummerの合流型超幾何微分方程式**と呼ぶ.\n", "\n", "**解答例:**$\\d=\\frac{d}{dx}$ とおく. $x\\d x^k = kx^k$ となる. ゆえに, $\\ds{}_1F_1(b;c;x)=\\sum_{k=0}^\\infty \\frac{(b)_k}{(c)_k k!} x^k$ より,\n", "\n", "$$\n", "\\begin{aligned}\n", "&\n", "(x\\d+b)y = \\sum_{k=0}^\\infty \\frac{(b)_k}{(c)_k k!} (b+k)x^k =\n", "\\sum_{k=0}^\\infty \\frac{b(b+1)_k}{(c)_k k!}x^k =\n", "b\\,{}_2F_1(b+1;c;x),\n", "\\\\ &\n", "\\d(x\\d+c-1)y = \\sum_{k=1}^\\infty \\frac{(b)_k}{(c)_k k!}(c+k-1)k x^{k-1} \n", "\\\\ &\\qquad\\qquad\\quad =\n", "\\sum_{k=1}^\\infty \\frac{b(b+1)_{k-1}}{(c)_{k-1} (k-1)!} x^{k-1} =\n", "b\\,{}_1F_1(b+1;c;x),\n", "\\\\ & \\therefore\\quad\n", "[\\d(x\\d+c-1)-(x\\d+b)] y = 0.\n", "\\end{aligned}\n", "$$\n", "\n", "そして,\n", "\n", "$$\n", "\\begin{aligned}\n", "\\d(x\\d+c-1)-(x\\d+b) &=\n", "x\\d^2+c\\d - (x\\d+b)\n", "\\\\ &=\n", "x(1-x)\\d^2 +(c-x)\\d - b.\n", "\\end{aligned}\n", "$$\n", "\n", "これで示したい公式が示された. $\\QED$" ] } ], "metadata": { "@webio": { "lastCommId": null, "lastKernelId": null }, "_draft": { "nbviewer_url": "https://gist.github.com/bcbdff11a10b6c9679ecf773d4486a0f" }, "gist": { "data": { "description": "06 Taylor's theorems", "public": true }, "id": "bcbdff11a10b6c9679ecf773d4486a0f" }, "jupytext": { "formats": "ipynb,md" }, "kernelspec": { "display_name": "Julia 1.9.3", "language": "julia", "name": "julia-1.9" }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", "version": "1.9.3" }, "toc": { "base_numbering": 1, "nav_menu": { "height": "207px", "width": "242px" }, "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": "214px" }, "toc_section_display": true, "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 2 }