{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 12 Fourier解析\n", "\n", "黒木玄\n", "\n", "2018-06-28\n", "\n", "* Copyright 2018 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/12%20Fourier%20analysis.ipynb\n", "\n", "* https://genkuroki.github.io/documents/Calculus/12%20Fourier%20analysis.pdf\n", "\n", "このファイルは Julia Box で利用できる.\n", "\n", "自分のパソコンにJulia言語をインストールしたい場合には\n", "\n", "* WindowsへのJulia言語のインストール\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\\T{{\\mathbb T}}\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\\real{\\operatorname{Re}}\n", "\\newcommand\\imag{\\operatorname{Im}}\n", "\\newcommand\\Li{\\operatorname{Li}}\n", "$" ] }, { "cell_type": "markdown", "metadata": { "toc": true }, "source": [ "

Table of Contents

\n", "
" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "using Plots\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": "markdown", "metadata": {}, "source": [ "## Riemann-Lebesgueの定理" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 階段函数\n", "\n", "空でない区間 $I$ 上の函数で部分集合 $A$ 上で $1$, その外で $0$ になる函数を $\\chi_A(x)$ と書く:\n", "\n", "$$\n", "\\chi_A(x) = \\begin{cases}\n", "1 & (x\\in A) \\\\\n", "0 & (x\\not\\in A).\n", "\\end{cases}\n", "$$\n", "\n", "区間 $I$ に含まれる**長さが有限**の区間 $I_1,\\ldots,I_n$ と数 $\\alpha_1,\\ldots,\\alpha_n$ によって定まる函数\n", "\n", "$$\n", "s(x) = \\sum_{i=1}^n \\alpha_i\\chi_A(x) \\quad (x\\in I)\n", "$$\n", "\n", "を区間 $I$ 上の**階段函数**と呼ぶことにする.\n", "\n", "$f$ は区間 $I$ 上の函数であるとする. 任意の $\\eps>0$ に対してある階段函数 $s(x)$ で\n", "\n", "$$\n", "\\|f-s\\|_1 = \\int_I |f(x)-s(x)|\\,dx < \\eps\n", "$$\n", "\n", "を満たすものが存在するとき, $f$ は**階段函数で $L^1$ 近似可能**であるということにする. ここで $I=[a,b], [a,b), (a,b], (a,b)$ のとき, $\\int_I$ の意味は $\\int_I=\\int_a^b$ であるとする. $a=-\\infty$ であっても $b=\\infty$ であっても構わないものとする." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**問題:** $\\R=(-\\infty,\\infty)$ 上の連続函数 $f(x)$ で $\\ds\\int_{-\\infty}^\\infty |f(x)|\\,dx < \\infty$ を満たすものは階段函数で $L^1$ 近似可能であることを示せ.\n", "\n", "**解答例:** 任意に $\\eps>0$ を取る $\\int_{-\\infty}^\\infty |f(x)|\\,dx < \\infty$ より, 十分に $R>0$ を大きくすると, \n", "\n", "$$\n", "\\int_{-\\infty}^{-R}|f(x)|\\,dx + \\int_R^\\infty |f(x)|\\,dx =\n", "\\int_{-\\infty}^\\infty |f(x)|\\,dx - \\int_{-R}^R |f(x)|\\,dx < \\frac{\\eps}{2}.\n", "$$\n", "\n", "$f(x)$ は $[-R,R]$ 上で一様連続なので, 正の整数 $N$ を十分に大きくして, 区間 $[-R,R]$ を $N$ 等分したものを $I_1,\\ldots,I_N$ として, $x_i\\in I_i$ を任意に取ると, \n", "\n", "$$\n", "|f(x)-f(x_i)|< \\frac{\\eps}{4R} \\quad (x\\in I_i,\\ i=1,\\ldots,N).\n", "$$\n", "\n", "ここで, 例えば $\\Delta = 2R/N$, $a_i=R+i\\Delta$, $I_1=[a_0,a_1)$, $\\ldots$, $I_{N-1}=[a_{N-2},a_{N-1}])$, $I_N=[a_{N-1},a_N]$ とおいたと考えてよい. このとき階段函数 $s(x)$ を\n", "\n", "$$\n", "s(x)=\\sum_{i=1}^N f(x_i)\\chi_{I_i}(x)\n", "$$\n", "\n", "と定めると,\n", "\n", "$$\n", "|f(x)-f(x_i)| < \\frac{\\eps}{4R} \\quad (-R\\leqq x\\leqq R).\n", "$$\n", "\n", "このとき\n", "\n", "$$\n", "\\int_{-R}^R|f(x)-s(x)|\\,dx \\leqq \\frac{\\eps}{4R}2R = \\frac{\\eps}{2}.\n", "$$\n", "\n", "したがって,\n", "\n", "$$\n", "\\begin{aligned}\n", "\\|f-s\\|_1 &= \\int_{-\\infty}^\\infty|f(x)-s(x)|\\,dx \n", "\\\\ &=\n", "\\int_{-\\infty}^{-R} |f(x)-s(x)|\\,dx + \\int_{-R}^R|f(x)-s(x)|\\,dx + \\int_R^\\infty|f(x)-s(x)|\\,dx \n", "\\\\ &=\n", "\\int_{-\\infty}^{-R} |f(x)|\\,dx + \\int_{-R}^R|f(x)-s(x)|\\,dx + \\int_R^\\infty|f(x)|\\,dx \n", "\\\\ &< \n", "\\frac{\\eps}{2}+\\frac{\\eps}{2}=\\eps.\n", "\\end{aligned}\n", "$$\n", "\n", "これで示すべきことが示された. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**注意:** この注意はLebesgue積分論の知識を前提とする. 一般に区間上の可測函数 $f(x)$ で\n", "\n", "$$\n", "\\int_I |f(x)|\\,dx < \\infty\n", "$$\n", "\n", "を満たすものを, $I$ 上の **$L^1$ 函数** または**可積分函数**(もしくは**積分可能函数**)と呼ぶ. $I$ 上 $L^1$ 函数は $I$ 上の階段函数で $L^1$ 近似可能であることが知られている. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**補題(階段函数に関するRiemann-Lebesgueの定理):** 区間 $I$ 上の階段函数 $s(x)$ について\n", "\n", "$$\n", "\\int_I s(x) e^{ipx}\\,dx \\to 0 \\quad (|p|\\to\\infty).\n", "$$\n", "\n", "**証明:** $-\\infty\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "0.0\n", "\n", "\n", "2.5\n", "\n", "\n", "5.0\n", "\n", "\n", "7.5\n", "\n", "\n", "10.0\n", "\n", "\n", "-1.0\n", "\n", "\n", "-0.5\n", "\n", "\n", "0.0\n", "\n", "\n", "0.5\n", "\n", "\n", "1.0\n", "\n", "\n", "p = 5\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "0.0\n", "\n", "\n", "2.5\n", "\n", "\n", "5.0\n", "\n", "\n", "7.5\n", "\n", "\n", "10.0\n", "\n", "\n", "-1.0\n", "\n", "\n", "-0.5\n", "\n", "\n", "0.0\n", "\n", "\n", "0.5\n", "\n", "\n", "1.0\n", "\n", "\n", "p = 20\n", "\n", "\n", "\n", "\n", "\n", "\n" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# e^{ipx} を sin(px) に置き換えた場合の図\n", "\n", "a = 0.0\n", "b = 10.0\n", "f(p,x) = sin(p*x)\n", "maxa(a,b,p) = a + 2π/abs(p)*fld(b-a, 2π/abs(p))\n", "x = a:0.01:b\n", "PP = []\n", "for p in [5, 20]\n", " xx = maxa(a,b,p):0.001:b\n", " P = plot(title=\"p = $p\", titlefontsize=10)\n", " plot!(legend=false, ylims=(-1.05,1.05))\n", " plot!(x, f.(p,x))\n", " hline!([0], color=:cyan, ls=:dot)\n", " plot!(xx, f.(p,xx), color=:red, fill=(0, 0.5, :red))\n", " push!(PP, P)\n", "end\n", "plot(PP..., size=(700, 250))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**問題:** $p\\geqq 1$ であるとし, $f$ は $\\R$ 上の連続函数で $\\ds\\int_{-\\infty}^\\infty |f(x)|^p\\,dx<\\infty$ を満たすものであるとする. このとき, $\\R$ 上の階段函数 $s$ で $\\ds \\|f-s\\|_p = \\left(\\int_{-\\infty}^\\infty |f(x)-s(x)|^p\\,dx\\right)^{1/p}<\\eps$ を満たすものが存在することを示せ. \n", "\n", "**解答例:** 任意に $\\eps>0$ を取る. \n", "\n", "$R>0$ に対して, $f_R(x)$ を $|x|\\leqq R$ のとき $f(x)$ と定め, $|x|>R$ のとき $0$ と定める. このとき, \n", "\n", "$$\n", "(\\|f-f_R\\|_p)^p =\n", "\\int_{-\\infty}^\\infty |f(x)-f_R(x)|^p\\,dx =\n", "\\int_{|x|>R} |f(x)|^p\\,dx\n", "$$\n", "\n", "より, $R\\to\\infty$ で $\\|f-f_R\\|_p\\to 0$ となることがわかる. ゆえに $R>0$ を十分に大きくすると, $\\ds\\|f-f_R\\|_p<\\frac{\\eps}{2}$ となる.\n", "\n", "区間 $[R,-R]$ 上の連続函数 $f_R(x)$ は階段函数 $s$ で一様近似される. すなわち, ある階段函数 $s$ が存在して, $\\ds\\sup_{|x|\\leqq R}|f(x)-s(x)|<\\frac{\\eps}{2(2R)^{1/p}}$ となる. このとき, $s$ を $\\R$ 全体に $[-R,R]$ の外で $0$ になるように拡張したものも $s$ と書くと, \n", "\n", "$$\n", "\\|f_R-s\\|_p = \n", "\\left(\\int_{-R}^R |f(x)-s(x)|^p\\right)^{1/p} \\leqq\n", "\\left(\\frac{\\eps^p}{2^p(2R)}2R\\right)^{1/p} = \\frac{\\eps}{2}.\n", "$$\n", "\n", "Minkowskiの不等式より,\n", "\n", "$$\n", "\\|f-s\\|_p \\leqq \n", "\\|f-f_R\\|_p + \\|f_R-s\\|_p <\n", "\\frac{\\eps}{2}+\\frac{\\eps}{2} = \\eps.\n", "\\qquad \\QED\n", "$$\n", "\n", "**注意:** 上の問題は連続な $L^p$ 函数が階段函数で $L^p$ 近似されるということを意味する. 実際には任意の $L^p$ 函数が階段函数で $L^p$ 近似されることが示される. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**問題:** $f$ が $L^p$ 函数であるとき, $y\\to 0$ ならば $\\|f(\\cdot-y)-f\\|_p\\to 0$ となることを示せ.\n", "\n", "**略解例:** $f$ は階段函数で $L^p$ 近似され, $f$ が階段函数ならばこの問題の結論が成立することは容易に示されることから, $f$ が一般の $L^p$ 函数の場合に関するこの問題の結論が成立することが示される. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Riemann-Lebesgueの定理とその証明\n", "\n", "**Riemann-Lebesgueの定理:** $f$ は区間 $I$ 上の階段函数で $L^1$ 近似可能な函数であるとする. (Lebesgue積分論を知っている人は, $f(x)$ は区間 $I$ 上の $L^1$ 函数であると仮定してもよい.) このとき,\n", "\n", "$$\n", "\\int_I f(x)e^{ipx}\\,dx \\to 0 \\quad (|p|\\to\\infty).\n", "$$\n", "\n", "**証明:** 任意に $\\eps>0$ を取る. $f(x)$ は階段函数で $L^1$ 近似可能なので, ある階段函数 $\\ds s(x)=\\sum_{i=1}^n a_i\\chi_{I_i}(x)$ で\n", "\n", "$$\n", "\\|f-s\\|_1=\\int_I |f(x)-s(x)|\\,dx < \\frac{\\eps}{2}\n", "$$\n", "\n", "を満たすものが存在する. 階段函数に関する前節の補題より, ある $R>0$ が存在して, $|p|\\geqq R$ ならば\n", "\n", "$$\n", "\\left|\\int_I s(x)e^{ipx}\\,dx\\right|<\\frac{\\eps}{2}.\n", "$$\n", "\n", "そのとき, \n", "\n", "$$\n", "\\begin{aligned}\n", "\\left|\\int_I f(x)e^{ipx}\\,dx\\right| &=\n", "\\left|\\int_I (f(x)-s(x))e^{ipx}\\,dx + \\int_I s(x)e^{ipx}\\,dx\\right| \n", "\\\\ &\\leqq\n", "\\left|\\int_I (f(x)-s(x))e^{ipx}\\,dx\\right| + \\left|\\int_I s(x)e^{ipx}\\,dx\\right| \n", "\\\\ &\\leqq\n", "\\int_I |f(x)-s(x)|\\,dx + \\left|\\int_I s(x)e^{ipx}\\,dx\\right| \n", "\\\\ &=\n", "\\|f-s\\|_1 + \\left|\\int_I s(x)e^{ipx}\\,dx\\right| <\n", "\\frac{\\eps}{2}+\\frac{\\eps}{2} = \\eps.\n", "\\end{aligned}\n", "$$\n", "\n", "これで $|p|\\to\\infty$ で $\\ds \\int_I f(x)e^{ipx}\\,dx\\to 0$ となることがわかった. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**解説:** Riemann-Lebesgueの定理(リーマン・ルベーグの定理)は $|p|$ を大きくすると, $e^{ipx}$ が $x$ についてより細かく振動するようになるので, $e^{ipx}$ と積を取ってから積分すると, 実部と虚部それぞれの正の成分と負の成分が互いに打ち消され易くなって, 積分の絶対値の値が小さくなることを意味している. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Fourier変換の逆変換の収束" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Fourier変換とFourier逆変換の定義\n", "\n", "$\\R$ 上の函数 $f(x)$ の**Fourier変換** $\\hat{f}(p)$ を次のように定義する:\n", "\n", "$$\n", "\\hat{f}(p) = \\int_\\R f(x)e^{-2\\pi ipx}\\,dx.\n", "$$\n", "\n", "さらに $\\R$ 上の函数 $g(p)$ の**Fourier逆変換** $\\check{g}(x)$ を次のように定義する:\n", "\n", "$$\n", "\\check{g}(x) = \\int_\\R g(p)e^{2\\pi ipx}\\,dp.\n", "$$\n", "\n", "$f(x)$ が $\\R$ 上の $L^1$ 函数ならば, Lebesgueの収束定理より $\\hat{f}(p)$ は $p$ の連続函数になり, Riemann-Lebegueの定理より $|p|\\to\\infty$ で $\\hat{f}(p)\\to 0$ となる. \n", "\n", "**注意:** Fourier変換とFourier逆変換を, 上の公式における $p$ を $p/(2\\pi)$ で置き換えることによって, \n", "\n", "$$\n", "\\hat{f}(p) = \\int_\\R f(x)e^{-ipx}\\,dx, \\quad\n", "\\check{g}(p) = \\frac{1}{2\\pi}\\int_\\R g(p)e^{ipx}\\,dp\n", "$$\n", "\n", "と定義するスタイルもよく使われている. 他にも\n", "\n", "$$\n", "\\hat{f}(p) = \\frac{1}{\\sqrt{2\\pi}}\\int_\\R f(x)e^{-ipx}\\,dx, \\quad\n", "\\check{g}(p) = \\frac{1}{\\sqrt{2\\pi}}\\int_\\R g(p)e^{ipx}\\,dp\n", "$$\n", "\n", "と定義するスタイルも使われることがある. $\\QED$\n", "\n", "以下の節では, $L^1$ 函数 $f(x)$ に対して, \n", "\n", "$$\n", "f(x) = \\lim_{N\\to\\infty} \\int_{-N}^N \\hat{f}(p)e^{ipx}\\,dp \n", "$$\n", "\n", "がいつ成立しているかを調べる. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Dirichlet核\n", "\n", "**Dirichlet核** $D_N(x)$ を\n", "\n", "$$\n", "D_N(x) = \\int_{-N}^N e^{2\\pi ipx}\\,dp = \\left[\\frac{e^{2\\pi ipx}}{2\\pi ix}\\right]_{p=-N}^{p=N} =\n", "\\frac{e^{e\\pi iNx}-e^{-2\\pi iNx}}{2\\pi ix} = \\frac{\\sin(2\\pi Nx)}{\\pi x}\n", "$$\n", "\n", "と定める. ただし, $D_N(0)=2N$ と定めておく. $D_N(x)$ は有界な偶函数になる.\n", "\n", "このとき\n", "\n", "$$\n", "\\begin{aligned}\n", "\\int_{-N}^N \\hat{f}(p)e^{2\\pi ipx}\\,dp &=\n", "\\int_{-N}^N \\left(\\int_\\R f(y)e^{-2\\pi ipy}\\,dy\\right)e^{2\\pi ipx}\\,dp =\n", "\\int_\\R f(y) \\left(\\int_{-N}^N e^{2\\pi ip(x-y)}\\,dp\\right)\\,dy\n", "\\\\ &=\n", "\\int_\\R f(y) D_N(x-y)\\,dy =\n", "\\int_\\R f(x+y) D_N(y)\\,dy.\n", "\\end{aligned}\n", "$$\n", "\n", "最後の等号で $y$ を $x+y$ で置き換えて, $D_N(-y)=D_N(y)$ を使った." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**問題:** Dirichlet核のグラフを描け. $\\QED$\n", "\n", "**解説:** $N$ が大きくなると, Dirichelt核 $D_N(x)$ のグラフの振動の仕方は細かくなり, $x=0$ の近くでの値も大きくなる.\n", "\n", "以下のセルを見よ. $\\QED$" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "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", "-5.0\n", "\n", "\n", "-2.5\n", "\n", "\n", "0.0\n", "\n", "\n", "2.5\n", "\n", "\n", "5.0\n", "\n", "\n", "-0.5\n", "\n", "\n", "0.0\n", "\n", "\n", "0.5\n", "\n", "\n", "1.0\n", "\n", "\n", "1.5\n", "\n", "\n", "2.0\n", "\n", "\n", "N=1\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "-5.0\n", "\n", "\n", "-2.5\n", "\n", "\n", "0.0\n", "\n", "\n", "2.5\n", "\n", "\n", "5.0\n", "\n", "\n", "-1\n", "\n", "\n", "0\n", "\n", "\n", "1\n", "\n", "\n", "2\n", "\n", "\n", "3\n", "\n", "\n", "4\n", "\n", "\n", "N=2\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "-5.0\n", "\n", "\n", "-2.5\n", "\n", "\n", "0.0\n", "\n", "\n", "2.5\n", "\n", "\n", "5.0\n", "\n", "\n", "0\n", "\n", "\n", "2\n", "\n", "\n", "4\n", "\n", "\n", "6\n", "\n", "\n", "N=3\n", "\n", "\n", "\n" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# ディリクレ核 D_N(x) のグラフ\n", "\n", "D(N,x) = iszero(x) ? 2N : sin(2π*N*x)/(π*x)\n", "PP = []\n", "for N in [1,2,3,4,5,6]\n", " x = -6:0.01:6\n", " P = plot(x, D.(N,x), title=\"N=$N\", titlefontsize=10)\n", " push!(PP, P)\n", "end\n", "plot(PP[1:3]..., size=(750, 150), legend=false, layout=@layout([a b c]))" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "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", "-5.0\n", "\n", "\n", "-2.5\n", "\n", "\n", "0.0\n", "\n", "\n", "2.5\n", "\n", "\n", "5.0\n", "\n", "\n", "0.0\n", "\n", "\n", "2.5\n", "\n", "\n", "5.0\n", "\n", "\n", "7.5\n", "\n", "\n", "N=4\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "-5.0\n", "\n", "\n", "-2.5\n", "\n", "\n", "0.0\n", "\n", "\n", "2.5\n", "\n", "\n", "5.0\n", "\n", "\n", "0\n", "\n", "\n", "3\n", "\n", "\n", "6\n", "\n", "\n", "9\n", "\n", "\n", "N=5\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "-5.0\n", "\n", "\n", "-2.5\n", "\n", "\n", "0.0\n", "\n", "\n", "2.5\n", "\n", "\n", "5.0\n", "\n", "\n", "-2.5\n", "\n", "\n", "0.0\n", "\n", "\n", "2.5\n", "\n", "\n", "5.0\n", "\n", "\n", "7.5\n", "\n", "\n", "10.0\n", "\n", "\n", "N=6\n", "\n", "\n", "\n" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "plot(PP[4:6]..., size=(750, 150), legend=false, layout=@layout([a b c]))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Dirichlet積分の公式\n", "\n", "条件収束する広義積分に関する公式\n", "\n", "$$\n", "\\ds\\int_0^\\infty\\frac{\\sin t}{t}\\,dt=\\frac{\\pi}{2}\n", "$$\n", "\n", "より\n", "\n", "$$\n", "\\int_{-\\infty}^\\infty D_N(x)\\,dx = \\frac{2}{\\pi}\\int_0^\\infty \\frac{\\sin(2\\pi Nx)}{x}\\,dx =\n", "\\frac{2}{\\pi}\\int_0^\\infty \\frac{\\sin(2\\pi Nx)}{x}\\,dx = \\frac{2}{\\pi}\\frac{\\pi}{2}=1.\n", "$$\n", "\n", "三番目の等号で $x=t/(2\\pi N)$ と置換して計算した. この公式は条件収束する積分の公式であることに注意せよ.\n", "\n", "上の公式(**Dirichlet積分の公式**と呼ばれる)については\n", "\n", "* 09 積分\n", "\n", "のDirichlet積分とその一般化の解説を参照せよ." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Dirichlet積分の公式補足:** 条件収束する広義積分に関する次の公式が成立している:\n", "\n", "$$\n", "\\int_{-\\infty}^\\infty \\frac{\\sin(ax)}{\\pi x}\\,dx = \\sign(a) =\n", "\\begin{cases}\n", "1 & (a<0) \\\\\n", "0 & (a=0) \\\\\n", "-1 & (a>0).\n", "\\end{cases}\n", "$$\n", "\n", "**証明:** $a=0$ のとき, 被積分函数が恒等的に $0$ になるので, 積分も $0$ になる. $a\\ne 0$ と仮定する.\n", "\n", "$$\n", "\\int_{-\\infty}^\\infty \\frac{\\sin(ax)}{\\pi x}\\,dx = \\frac{2}{\\pi}\\int_0^\\infty \\frac{\\sin(ax)}{x}\\,dx\n", "$$\n", "\n", "であるから, $x = t/|a|$ と置換すると, $a/|a|=\\sign(a)$ なので,\n", "\n", "$$\n", "\\frac{2}{\\pi}\\int_0^\\infty \\frac{\\sin(ax)}{x}\\,dx =\n", "\\frac{2}{\\pi}\\int_0^\\infty \\frac{\\sign(a)\\sin(t)}{t}\\,dt = \\sign(a)\\frac{2}{\\pi}\\frac{\\pi}{2}=\\sign(a).\n", "\\qquad\\QED\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Riemannの局所性定理\n", "\n", "**Riemannの局所性定理:** $f$ は $\\R$ 上の $L^1$ 函数であるとし, $\\delta>0$ であるとする. このとき,\n", "\n", "$$\n", "\\lim_{N\\to\\infty}\\int_{-\\infty}^{-\\delta} f(x+y)D_N(y)\\,dy = 0, \\quad\n", "\\lim_{N\\to\\infty}\\int_\\delta^\\infty f(x+y)D_N(y)\\,dy = 0\n", "$$\n", "\n", "となる. これより, $\\ds\\int_{-N}^N \\hat{f}(p)e^{2\\pi ipx}\\,dp = \\int_\\R f(x+y) D_N(y)\\,dy$ が $N\\to\\infty$ で収束することと, $\\ds\\int_{-\\delta}^\\delta f(x+y) D_N(y)\\,dy$ が $N\\to\\infty$ で収束することは同値であり, 収束する場合には同じ値に収束することがわかる. 後者が収束するか否かおよび収束するとしたらどこに収束するかは $x$ の近くでの函数 $f$ の様子だけで決まることに注意せよ. \n", "\n", "**証明:**\n", "$$\n", "\\begin{aligned}\n", "&\n", "\\int_{-\\infty}^{-\\delta} f(x+y)D_N(y)\\,dy = \\int_{-\\infty}^{-\\delta} \\frac{f(x+y)}{y} \\sin(2\\pi Ny)\\,dy,\n", "\\\\ &\n", "\\int_\\delta^\\infty f(x+y)D_N(y)\\,dy = \\int_{-\\infty}^{-\\delta} \\frac{f(x+y)}{y} \\sin(2\\pi Ny)\\,dy.\n", "\\end{aligned}\n", "$$\n", "\n", "であり, 区間 $(-\\infty,-\\delta)$ と $(\\delta,\\infty)$ のそれぞれの上で函数 $f(x+y)/y$ は $L^1$ 函数なので, Riemann-Lebesgueの定理より, これらは $N\\to\\infty$ で $0$ に収束する. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Fourier変換の逆変換の収束性 (Diniの条件)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**補題:** $\\delta>0$ のとき,\n", "\n", "$$\n", "\\lim_{N\\to\\infty}\\int_{-\\infty}^{-\\delta} D_N(y)dy = 0, \\quad\n", "\\lim_{N\\to\\infty}\\int_\\delta^\\infty D_N(y)dy = 0. \n", "$$\n", "\n", "**注意:** 条件収束する広義積分の極限に関する結果なのでRiemann-Lebesgueの定理を直接使用できない. $\\QED$\n", "\n", "**証明:** $D_N(y)$ は偶函数なので後者のみを示せば十分である. Dirichlet積分の公式より $\\ds\\lim_{N\\to\\infty}\\int_0^{2\\pi N\\delta} \\frac{\\sin t}{t}\\,dt=\\frac{\\pi}{2}$ なので, $\\ds\\lim_{N\\to\\infty}\\int_{2\\pi N\\delta}^\\infty \\frac{\\sin t}{\\pi t}\\,dt=0$ となることがわかる. ゆえに, $y=t/(2\\pi N)$ とおくと, \n", "\n", "$$\n", "\\int_\\delta^\\infty D_N(y)dy = \\int_\\delta^\\infty \\frac{\\sin(2\\pi Ny)}{\\pi y}\\,dy =\n", "\\int_{2\\pi N\\delta}^\\infty \\frac{\\sin t}{\\pi t}\\,dt\\to 0 \\quad (N\\to\\infty).\n", "\\qquad\\QED\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**定理(Diniの条件):** $f$ は $\\R$ 上の $L^1$ 函数であり, $x\\in \\R$ であるとする.とする. さらに, ある $\\delta>0$ が存在して, \n", "\n", "$$\n", "\\int_0^\\delta \\frac{|(f(x+y) + f(x-y) - 2f(x)|}{y}\\,dy <\\infty\n", "\\tag{$*$}\n", "$$\n", "\n", "が成立していると仮定する. この条件($*$)を**Diniの条件**と呼ぶ. このとき, \n", "\n", "$$\n", "\\lim_{N\\to\\infty}\\int_{-N}^N \\hat{f}(p)e^{2\\pi ipx}\\,dp = \\lim_{N\\to\\infty}\\int_\\R f(x+y) D_N(y)\\,dy = f(x).\n", "$$\n", "\n", "**証明:** $\\ds \\int_{-N}^N \\hat{f}(p)e^{2\\pi ipx}\\,dp - f(x)$ が $N\\to\\infty$ で $0$ に収束することを示せばよい. \n", "\n", "$$\n", "\\begin{aligned}\n", "\\int_{-N}^N \\hat{f}(p)e^{2\\pi ipx}\\,dp - f(x) &=\n", "\\int_\\R f(x+y) D_N(y)\\,dy - f(x) \\int_{-\\infty}^\\infty D_N(y)\\,dy\n", "\\\\ &=\n", "\\int_{-\\infty}^\\infty (f(x+y)-f(x)) D_N(y)\\,dy\n", "\\\\ &=\n", "\\int_0^\\infty (f(x+y)-f(x)) D_N(y)\\,dy +\n", "\\int_{-\\infty}^0 (f(x+y)-f(x)) D_N(y)\\,dy\n", "\\\\ &=\n", "\\int_0^\\infty (f(x+y)-f(x)) D_N(y)\\,dy +\n", "\\int_0^\\infty (f(x-y)-f(x)) D_N(y)\\,dy\n", "\\\\ &=\n", "\\int_0^\\infty (f(x+y)+f(x-y)-2f(x)) D_N(y)\\,dy\n", "\\\\ &=\n", "\\int_0^\\infty \\frac{f(x+y)+f(x-y)-2f(x)}{y} \\frac{\\sin(2\\pi N y)}{\\pi}\\,dy = I_N + J_N.\n", "\\end{aligned}\n", "$$\n", "\n", "ここで, $I_N,J_N$ を次のように定義した:\n", "\n", "$$\n", "\\begin{aligned}\n", "&\n", "I_N = \\int_0^\\delta \\frac{f(x+y)+f(x-y)-2f(x)}{y} \\frac{\\sin(2\\pi N y)}{\\pi}\\,dy, \n", "\\\\ &\n", "J_N = \\int_\\delta^\\infty \\frac{f(x+y)+f(x-y)-2f(x)}{y} \\frac{\\sin(2\\pi N y)}{\\pi}\\,dy.\n", "\\end{aligned}\n", "$$\n", "\n", "$N\\to\\infty$ のとき, Riemannの局所性定理とすぐ上の補題より $J_N\\to 0$ となり, Diniの条件の仮定とRiemann-Lebesgueの定理より $I_N\\to 0$ となる. これで示したいことが示せた. $\\QED$\n", "\n", "**補足:** もしも $f(x)$ とそのFourier変換 $\\hat{f}(p)$ が両方可積分でかつ, $f(x)$ が $x$ におけるDiniの条件を満たしているならば,\n", "\n", "$$\n", "\\int_{-\\infty}^\\infty \\hat{f}(p)e^{2\\pi ipx}\\,dp = f(x)\n", "$$\n", "\n", "は絶対収束する積分の公式として成立している. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**例:** $f$ は $\\R$ 上の $L^1$ 函数であるとする. $y\\searrow 0$ のとき $f(x+y), f(x-y)$ は収束していると仮定し, それぞれの収束先を $f(x+0), f(x-0)$ と書くことにする. さらに $y\\searrow 0$ で $\\ds\\frac{f(x+y)-f(x+0)}{y}$ と $\\ds\\frac{f(x-y)-f(x-0)}{y}$ が収束していると仮定する. 特に $f$ が $x$ で微分可能ならばそれらの条件が成立している. \n", "\n", "このとき, 十分小さな $\\delta>0$ を取ると, $\\ds\\frac{f(x+y)+f(x-y)-(f(x+0)+f(x-0))}{y}$ は $00$ であるとし, $f(x)$ を\n", "\n", "$$\n", "f(x) = \\begin{cases}\n", "1 & (-a-a) \\\\\n", "0 & (x=a) \\\\\n", "-1/2 & (x<-a),\n", "\\end{cases}\n", "\\\\ &\n", "\\lim_{N\\to\\infty}\\frac{1}{2}\\int_{-N}^N \\frac{\\sin(2\\pi(a-x)p)}{\\pi p}\\,dp =\n", "\\begin{cases}\n", "1/2 & (xa).\n", "\\end{cases}\n", "\\end{aligned}\n", "$$\n", "\n", "以上を合わせると, 式($*$)が成立していることがわかる. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## たたみ込み積と総和核" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### たたみ込み積\n", "\n", "$\\R$ 上の函数 $f$, $g$ の**たたみ込み積**(convolution) $f*g$ が次のように定義される:\n", "\n", "$$\n", "f*g(x) = \\int_{-\\infty}^\\infty f(x-y)g(y)\\,dy = \\int_{-\\infty}^\\infty f(y)g(x-y)\\,dy.\n", "$$\n", "\n", "たたみ込み積は函数と函数から函数を作る操作であることに注意せよ." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**問題:** $f$ と $g$ が $\\R$ 上の可積分函数ならば $\\ds\\int_\\R |f*g(x)|\\,dx < \\infty$ となることを示せ.\n", "\n", "**解答例:**\n", "$$\n", "\\begin{aligned}\n", "\\int_\\R |f*g(x)|\\,dx &= \n", "\\int_\\R\\left|\\int_\\R f(x-y)g(y)\\,dy\\right|\\,dx \\leqq\n", "\\int_\\R\\left(\\int_\\R |f(x-y)||g(y)|\\,dy\\right)\\,dx \n", "\\\\ &\\leqq\n", "\\int_\\R\\left(\\int_\\R |f(x-y)|\\,dx\\right)|g(y)|\\,dy =\n", "\\int_\\R\\left(\\int_\\R |f(x)|\\,dx\\right)|g(y)|\\,dy\n", "\\\\ &=\n", "\\int_\\R |f(x)|\\,dx\\;\\int_\\R|g(y)|\\,dy <\n", "\\infty. \\qquad \\QED\n", "\\end{aligned}\n", "$$\n", "\n", "**注意:** $\\|f*g\\|_1\\leqq \\|f\\|_1\\|g\\|_1$ を示せた. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**問題:** $p,p',q,q',r\\geqq 1$ が\n", "\n", "$$\n", "\\frac{1}{p}+\\frac{1}{p'}=1, \\quad\n", "\\frac{1}{q}+\\frac{1}{q'}=1, \\quad\n", "\\frac{1}{r}+\\frac{1}{p'}+\\frac{1}{q'} = 1\n", "$$\n", "\n", "を満たしているならば, \n", "\n", "$$\n", "\\|f*g\\|_r \\leqq \\|f\\|_p \\|g\\|_q\n", "$$\n", "\n", "となることを示せ.\n", "\n", "**解答例:** $f$, $g$ のそれぞれを $\\ds\\frac{f}{\\|f\\|_p}$, $\\ds\\frac{g}{\\|g\\|_q}$ で置き換えることによって, $\\|f\\|_p=\\|g\\|_q=1$ と仮定できるので, そのように仮定する. このとき,\n", "\n", "$$\n", "\\begin{aligned}\n", "&\n", "\\left(1-\\frac{p}{r}\\right)q' = \n", "p\\left(\\frac{1}{p}-\\frac{1}{r}\\right)q' =\n", "p\\left(1-\\frac{1}{q}\\right)q' =\n", "p,\n", "\\\\ &\n", "\\left(1-\\frac{q}{r}\\right)p' = \n", "q\\left(\\frac{1}{q}-\\frac{1}{r}\\right)p' =\n", "q\\left(1-\\frac{1}{p}\\right)p' =\n", "q\n", "\\end{aligned}\n", "$$\n", "\n", "なので, Hölderの不等式と $\\|f\\|_p=\\|g\\|_q=1$ より,\n", "\n", "$$\n", "\\begin{aligned}\n", "|f*g(x)| &= \n", "\\left|\\int_\\R f(x-y)g(y)\\,dy\\right| \\leqq\n", "\\int_\\R |f(x-y)||g(y)|\\,dy\n", "\\\\ &\\leqq\n", "\\int_\\R |f(x-y)|^{p/r}|g(y)|^{q/r}\\cdot |f(x-y)|^{1-p/r}\\cdot |g(y)|^{1-q/r}\\,dy\n", "\\\\ &=\n", "\\int_\\R |f(x-y)|^{p/r}|g(y)|^{q/r}\\cdot |f(x-y)|^{p/q'}\\cdot |g(y)|^{q/p'}\\,dy\n", "\\\\ &\\leqq\n", "\\left(\\int_\\R |f(x-y)|^p |g(y)|^q\\,dy\\right)^{1/r}\n", "\\left(\\int_\\R|f(x-y)|^p\\,dy\\right)^{1/q'}\n", "\\left(\\int_\\R|g(y)|^q\\,dy\\right)^{1/p'}\n", "\\\\ &=\n", "\\left(\\int_\\R |f(x-y)|^p |g(y)|^q\\,dy\\right)^{1/r}.\n", "\\end{aligned}\n", "$$\n", "\n", "したがって,\n", "\n", "$$\n", "\\begin{aligned}\n", "(\\|f*g\\|_r)^r &=\n", "\\int_\\R |f*g(x)|^r\\,dx \\leqq\n", "\\int_\\R\\left(\\int_\\R |f(x-y)|^p |g(y)|^q\\,dy\\right)\\,dx\n", "\\\\ &=\n", "\\int_\\R\\left(\\int_\\R |f(x-y)|^p\\,dx\\right)|g(y)|^q\\,dy =\n", "(\\|f\\|_p)^p(\\|g\\|_q)^q = 1.\n", "\\end{aligned}\n", "$$\n", "\n", "これで示すべきことがすべて示された. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**問題:** たたみ込み積が結合法則を満たしていることを積分の形式的計算で確認せよ.\n", "\n", "**解答例:** $\\ds\\varphi*\\psi(\\cdot)=\\int_\\R\\varphi(\\xi)\\psi(\\cdot-\\xi)\\,d\\xi$ を繰り返し使うと,\n", "\n", "$$\n", "\\begin{aligned}\n", "(f*g)*h(x) &= \n", "\\int_\\R\\left(\\int_\\R f(y)g(z-y)h(x-z)\\,dy\\right)\\,dz \n", "\\\\ &=\n", "\\int_\\R\\left(\\int_\\R f(y)g(z-y)h(x-z)\\,dz\\right)\\,dy \n", "\\\\ &=\n", "\\int_\\R\\left(\\int_\\R f(y)g(z)h(x-y-z)\\,dz\\right)\\,dy = \n", "f*(g*h)(x).\n", "\\end{aligned}\n", "$$\n", "\n", "2つ目の等号で積分順序を交換し, 3つ目の等号で $z$ を $y+z$ で置換した. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 総和核\n", "\n", "$\\delta > 0$ に対して, $\\ds\\int_{|x|>\\delta} f(x)\\,dx$ を\n", "\n", "$$\n", "\\int_{|x|>\\delta} f(x)\\,dx = \n", "\\int_{-\\infty}^{-\\delta} f(x)\\,dx +\n", "\\int_\\delta^\\infty f(x)\\,dx\n", "$$\n", "\n", "と定義しておく. この記号法を使うと, 次の定義の記述を少し簡潔にできる.\n", "\n", "**定義:** 以下の条件を満たす満たす $\\R$ 乗の可積分函数の族 $\\rho_t(x)$, $t>0$ を**総和核**(summability kernel)と呼ぶ:\n", "\n", "(S1) $\\ds\\int_\\R \\rho_t(x)\\,dx = 1$.\n", "\n", "(S2) ある正の定数 $C$ が存在して, 任意の $t>0$ に対して $\\ds\\int_\\R |\\rho_t(x)|\\,dx \\leqq C$.\n", "\n", "(S3) 任意の $\\delta>0$ に対して, $t\\searrow0$ のとき $\\ds\\int_{|x|>\\delta}|\\rho_t(x)|\\,dx\\to 0$. $\\QED$\n", "\n", "この定義は, 猪狩惺著『実解析入門』岩波書店(1996年)の§6.5に書いてあるものに等しい. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**注意:** 大雑把に言えば, 総和核とは**Diracのデルタ函数**に「収束」するような函数族のことである. Diracのデルタ函数 $\\delta(x)$ とは $f*\\delta=f$ すなわち\n", "\n", "$$\n", "\\int_\\R f(x-y)\\delta(y)\\,dy = \\int_\\R f(y)\\delta(x-y)\\,dy = f(x)\n", "$$\n", "\n", "を満たす「函数」のことである. 実際にはこのような「函数」は通常の函数としては存在しない. 所謂超函数として定義される. しかし, $\\rho_t$ を総和核とすれば, $t\\searrow0$ のとき適当な意味で $f*\\rho_t\\to f$ となることを示せる. より正確な内容については以下を参照せよ. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**例:** $\\rho(x)$ が $\\R$ 上の可積分函数で $\\ds\\int_\\R\\rho(x)\\,dx=1$ を満たしているならば, \n", "\n", "$$\n", "\\rho_t(x) = \\frac{1}{t}\\rho\\left(\\frac{x}{t}\\right), \\qquad t>0\n", "$$\n", "\n", "によって総和核 $\\rho_t(x)$ を構成できる. (S1)は $x=ty$ と置換すれば得られる:\n", "\n", "$$\n", "\\int_\\R \\rho_t(x)\\,dx =\n", "\\int_\\R \\rho\\left(\\frac{x}{t}\\right)\\frac{dx}{t} =\n", "\\int_\\R \\rho(y)\\,dy = 1.\n", "$$\n", "\n", "(S2)は $x=ty$, $\\ds C=\\int_\\R|\\rho(y)|\\,dy$ とおくと得られる:\n", "\n", "$$\n", "\\int_\\R|\\rho_t(x)|\\,dx =\n", "\\int_\\R\\left|\\rho\\left(\\frac{x}{t}\\right)\\right|\\,\\frac{dx}{t} =\n", "\\int_\\R|\\rho(y)|\\,dy = C.\n", "$$\n", "\n", "(S3)を示そう. この場合も $x=ty$ と変換する. $R\\to\\infty$ のとき $\\ds\\int_{-R}^R|\\rho(y)|\\,dy\\to C$ なので, $t\\searrow0$ のとき, \n", "\n", "$$\n", "\\int_{|x|>\\delta}|\\rho_t(x)|\\,dx =\n", "\\int_{|y|>\\delta/t}|\\rho(y)|\\,dy =\n", "C - \\int_{-\\delta/t}^{\\delta/t} |\\rho(y)|\\,dy \\to 0.\n", "$$\n", "\n", "これで $\\rho_t(x)$ が総和核であることがわかった. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**問題:** $\\rho_t(x)$ は総和核であると仮定し, $f$ は $\\R$ 上の連続函数であり、$|x|\\to\\infty$ のとき $f(x)\\to 0$ となるものであると仮定する. このとき, $t\\searrow0$ で $f$ と総和核 $\\rho_t$ たたみ込み積 $f*\\rho_t$ が $f$ に一様収束することを示せ.\n", "\n", "**解答例:** $\\eps>0$ であるとする. \n", "\n", "$$\n", "|f*\\rho_t(x)-f(x)| =\n", "\\left|\\int_\\R (f(x-y)-f(x)) \\rho_t(y)\\,dy\\right| \\leqq\n", "\\int_\\R|f(x-y)-f(x)||\\rho_t(y)|\\,dy = I + J.\n", "$$\n", "\n", "1つ目の等号で(S1)を使った. 最後の等号では\n", "\n", "$$\n", "I = \\int_{|y|\\leqq\\delta} |f(x-y)-f(x)||\\rho_t(y)|\\,dy, \\quad\n", "J = \\int_{|y|>\\delta} |f(x-y)-f(x)||\\rho_t(y)|\\,dy\n", "$$\n", "\n", "とおいた. $f$ は $\\R$ 上の一様連続函数になるので, (S2)を満たす正の定数 $C$ を取ると, ある $\\delta>0$ が存在して, $|y-x|\\leqq\\delta$ ならば $\\ds |f(y)-f(x)|<\\frac{\\eps}{2C}$ となる. このとき,\n", "\n", "$$\n", "I \\leqq \n", "\\frac{\\eps}{2C}\\int_{|y|<\\delta}|\\rho_t(y)|\\,dy \\leqq\n", "\\frac{\\eps}{2C} C \\leqq \n", "\\frac{\\eps}{2}.\n", "$$\n", "\n", "$f$ は有界な函数になるので, ある正の定数 $M$ で $|f(x)|\\leqq M$ ($x\\in\\R$) を満たすものが存在する. (S3)より, \n", "ある $\\tau>0$ が存在して, $0\\delta}|\\rho_t(x)|\\,dx<\\frac{\\eps}{4M}$ となる. このとき, $|f(x-y)-f(x)|\\leqq 2M$ となるので, \n", "\n", "$$\n", "J \\leqq\n", "2M \\int_{|y|>\\delta}|\\rho_t(y)|\\,dy <\n", "2M\\frac{\\eps}{4M} = \\frac{\\eps}{2}.\n", "$$\n", "\n", "したがって, そのとき, \n", "\n", "$$\n", "|f*\\rho_t(x)-f(x)| = I + J < \\frac{\\eps}{2}+\\frac{\\eps}{2} = \\eps.\n", "$$\n", "\n", "これで $t\\searrow 0$ のとき, $f*\\rho_t$ が $f$ に一様収束することがわかった. $\\QED$ " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**問題:** $p\\geqq 1$ であるとし, $f$ は $L^p$ 函数であるとする. このとき, $t\\searrow 0$ のとき $\\|f*\\rho_t - f\\|_p\\to 0$ となることを示せ.\n", "\n", "**解答例:** $t\\searrow0$ で $(\\|f*\\rho_t-f\\|_p)^p\\to 0$ となることを示せばよい. $p'$ を $\\ds \\frac{1}{p}+\\frac{1}{p'}=1$ という条件で定める. Hölderの不等式より, \n", "\n", "$$\n", "\\begin{aligned}\n", "\\left|f*\\rho_t(x)-f(x)\\right|^p &=\n", "\\left|\\int_\\R (f(x-y)-f(y))\\rho_t(y)\\,dy\\right|^p \\leqq\n", "\\left(\\int_\\R |f(x-y)-f(y)||\\rho_t(y)|\\,dy\\right)^p \n", "\\\\ &=\n", "\\left(\\int_\\R |f(x-y)-f(y)||\\rho_t(y)|^{1/p}\\cdot|\\rho_t(y)|^{1/p'}\\,dy\\right)^p \n", "\\\\ &\\leqq\n", "\\int_\\R |f(x-y)-f(y)|^p |\\rho_t(y)|\\,dy\\;\n", "\\left(\\int_\\R |\\rho_t(y)|\\,dy\\right)^{p/p'}\n", "\\\\ &\\leqq\n", "C^{p/p'} \\int_\\R |f(x-y)-f(y)|^p|\\rho_t(y)|\\,dy.\n", "\\end{aligned}\n", "$$\n", "\n", "これを $x$ で積分すると,\n", "\n", "$$\n", "(\\|f*\\rho_t-f\\|_p)^p \\leqq\n", "C^{p/p'} \\int_\\R\\left(\\int_\\R |f(x-y)-f(x)|^p\\,dx\\right)|\\rho_t(y)|\\,dy =\n", "I+J.\n", "$$\n", "\n", "ここで, $I,J$ はそれぞれ $|y|>\\delta$ と $|y|\\leqq \\delta$ における積分である. $y\\to 0$ のとき $\\|f(\\cdot-y)-f\\|_p\\to 0$ となることより, $C$ を条件(S2)の $C$ であるとすると, ある $\\delta>0$ が存在して, $|y|\\leqq\\delta$ のとき $\\ds\\int_\\R|f(x-y)-f(x)|\\,dx\\leqq\\frac{\\eps}{2C}$ となり,\n", "\n", "$$\n", "J = \\int_{-\\delta}^\\delta\\left(\\int_\\R |f(x-y)-f(x)|^p\\,dx\\right)|\\rho_t(y)|\\,dy \\leqq\n", "\\frac{\\eps}{2C}C\\leqq\\frac{\\eps}{2}.\n", "$$\n", "\n", "$M=\\|f\\|_p$ とおくと, $\\|f(\\cdot-y)-f\\|_p\\leqq 2M$ となる. (S3)より, \n", "ある $\\tau>0$ が存在して, $0\\delta}|\\rho_t(y)\\,dy<\\frac{\\eps}{2(2M)^p}$ となるので,\n", "\n", "$$\n", "I = \\int_{|y|>\\delta}\\left(\\int_\\R |f(x-y)-f(x)|^p\\,dx\\right)|\\rho_t(y)|\\,dy \\leqq\n", "(2M)^p \\frac{\\eps}{2(2M)^p} = \\frac{\\eps}{2}.\n", "$$\n", "\n", "このとき, \n", "\n", "$$\n", "(\\|f*\\rho_t-f\\|_p)^p \\leqq I+J\\leqq\\frac{\\eps}{2}+\\frac{\\eps}{2}=\\eps.\n", "$$\n", "\n", "これで, $t\\searrow0$ のとき $\\|f*\\rho_t-f\\|_p\\to0$ となることが示された. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 総和核とFourier展開の関係\n", "\n", "仮に総和核 $\\rho_t(x)$ が\n", "\n", "$$\n", "\\rho_t(x) = \\int_\\R W_t(p) e^{2\\pi ipx}\\,dp\n", "$$\n", "\n", "と重み $W_t(p)$ によって表示されていたとする. このとき, 重み $W_t(p)$ によって制限された函数 $f(x)$ のFourier展開 $\\ds\\int_\\R W(p) \\hat{f}(p)e^{2\\pi ipx}\\,dp$ は次のように表わされる:\n", "\n", "$$\n", "\\begin{aligned}\n", "\\int_\\R \\hat{f}(p) e^{2\\pi ipx} W_t(p)\\,dp &=\n", "\\int_\\R \\left(\\int_\\R f(y)e^{-2\\pi ipy}\\,dy\\right)\\,e^{2\\pi ipx} W_t(p)\\,dp \n", "\\\\ &=\n", "\\int_\\R f(y)\\left(\\int_\\R W_t(p) e^{2\\pi ip(x-y)}\\,dp\\right)\\,dy \n", "\\\\ &=\n", "\\int_\\R f(y)\\rho_t(x+y)\\,dy =\n", "f*\\rho_t(x)\n", "\\end{aligned}\n", "$$\n", "\n", "このように, 「重み $W_t(p)$ によってFourier展開された総和核と函数 $f$ のたたみ込み積」は「重み $W_t(p)$ で制限された函数 $f$ のFourier展開」になっている." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 総和核の例" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Dirichlet核は総和核ではない\n", "\n", "Dirichlet核 $D_N(x)$ は区間 $[-N,N]$ 上で $1$ でそれ以外の場所で $0$ になるような重み函数によるFourier展開で定義されていた:\n", "\n", "$$\n", "D_N(x) = \\int_{-N}^N e^{2\\pi ipx}\\,dp = \\left[\\frac{e^{2\\pi ipx}}{2\\pi ix}\\right]_{p=-N}^{p=N} =\n", "\\frac{e^{e\\pi iNx}-e^{-2\\pi iNx}}{2\\pi ix} = \\frac{\\sin(2\\pi Nx)}{\\pi x}.\n", "$$\n", "\n", "$N=1/t$ とおく. Dirichlet核 $\\ds D_{1/t}(x) = \\frac{\\sin(2\\pi x/t)}{\\pi x}$ はDirichlet積分の公式より, 任意の $\\delta>0$ について, \n", "\n", "$$\n", "\\int_{-\\infty}^\\infty D_{1/t}(x)\\,dx = 1, \\qquad\n", "\\int_\\delta^\\infty D_{1/t}(x)\\,dx\\to 0, \\quad\n", "\\int_{-\\infty}^{-\\delta} D_{1/t}(x)\\,dx \\to 0\n", "\\quad (t\\searrow0)\n", "$$\n", "\n", "を満たしているが, これらは条件収束する広義積分であり,\n", "\n", "$$\n", "\\int_\\R |D_{1/t}(x)|\\,dx = \\infty\n", "$$\n", "\n", "となっているので, このノートの意味での総和核ではない. Dirichlet核は足し上げる $p$ の範囲を区間 $[-N,N]$ に単純に制限するという素朴で分かり易い考え方に基いて得られるが, 可積分函数にならない. このことがDirichlet核を用いたFourier解析を難しくしていると考えられる. 足し上げる $p$ の範囲を単純に制限するのではなく, 適当な重みを付けて制限するという一般化を考えると, 様々な総和核が得られる." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Fejér核\n", "\n", "重み函数 $\\Delta_N(p)$ を\n", "\n", "$$\n", "\\Delta_N(p) = \\max\\left\\{1-\\frac{|p|}{N}, 0\\right\\}\n", "$$\n", "\n", "と定め, $N>0$ に対して, **Fejér核** $F_N(x)$ を次のように定める:\n", "\n", "$$\n", "\\begin{aligned}\n", "F_N(x) &= \n", "\\int_\\R \\Delta_N(p)e^{2\\pi ipx}\\,dp =\n", "\\int_{-N}^N \\left(1-\\frac{|p|}{N}\\right)e^{2\\pi ipx}\\,dp \n", "\\\\ &=\n", "2\\int_0^N \\left(1-\\frac{p}{N}\\right)\\cos(2\\pi px)\\,dp =\n", "2N\\int_0^1 \\left(1-t\\right)\\cos(2\\pi Ntx)\\,dt\n", "\\\\ &=\n", "2N\\left[(1-t)\\frac{\\sin(2\\pi Ntx)}{2\\pi Nx}\\right]_{t=0}^{t=1} +\n", "2N\\int_0^1 \\frac{\\sin(2\\pi Ntx)}{2\\pi Nx}\\,dt\n", "\\\\ &=\n", "2N\\left[ -\\frac{\\cos(2\\pi Ntx)}{(2\\pi Nx)^2}\\right]_{t=0}^{t=1} =\n", "\\frac{1-\\cos(2\\pi Nx)}{2N(\\pi x)^2} =\n", "\\frac{1}{N}\\left(\\frac{\\sin(\\pi Nx)}{\\pi x}\\right)^2.\n", "\\end{aligned}\n", "$$\n", "\n", "5つ目の等号で部分積分を行い, 最後の等号で倍角の公式 $\\cos(2X)=1-2\\sin^2 X$ を使った. 特にFejér核は正値函数である. そして, Dirichlet積分の公式より,\n", "\n", "$$\n", "\\begin{aligned}\n", "\\int_0^\\infty\\left(\\frac{\\sin x}{x}\\right)^2\\,dx &=\n", "\\int_0^\\infty\\frac{1-\\cos 2x}{2x^2}\\,dx \n", "\\\\ &=\n", "\\left[\\frac{-1}{2x}(1-\\cos 2x)\\right]_0^\\infty -\n", "\\int_0^\\infty\\frac{-1}{2x}(2\\sin 2x)\\,dx \n", "\\\\ &=\n", "\\int_0^\\infty \\frac{\\sin 2x}{x}\\,dx =\n", "\\int_0^\\infty \\frac{\\sin t}{t}\\,dt =\n", "\\frac{\\pi}{2}.\n", "\\end{aligned}\n", "$$\n", "\n", "(最後から2番目の等号で $x=t/2$ とおいた)を使えば, $\\ds\\int_\\R F_N(x)\\,dx = 1$ であることも容易に確認できる. \n", "\n", "Fejér核 $F_{1/t}(x)$ は総和核である." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "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", "-10\n", "\n", "\n", "-5\n", "\n", "\n", "0\n", "\n", "\n", "5\n", "\n", "\n", "10\n", "\n", "\n", "0.00\n", "\n", "\n", "0.25\n", "\n", "\n", "0.50\n", "\n", "\n", "0.75\n", "\n", "\n", "1.00\n", "\n", "\n", "N=1\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "-10\n", "\n", "\n", "-5\n", "\n", "\n", "0\n", "\n", "\n", "5\n", "\n", "\n", "10\n", "\n", "\n", "0.00\n", "\n", "\n", "0.25\n", "\n", "\n", "0.50\n", "\n", "\n", "0.75\n", "\n", "\n", "1.00\n", "\n", "\n", "N=3\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "-10\n", "\n", "\n", "-5\n", "\n", "\n", "0\n", "\n", "\n", "5\n", "\n", "\n", "10\n", "\n", "\n", "0.00\n", "\n", "\n", "0.25\n", "\n", "\n", "0.50\n", "\n", "\n", "0.75\n", "\n", "\n", "1.00\n", "\n", "\n", "N=8\n", "\n", "\n", "\n" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Δ_N(p) のグラフ\n", "#\n", "# N を大きくすると足し上げる p の範囲が拡大する.\n", "\n", "Δ(N,p) = max(1-abs(p)/N, zero(p))\n", "PP = []\n", "for N in [1,3,8]\n", " p = -10:0.01:10\n", " P = plot(p, Δ.(N,p), title=\"N=$N\", titlefontsize=10)\n", " push!(PP, P)\n", "end\n", "plot(PP[1:3]..., size=(750, 150), legend=false, layout=@layout([a b c]))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "(最後から2番目の等号で $x=2t$ とおいた)を使えば, $\\ds\\int_\\R F_N(x)\\,dx = 1$ であることも容易に確認できる. \n", "\n", "Fejér核 $F_{1/t}(x)$ は総和核である." ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "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", "-5.0\n", "\n", "\n", "-2.5\n", "\n", "\n", "0.0\n", "\n", "\n", "2.5\n", "\n", "\n", "5.0\n", "\n", "\n", "0.00\n", "\n", "\n", "0.25\n", "\n", "\n", "0.50\n", "\n", "\n", "0.75\n", "\n", "\n", "1.00\n", "\n", "\n", "N=1\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "-5.0\n", "\n", "\n", "-2.5\n", "\n", "\n", "0.0\n", "\n", "\n", "2.5\n", "\n", "\n", "5.0\n", "\n", "\n", "0.0\n", "\n", "\n", "0.5\n", "\n", "\n", "1.0\n", "\n", "\n", "1.5\n", "\n", "\n", "2.0\n", "\n", "\n", "N=2\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "-5.0\n", "\n", "\n", "-2.5\n", "\n", "\n", "0.0\n", "\n", "\n", "2.5\n", "\n", "\n", "5.0\n", "\n", "\n", "0\n", "\n", "\n", "1\n", "\n", "\n", "2\n", "\n", "\n", "3\n", "\n", "\n", "N=3\n", "\n", "\n", "\n" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Fejér核のグラフ\n", "#\n", "# Dirichlet核よりも x=0 から離れた部分の値が急速に 0 に収束することがわかる.\n", "\n", "F(N,x) = iszero(x) ? N : (sin(π*N*x)/(π*x))^2/N\n", "PP = []\n", "for N in [1,2,3,4,5,6]\n", " x = -6:0.01:6\n", " P = plot(x, F.(N,x), title=\"N=$N\", titlefontsize=10)\n", " push!(PP, P)\n", "end\n", "plot(PP[1:3]..., size=(750, 150), legend=false, layout=@layout([a b c]))" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "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", "-5.0\n", "\n", "\n", "-2.5\n", "\n", "\n", "0.0\n", "\n", "\n", "2.5\n", "\n", "\n", "5.0\n", "\n", "\n", "0\n", "\n", "\n", "1\n", "\n", "\n", "2\n", "\n", "\n", "3\n", "\n", "\n", "4\n", "\n", "\n", "N=4\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "-5.0\n", "\n", "\n", "-2.5\n", "\n", "\n", "0.0\n", "\n", "\n", "2.5\n", "\n", "\n", "5.0\n", "\n", "\n", "0\n", "\n", "\n", "1\n", "\n", "\n", "2\n", "\n", "\n", "3\n", "\n", "\n", "4\n", "\n", "\n", "5\n", "\n", "\n", "N=5\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "-5.0\n", "\n", "\n", "-2.5\n", "\n", "\n", "0.0\n", "\n", "\n", "2.5\n", "\n", "\n", "5.0\n", "\n", "\n", "0\n", "\n", "\n", "1\n", "\n", "\n", "2\n", "\n", "\n", "3\n", "\n", "\n", "4\n", "\n", "\n", "5\n", "\n", "\n", "6\n", "\n", "\n", "N=6\n", "\n", "\n", "\n" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "plot(PP[4:6]..., size=(750, 150), legend=false, layout=@layout([a b c]))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Poisson核\n", "\n", "$t>0$ に対して, Poisson核 $P_t(x)$ を次のように定める:\n", "\n", "$$\n", "P_t(x) = \\frac{1}{\\pi}\\frac{t}{t^2+x^2} = \\frac{1}{\\pi t}\\frac{1}{1+(x/t)^2}.\n", "$$\n", "\n", "これも総和核であり, 次のようにFourier展開される:\n", "\n", "$$\n", "P_t(x) = \\int_\\R \\hat{P}_t(p)e^{2\\pi ipx}\\,dp, \\qquad\n", "\\hat{P}_t(p) = e^{-2\\pi t|p|}.\n", "$$\n", "\n", "この公式を証明するためには, \n", "\n", "$$\n", "\\int_0^\\infty e^{-2\\pi tp}\\cos(2\\pi px)\\,dp = \\frac{1}{2\\pi}\\frac{t}{t^2+x^2}\n", "$$\n", "\n", "を示せばよい. この公式は次の結果の実部に等しい:\n", "\n", "$$\n", "\\int_0^\\infty e^{-2\\pi tp} e^{2\\pi ipx}\\,dp =\n", "\\int_0^\\infty e^{-2\\pi(t-ix)p}\\,dp =\n", "\\left[\\frac{e^{-2\\pi(t-ix)p}}{-2\\pi(t-ix)}\\right]_{p=0}^{p=\\infty} = \\frac{1}{2\\pi(t-ix)}.\n", "$$\n", "\n", "**注意:** Poisson核はCauchy分布の確率密度函数に等しい. 重み函数 $\\hat{P}_t(p)$ はCauchy分布の特性函数とも呼ばれる. 確率論では確率分布の特性函数の形でFourier解析が利用されている. $\\QED$" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "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", "-10\n", "\n", "\n", "-5\n", "\n", "\n", "0\n", "\n", "\n", "5\n", "\n", "\n", "10\n", "\n", "\n", "0.00\n", "\n", "\n", "0.25\n", "\n", "\n", "0.50\n", "\n", "\n", "0.75\n", "\n", "\n", "1.00\n", "\n", "\n", "t=0.5\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "-10\n", "\n", "\n", "-5\n", "\n", "\n", "0\n", "\n", "\n", "5\n", "\n", "\n", "10\n", "\n", "\n", "0.00\n", "\n", "\n", "0.25\n", "\n", "\n", "0.50\n", "\n", "\n", "0.75\n", "\n", "\n", "1.00\n", "\n", "\n", "t=0.1\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "-10\n", "\n", "\n", "-5\n", "\n", "\n", "0\n", "\n", "\n", "5\n", "\n", "\n", "10\n", "\n", "\n", "0.2\n", "\n", "\n", "0.4\n", "\n", "\n", "0.6\n", "\n", "\n", "0.8\n", "\n", "\n", "1.0\n", "\n", "\n", "t=0.05\n", "\n", "\n", "\n" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Phat_t(p) のグラフ\n", "#\n", "# t > 0 を小さくすると足し上げる p の範囲が拡大する.\n", "\n", "Phat(t,p) = exp(-2π*t*abs(p))\n", "PP = []\n", "for t in [0.5, 0.1, 0.05]\n", " p = -10:0.01:10\n", " P = plot(p, Phat.(t,p), title=\"t=$t\", titlefontsize=10)\n", " push!(PP, P)\n", "end\n", "plot(PP[1:3]..., size=(750, 150), legend=false, layout=@layout([a b c]))" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "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", "-1.0\n", "\n", "\n", "-0.5\n", "\n", "\n", "0.0\n", "\n", "\n", "0.5\n", "\n", "\n", "1.0\n", "\n", "\n", "0.2\n", "\n", "\n", "0.3\n", "\n", "\n", "0.4\n", "\n", "\n", "0.5\n", "\n", "\n", "0.6\n", "\n", "\n", "t=0.5\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "-1.0\n", "\n", "\n", "-0.5\n", "\n", "\n", "0.0\n", "\n", "\n", "0.5\n", "\n", "\n", "1.0\n", "\n", "\n", "0\n", "\n", "\n", "1\n", "\n", "\n", "2\n", "\n", "\n", "3\n", "\n", "\n", "t=0.1\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "-1.0\n", "\n", "\n", "-0.5\n", "\n", "\n", "0.0\n", "\n", "\n", "0.5\n", "\n", "\n", "1.0\n", "\n", "\n", "0\n", "\n", "\n", "1\n", "\n", "\n", "2\n", "\n", "\n", "3\n", "\n", "\n", "4\n", "\n", "\n", "5\n", "\n", "\n", "6\n", "\n", "\n", "t=0.05\n", "\n", "\n", "\n" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Poisson核のグラフ\n", "#\n", "# t > 0 を小さくすると x 軸上での広がりの範囲が狭くなる.\n", "\n", "Poisson(t,x) = t/(t^2+x^2)/π\n", "PP = []\n", "for t in [0.5, 0.1, 0.05]\n", " x = -1:0.001:1\n", " P = plot(x, Poisson.(t,x), title=\"t=$t\", titlefontsize=10)\n", " push!(PP, P)\n", "end\n", "plot(PP[1:3]..., size=(750, 150), legend=false, layout=@layout([a b c]))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Gauss核\n", "\n", "**Gauss核** $G_t(x)$ を次のように定める:\n", "\n", "$$\n", "G_t(x) = \\frac{1}{\\sqrt{2\\pi t}}e^{-x^2/(2t)}\n", "$$\n", "\n", "これは総和核であり, 次のようにFourier展開される:\n", "\n", "$$\n", "G_t(x) = \\int_\\R \\hat{G}_t(p)\\,e^{2\\pi ipx}\\,dp, \\qquad\n", "\\hat{G}_t(p) = e^{-t (2\\pi p)^2/2} = e^{-2t\\pi^2 p^2}\n", "$$\n", "\n", "**注意:** Gauss核は期待値0の分散 $t$ の正規分布の確率密度函数に等しい. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**問題:** Gauss核 $u = u(t,x) = G_t(x)$ が熱方程式 $\\ds u_t = \\frac{1}{2}u_{xx}$ の解になっていることを示せ.\n", "\n", "**解答例:** $u$ を $x$ で2回偏微分すると,\n", "\n", "$$\n", "u_x = -\\frac{x}{t}, \\qquad\n", "u_{xx} = \\left(-\\frac{1}{t} + \\frac{x^2}{t^2}\\right)u.\n", "$$\n", "\n", "$\\ds\\frac{\\d}{\\d t}t^{-1/2} = -\\frac{1}{2t}t^{-1/2}$ などを使うと, \n", "\n", "$$\n", "u_t = \\left(-\\frac{1}{2t} + \\frac{x^2}{2t^2}\\right)u.\n", "$$\n", "\n", "以上を比較すれば $\\ds u_t = \\frac{1}{2}u_{xx}$ が得られる. $\\QED$\n", "\n", "**注意:** $t\\searrow 0$ のとき $G_t(x)\\to\\delta(x)$ なので, Gauss核は熱方程式の基本解になっている. $\\QED$" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$$e^{- 2 \\pi^{2} p^{2} t}$$" ], "text/plain": [ " 2 2 \n", " -2*pi *p *t\n", "e " ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x = symbols(\"x\", real=true)\n", "p = symbols(\"p\", real=true)\n", "t = symbols(\"t\", positive=true)\n", "W(t,p) = simplify(integrate(exp(-x^2/(2t))*exp(-2*Sym(π)*im*p*x), (x,-oo,oo)))/sqrt(2*Sym(π)*t)\n", "W(t,p)" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$$\\frac{\\sqrt{2} e^{- \\frac{x^{2}}{2 t}}}{2 \\sqrt{\\pi} \\sqrt{t}}$$" ], "text/plain": [ " 2 \n", " -x \n", " ---- \n", " ___ 2*t \n", " \\/ 2 *e \n", "--------------\n", " ____ ___\n", "2*\\/ pi *\\/ t " ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "G(t,x) = simplify(integrate(W(t,p)*exp(2*Sym(π)*im*p*x), (p,-oo,oo)))\n", "G(t,x)" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$$1$$" ], "text/plain": [ "1" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "integrate(G(t,x), (x,-oo,oo))" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "\\begin{bmatrix}\\frac{\\sqrt{2} e^{- \\frac{x^{2}}{2 t}}}{4 \\sqrt{\\pi} t^{\\frac{5}{2}}} \\left(- t + x^{2}\\right)\\\\\\frac{\\sqrt{2} e^{- \\frac{x^{2}}{2 t}}}{4 \\sqrt{\\pi} t^{\\frac{5}{2}}} \\left(- t + x^{2}\\right)\\end{bmatrix}" ], "text/plain": [ "2-element Array{SymPy.Sym,1}:\n", " sqrt(2)*(-t + x^2)*exp(-x^2/(2*t))/(4*sqrt(pi)*t^(5/2))\n", " sqrt(2)*(-t + x^2)*exp(-x^2/(2*t))/(4*sqrt(pi)*t^(5/2))" ] }, "execution_count": 13, "metadata": {}, "output_type": "execute_result" } ], "source": [ "[\n", " factor(diff(G(t,x), x, x))/2\n", " factor(diff(G(t,x), t))\n", "]" ] }, { "cell_type": "code", "execution_count": 14, "metadata": {}, "outputs": [ { "data": { "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", "-10\n", "\n", "\n", "-5\n", "\n", "\n", "0\n", "\n", "\n", "5\n", "\n", "\n", "10\n", "\n", "\n", "0.00\n", "\n", "\n", "0.25\n", "\n", "\n", "0.50\n", "\n", "\n", "0.75\n", "\n", "\n", "1.00\n", "\n", "\n", "t=0.1\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "-10\n", "\n", "\n", "-5\n", "\n", "\n", "0\n", "\n", "\n", "5\n", "\n", "\n", "10\n", "\n", "\n", "0.00\n", "\n", "\n", "0.25\n", "\n", "\n", "0.50\n", "\n", "\n", "0.75\n", "\n", "\n", "1.00\n", "\n", "\n", "t=0.01\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "-10\n", "\n", "\n", "-5\n", "\n", "\n", "0\n", "\n", "\n", "5\n", "\n", "\n", "10\n", "\n", "\n", "0.00\n", "\n", "\n", "0.25\n", "\n", "\n", "0.50\n", "\n", "\n", "0.75\n", "\n", "\n", "1.00\n", "\n", "\n", "t=0.004\n", "\n", "\n", "\n" ] }, "execution_count": 14, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Ghat_t(p) のグラフ\n", "#\n", "# t > 0 を小さくすると足し上げる p の範囲が拡大する.\n", "\n", "Ghat(t,p) = exp(-2t*π^2*p^2)\n", "PP = []\n", "for t in [0.1, 0.01, 0.004]\n", " p = -10:0.01:10\n", " P = plot(p, Ghat.(t,p), title=\"t=$t\", titlefontsize=10)\n", " push!(PP, P)\n", "end\n", "plot(PP[1:3]..., size=(750, 150), legend=false, layout=@layout([a b c]))" ] }, { "cell_type": "code", "execution_count": 15, "metadata": {}, "outputs": [ { "data": { "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", "-1.0\n", "\n", "\n", "-0.5\n", "\n", "\n", "0.0\n", "\n", "\n", "0.5\n", "\n", "\n", "1.0\n", "\n", "\n", "0.0\n", "\n", "\n", "0.2\n", "\n", "\n", "0.4\n", "\n", "\n", "0.6\n", "\n", "\n", "0.8\n", "\n", "\n", "1.0\n", "\n", "\n", "1.2\n", "\n", "\n", "t=0.1\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "-1.0\n", "\n", "\n", "-0.5\n", "\n", "\n", "0.0\n", "\n", "\n", "0.5\n", "\n", "\n", "1.0\n", "\n", "\n", "0\n", "\n", "\n", "1\n", "\n", "\n", "2\n", "\n", "\n", "3\n", "\n", "\n", "4\n", "\n", "\n", "t=0.01\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "-1.0\n", "\n", "\n", "-0.5\n", "\n", "\n", "0.0\n", "\n", "\n", "0.5\n", "\n", "\n", "1.0\n", "\n", "\n", "0\n", "\n", "\n", "1\n", "\n", "\n", "2\n", "\n", "\n", "3\n", "\n", "\n", "4\n", "\n", "\n", "5\n", "\n", "\n", "6\n", "\n", "\n", "t=0.004\n", "\n", "\n", "\n" ] }, "execution_count": 15, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Gauss核のグラフ\n", "#\n", "# t > 0 を小さくすると x 軸上での広がりの範囲が狭くなる.\n", "\n", "G(t,x) = exp(-x^2/(2t))/√(2π*t)\n", "PP = []\n", "for t in [0.1, 0.01, 0.004]\n", " x = -1:0.001:1\n", " P = plot(x, G.(t,x), title=\"t=$t\", titlefontsize=10)\n", " push!(PP, P)\n", "end\n", "plot(PP[1:3]..., size=(750, 150), legend=false, layout=@layout([a b c]))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Fourier級数の収束\n", "\n", "Fourier変換の逆変換の収束の議論とほぼ同じ議論を以下では行う.\n", "\n", "以下の内容を超えるFourier級数論については, 猪狩惺著『実解析入門』岩波書店(1996)の第8.5節以降などを参照せよ. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Fourier級数の定義\n", "\n", "$f(x)$ は周期 $1$ を持つ $\\R$ 上の函数であり($f(x+1)=f(x)$), $\\ds\\int_0^1|f(x)|\\,dx<\\infty$ を満たしていると仮定する. このとき, 整数 $k\\in\\Z$ に対して, $f(x)$ の**Fourier係数** $a_k(f)$ を\n", "\n", "$$\n", "a_k(f) = \\int_0^1 f(x)e^{-2\\pi i kx}\\,dx\n", "$$\n", "\n", "と定める. そして, \n", "\n", "$$\n", "\\sum_{k\\in\\Z} a_k(f) e^{2\\pi ikx}\n", "$$\n", "\n", "を $f(x)$ の**Fourier級数展開**と呼ぶ. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Fourier級数展開のDirichlet核\n", "\n", "**Dirichlet核** $D_N(x)$ を\n", "\n", "$$\n", "D_N(x) = \\sum_{k=-N}^N e^{2\\pi ikx} = e^{-2\\pi iNx}\\frac{e^{2\\pi i(2N+1)x}-1}{e^{2\\pi i x}-1} =\n", "\\frac{\\sin(\\pi(2N+1)x)}{\\sin(\\pi x)}\n", "$$\n", "\n", "と定める. ただし, $x\\in\\Z$ のときには $D_N(x)=2N+1$ と定めておく. $D_N(x)$ は有界な偶函数で周期 $1$ を持つ.\n", "\n", "このとき, \n", "\n", "$$\n", "\\begin{aligned}\n", "\\sum_{k=-N}^N a_k(f)e^{2\\pi ikx} &=\n", "\\sum_{k=-N}^N \\left(\\int_0^1 f(y)e^{2\\pi i ky}\\,dy\\right)e^{2\\pi ikx} =\n", "\\int_0^1 f(y)\\left(\\sum_{k=-N}^N e^{2\\pi i k(x-y)}\\,dx\\right)\\,dy \n", "\\\\ &=\n", "\\int_0^1 f(y)D_N(x-y)\\,dy =\n", "\\int_{-1/2}^{1/2} f(x+y)D_N(y)\\,dy.\n", "\\end{aligned}\n", "$$\n", "\n", "最後の等号で $y$ を $x+y$ で置換し, $D_N(-y)=D_N(y)$ と $f(x+y)D_N(y)$ が $y$ について周期 $1$ を持つ函数になることを用いた.\n", "\n", "$$\n", "\\int_0^1 D_N(y)\\,dy = \\sum_{k=-N}^N\\int_0^1 e^{2\\pi iky} \\,dy = \\int_0^1 1 \\,dy = 1.\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**問題:** Fourier級数のDirichlet核のグラフを描け. $\\QED$\n", "\n", "**解説:** 上の $D_N(x)$ は $D_N(x+1)=D_N(x)$ を満たしているので, $-1/2\\leqq x\\leqq 1/2$ でグラフを描けば十分である. $D_N(x)$ のグラフは $N$ 個の山を持ち, 振動が細かくなり, $N$ が大きくなると, $x=0$ の近くでは(より正確には整数の近くの $x$ においては) $D_N(x)$ の値が大きくなり, 他での値は小さくなる.\n", "\n", "次のセルを見よ. $\\QED$" ] }, { "cell_type": "code", "execution_count": 16, "metadata": {}, "outputs": [ { "data": { "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", "-0.4\n", "\n", "\n", "-0.2\n", "\n", "\n", "0.0\n", "\n", "\n", "0.2\n", "\n", "\n", "0.4\n", "\n", "\n", "-1\n", "\n", "\n", "0\n", "\n", "\n", "1\n", "\n", "\n", "2\n", "\n", "\n", "3\n", "\n", "\n", "N=1\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "-0.4\n", "\n", "\n", "-0.2\n", "\n", "\n", "0.0\n", "\n", "\n", "0.2\n", "\n", "\n", "0.4\n", "\n", "\n", "-1\n", "\n", "\n", "0\n", "\n", "\n", "1\n", "\n", "\n", "2\n", "\n", "\n", "3\n", "\n", "\n", "4\n", "\n", "\n", "5\n", "\n", "\n", "N=2\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "-0.4\n", "\n", "\n", "-0.2\n", "\n", "\n", "0.0\n", "\n", "\n", "0.2\n", "\n", "\n", "0.4\n", "\n", "\n", "0\n", "\n", "\n", "2\n", "\n", "\n", "4\n", "\n", "\n", "6\n", "\n", "\n", "N=3\n", "\n", "\n", "\n" ] }, "execution_count": 16, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# フーリエ級数のディリクレ核 D_N(x) のグラフ\n", "\n", "D(N,x) = iszero(x) ? 2N+1 : sin(π*(2N+1)*x)/(sin(π*x))\n", "PP = []\n", "for N in [1:6; 10; 20; 30]\n", " x = -0.5:0.001:0.5\n", " P = plot(x, D.(N,x), title=\"N=$N\", titlefontsize=10)\n", " push!(PP, P)\n", "end\n", "plot(PP[1:3]..., size=(750, 150), legend=false, layout=@layout([a b c]))" ] }, { "cell_type": "code", "execution_count": 17, "metadata": {}, "outputs": [ { "data": { "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", "-0.4\n", "\n", "\n", "-0.2\n", "\n", "\n", "0.0\n", "\n", "\n", "0.2\n", "\n", "\n", "0.4\n", "\n", "\n", "0.0\n", "\n", "\n", "2.5\n", "\n", "\n", "5.0\n", "\n", "\n", "7.5\n", "\n", "\n", "N=4\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "-0.4\n", "\n", "\n", "-0.2\n", "\n", "\n", "0.0\n", "\n", "\n", "0.2\n", "\n", "\n", "0.4\n", "\n", "\n", "0\n", "\n", "\n", "3\n", "\n", "\n", "6\n", "\n", "\n", "9\n", "\n", "\n", "N=5\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "-0.4\n", "\n", "\n", "-0.2\n", "\n", "\n", "0.0\n", "\n", "\n", "0.2\n", "\n", "\n", "0.4\n", "\n", "\n", "-2\n", "\n", "\n", "0\n", "\n", "\n", "2\n", "\n", "\n", "4\n", "\n", "\n", "6\n", "\n", "\n", "8\n", "\n", "\n", "10\n", "\n", "\n", "12\n", "\n", "\n", "N=6\n", "\n", "\n", "\n" ] }, "execution_count": 17, "metadata": {}, "output_type": "execute_result" } ], "source": [ "plot(PP[4:6]..., size=(750, 150), legend=false, layout=@layout([a b c]))" ] }, { "cell_type": "code", "execution_count": 18, "metadata": {}, "outputs": [ { "data": { "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", "-0.4\n", "\n", "\n", "-0.2\n", "\n", "\n", "0.0\n", "\n", "\n", "0.2\n", "\n", "\n", "0.4\n", "\n", "\n", "-5\n", "\n", "\n", "0\n", "\n", "\n", "5\n", "\n", "\n", "10\n", "\n", "\n", "15\n", "\n", "\n", "20\n", "\n", "\n", "N=10\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "-0.4\n", "\n", "\n", "-0.2\n", "\n", "\n", "0.0\n", "\n", "\n", "0.2\n", "\n", "\n", "0.4\n", "\n", "\n", "-10\n", "\n", "\n", "0\n", "\n", "\n", "10\n", "\n", "\n", "20\n", "\n", "\n", "30\n", "\n", "\n", "40\n", "\n", "\n", "N=20\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "-0.4\n", "\n", "\n", "-0.2\n", "\n", "\n", "0.0\n", "\n", "\n", "0.2\n", "\n", "\n", "0.4\n", "\n", "\n", "0\n", "\n", "\n", "20\n", "\n", "\n", "40\n", "\n", "\n", "60\n", "\n", "\n", "N=30\n", "\n", "\n", "\n" ] }, "execution_count": 18, "metadata": {}, "output_type": "execute_result" } ], "source": [ "plot(PP[7:9]..., size=(750, 150), legend=false, layout=@layout([a b c]))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**問題:** Fourier級数のDirichlet核 $\\ds D_N(x)=\\frac{\\sin(\\pi(2N+1)x)}{\\sin(\\pi x)}$ は上の方で示したように, $\\int_0^1 D_N(x)\\,dx=1$ を満たしている. しかし, その絶対値 $|D_N(x)|$ の積分については,\n", "\n", "$$\n", "\\int_0^1 |D_N(x)|\\,dx \\to \\infty \\quad (N\\to\\infty)\n", "$$\n", "\n", "が成立していることを示せ.\n", "\n", "**解答例:** $|\\sin(\\pi x)| \\leqq \\pi |x|$ なので,\n", "\n", "$$\n", "\\int_0^1 |D_N(x)|\\,dx = 2\\int_0^{1/2} |D_N(x)|\\,dx \\geqq\n", "2\\int_0^{1/2} \\frac{|\\sin(\\pi(2N+1)x)|}{\\pi x}\\,dx.\n", "$$\n", "\n", "$x=t/(π(2N+1))$ と置換すると, \n", "\n", "$$\n", "\\begin{aligned}\n", "&\n", "2\\int_0^{1/2} \\frac{|\\sin(\\pi(2N+1)x)|}{\\pi x}\\,dx =\n", "\\frac{2}{\\pi}\\int_0^{\\pi(2N+1)/2} \\frac{|\\sin t|}{t}\\,dt =\n", "\\frac{2}{\\pi}\\sum_{k=1}^{2N+1}\\int_{(k-1)\\pi/2}^{k\\pi/2} \\frac{|\\sin t|}{t}\\,dt\n", "\\\\ &\\qquad\\geqq\n", "\\frac{2}{\\pi}\\sum_{k=1}^{2N+1}\\int_{(k-1)\\pi/2}^{k\\pi/2}\\frac{|\\sin t|}{k\\pi/2}\\,dt =\n", "\\left(\\frac{2}{\\pi}\\right)^2\\int_0^{\\pi/2}\\sin t\\,dt \\sum_{k=1}^{2N+1}\\frac{1}{k} =\n", "\\left(\\frac{2}{\\pi}\\right)^2\\sum_{k=1}^{2N+1}\\frac{1}{k}.\n", "\\end{aligned}\n", "$$\n", "\n", "そして, $\\ds\\sum_{k=1}^{2N+1}\\frac{1}{k}\\sim\\log(2N+1)$. 以上をまとめると,\n", "\n", "$$\n", "\\int_0^1 |D_N(x)|\\,dx \\geqq \\left(\\frac{2}{\\pi}\\right)^2\\sum_{k=1}^{2N+1}\\frac{1}{k} \\sim \\log(2N+1).\n", "$$\n", "\n", "これより, 左辺は $N\\to\\infty$ のとき $\\log N$ 以上のオーダーで無限大に発散することがわかる. $\\QED$\n", "\n", "**解説:** $N\\to \\infty$ のとき, $\\ds \\int_0^1 D_N(x)\\,dx=1$ の左辺の積分はそれぞれ $\\infty,-\\infty$ に発散する正と負の成分が互いにキャンセルすることによって有限の値が残るという計算になる. これが, Fourier級数の収束の理論がややこしくなる理由の1つであると考えられる. $\\QED$" ] }, { "cell_type": "code", "execution_count": 19, "metadata": {}, "outputs": [ { "data": { "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", "-0.4\n", "\n", "\n", "-0.2\n", "\n", "\n", "0.0\n", "\n", "\n", "0.2\n", "\n", "\n", "0.4\n", "\n", "\n", "0.0\n", "\n", "\n", "0.5\n", "\n", "\n", "1.0\n", "\n", "\n", "1.5\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "|sin(pi x)|\n", "\n", "\n", "\n", "pi |x|\n", "\n", "\n" ] }, "execution_count": 19, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# |sin πx| ≤ π|x| の確認\n", "\n", "f(x) = abs(sin(π*x))\n", "g(x) = π*abs(x)\n", "x = -1/2:0.002:1/2\n", "plot(size=(400, 250), legend=:top)\n", "plot!(x, f.(x), label=\"|sin(pi x)|\")\n", "plot!(x, g.(x), label=\"pi |x|\")" ] }, { "cell_type": "code", "execution_count": 20, "metadata": {}, "outputs": [ { "data": { "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", "10\n", "\n", "\n", "0.0 \n", "\n", "\n", "10\n", "\n", "\n", "0.5 \n", "\n", "\n", "10\n", "\n", "\n", "1.0 \n", "\n", "\n", "10\n", "\n", "\n", "1.5 \n", "\n", "\n", "10\n", "\n", "\n", "2.0 \n", "\n", "\n", "10\n", "\n", "\n", "2.5 \n", "\n", "\n", "1.5\n", "\n", "\n", "2.0\n", "\n", "\n", "2.5\n", "\n", "\n", "3.0\n", "\n", "\n", "3.5\n", "\n", "\n", "N\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "integal of |D_N(x)| from x=0 to 1\n", "\n", "\n", "\n", "(2/pi)^2*log(2N+1)+1\n", "\n", "\n" ] }, "execution_count": 20, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# |D_N(x)| の積分の漸近挙動の確認\n", "\n", "D(N,x) = iszero(x) ? π*(2N+1) : sin(π*(2N+1)*x)/sin(π*x)\n", "F(N) = quadgk(x-> abs(D(N,x)), 0, 1)[1]\n", "G(N) = (2/π)^2*log(2N+1)+1\n", "n = [1,2,3,6,10,20,30,60,100,200,300,600]\n", "plot(size=(400,250), legend=:topleft, xlabel=\"N\", xscale=:log)\n", "plot!(n, F.(n), label=\"integal of |D_N(x)| from x=0 to 1\", lw=2)\n", "plot!(n, G.(n), label=\"(2/pi)^2*log(2N+1)+1\", lw=2, ls=:dash)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Fourier級数に関するRiemannの局所性定理\n", "\n", "**Riemannの局所性定理:** $f$ は $\\R$ 上の周期 $1$ を持つ函数であり, $[0,1)$ 上で可積分であると仮定し, $0<\\delta<1/2$ であるとする. このとき, \n", "\n", "$$\n", "\\lim_{N\\to\\infty}\\int_{-1/2}^{-\\delta} f(x+y)D_N(y)\\,dy = 0, \\quad\n", "\\lim_{N\\to\\infty}\\int_\\delta^{1/2} f(x+y)D_N(y)\\,dy = 0.\n", "$$\n", "\n", "これより, $\\ds\\sum_{k=-N}^N a_n(f)e^{2\\pi ikx} = \\int_{-1/2}^{1/2} f(x+y) D_N(y)\\,dy$ が $N\\to\\infty$ で収束することと, $\\ds\\int_{-\\delta}^\\delta f(x+y) D_N(y)\\,dy$ が $N\\to\\infty$ で収束することは同値であり, 収束する場合には同じ値に収束することがわかる. 後者が収束するか否かは $x$ の近くでの函数 $f$ の様子だけで決まることに注意せよ. \n", "\n", "**証明:**\n", "$$\n", "\\begin{aligned}\n", "&\n", "\\int_{-1/2}^{-\\delta} f(x+y)D_N(y)\\,dy = \\int_{-1/2}^{-\\delta} \\frac{f(x+y)}{\\sin(\\pi y)}\\sin(\\pi(2N+1)y\\,dy,\n", "\\\\ &\n", "\\int_\\delta^{1/2} f(x+y)D_N(y)\\,dy = \\int_\\delta^{1/2} \\frac{f(x+y)}{\\sin(\\pi y)}\\sin(\\pi(2N+1)y\\,dy.\n", "\\end{aligned}\n", "$$\n", "\n", "であり, 区間 $(-1/2,-\\delta)$, $(\\delta,1/2)$ で $\\ds \\frac{f(x+y)}{\\sin(\\pi y)}$ は可積分なので, Riemann-Lebesgueの定理より, これらは $N\\to\\infty$ で $0$ に収束する. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Fourier級数の収束 (Diniの条件)\n", "\n", "**定理(Diniの条件):** $f$ は $\\R$ 上の周期 $1$ を持つ函数であり, 区間 $[0,1)$ 上で可積分であると仮定し, $x\\in \\R$ であるとする. さらに, $0<\\delta<1/2$ を満たすある実数 $\\delta$ が存在して, \n", "\n", "$$\n", "\\int_0^\\delta \\frac{|(f(x+y) + f(x-y) - 2f(x)|}{y}\\,dy <\\infty\n", "\\tag{$*$}\n", "$$\n", "\n", "が成立していると仮定する. この条件($*$)を**Diniの条件**と呼ぶ. このとき, \n", "\n", "$$\n", "\\lim_{N\\to\\infty}\\sum_{k=-N}^N a_n(f)e^{2\\pi ikx} = \\lim_{N\\to\\infty}\\int_{-1/2}^{1/2} f(x+y) D_N(y)\\,dy = f(x).\n", "$$\n", "\n", "**証明:** Fourier変換の場合と同様に計算すると, \n", "\n", "$$\n", "\\begin{aligned}\n", "\\sum_{k=-N}^N a_n(f)e^{2\\pi inx} - f(x) &=\n", "\\int_{-1/2}^{1/2} f(x+y) D_N(y)\\,dy - f(x)\\int_{-1/2}^{1/2}D_N(y)\\,dy\n", "\\\\ &=\n", "\\int_{-1/2}^{1/2} (f(x+y)-f(x)) D_N(y)\\, dy\n", "\\\\ &=\n", "\\int_0^{1/2} (f(x+y)-f(x)) D_N(y)\\, dy +\n", "\\int_{-1/2}^0 (f(x+y)-f(x)) D_N(y)\\, dy\n", "\\\\ &=\n", "\\int_0^{1/2} (f(x+y)-f(x)) D_N(y)\\, dy +\n", "\\int_0^{1/2} (f(x-y)-f(x)) D_N(y)\\, dy\n", "\\\\ &=\n", "\\int_0^{1/2} \\frac{f(x+y)+f(x-y)-2f(x)}{y} \\frac{y}{\\sin(\\pi y)} \\sin(\\pi(2N+1)y)\\,dy.\n", "\\end{aligned}\n", "$$\n", "\n", "Diniの条件より, Riemann-Lebesgueの定理を使用できるので, これは $N\\to\\infty$ で $0$ に収束することがわかる. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**例:** $f(x)$ は周期 $1$ を持つ $\\R$ 上の函数であり, $\\ds\\int_0^1|f(x)|\\,dx<\\infty$ を満たしていると仮定し, 実数 $x$ を任意に取る. $y\\searrow 0$ のとき $f(x+y), f(x-y)$ は収束していると仮定し, それぞれの収束先を $f(x+0), f(x-0)$ と書くことにする. さらに $y\\searrow 0$ で $\\ds\\frac{f(x+y)-f(x+0)}{y}$ と $\\ds\\frac{f(x-y)-f(x-0)}{y}$ が収束していると仮定する. 特に $f$ が $x$ で微分可能ならばそれらの条件が成立している. \n", "\n", "このとき, 十分小さな $\\delta>0$ を取ると, $\\ds\\frac{f(x+y)+f(x-y)-(f(x+0)+f(x-0))}{y}$ は $00$ の**Lipschitz条件を満たす**とは, ある $C>$ と $\\delta>0$ が存在して, $|x-x_0|<\\delta$ ならば $|f(x)-f(x_0)|\\leqq C|x-x_0|^\\alpha$ が成立することであると定める. $\\QED$\n", "\n", "$f(x)$ が $x=x_0$ でLipschitz条件を満たしているならば, $f(x)$ は $x=x_0$ で連続になる. \n", "\n", "函数 $f(x)$ が $x=x_0$ で連続でかつ $h\\searrow0$ における極限達\n", "\n", "$$\n", "\\frac{f(x_0+h)-f(x_0)}{h}\\to f'(x_0+0), \\qquad\n", "\\frac{f(x_0-h)-f(x_0)}{-h}\\to f'(x_0-0)\n", "$$\n", "\n", "を持つならば, $x=x_0$ において指数 $\\alpha=1$ のLipschitz条件を満たす. 特に, $f(x)$ が $x=x_0$ で微分可能ならば指数 $\\alpha=1$ のLipschitz条件を満たす.\n", "\n", "$f(x)$ は周期1を持つ $\\R$ 上の函数で $\\int_0^1|f(x)|\\,dx<\\infty$ を満たしており, $x=x_0$ で指数 $\\alpha>0$ のLipschitz条件を満たしていると仮定し, $\\ds a_n=\\int_0^1 f(x)\\,e^{-2\\pi inx}\\,dx$ とおく.\n", "\n", "このとき, ある $C>0$ と $\\delta > 0$ が存在して, $|x-x_0|<\\delta$ ならば $|f(x)-f(x_0)|\\leqq C|x-x_0|^\\alpha$ となるので, $0 0$ を取る. \n", "\n", "$\\ds M = \\sup_{a\\leqq y\\leqq b}|g(y)|$ とおく. $f(x)$ を周期 $1$ を持つ $C^1$ 級函数 $\\tilde{f}$ で近似することによって, $\\ds \\int_0^1 |f(x)-\\tilde{f}(x)|\\,dx < \\frac{\\eps}{2M}$ となるようにできる. このとき, \n", "\n", "$$\n", "\\left|\\int_a^b (f(x+y)-\\tilde{f}(x+y))g(y)e^{ipx}\\right| \\leqq\n", "M\\int_0^1|f(t)-\\tilde{f}(t)|\\,dt < \\frac{\\eps}{2}.\n", "$$\n", "\n", "$\\tilde{f}(x)$ は $C^1$ 級の周期函数なので有界函数になる. $\\ds K = \\sup_{x\\in\\R}|\\tilde{f}(x)|$ とおく. $\\ds\\frac{\\d}{\\d y}(\\tilde{f}(x+y)g(y))$ は連続函数でかつ $x$ について周期的なので $(x,y)\\in\\R\\times[a,b]$ において, その絶対値は最大値 $L$ を持つ.\n", "\n", "$\\tilde{f}(x+y)g(y)$ は $y$ に関して $C^1$ 級なので, 部分積分を行うと,\n", "\n", "$$\n", "\\int_a^b \\tilde{f}(x+y)g(y)e^{ipx}\\,dx =\n", "\\left[\\tilde{f}(x+y)g(y)\\frac{e^{ipx}}{ip}\\right]_{y=a}^{y=b} -\n", "\\int_a^b \\frac{\\d}{\\d y}(\\tilde{f}(x+y)g(y))\\frac{e^{ipx}}{ip}\\,dx\n", "$$\n", "\n", "なので, $\\ds |p|>\\frac{\\eps/2}{2KM+L(b-a)}$ とすると, \n", "\n", "$$\n", "\\left|\\int_a^b \\tilde{f}(x+y)g(y)e^{ipx}\\,dx\\right| \\leqq\n", "\\frac{2KM}{p} + \\frac{L(b-a)}{p} =\n", "\\frac{2KM+L(b-a)}{|p|} <\n", "\\frac{\\eps}{2}.\n", "$$\n", "\n", "そのとき, \n", "\n", "$$\n", "|J| \\leqq \n", "\\left|\\int_a^b (f(x+y)-\\tilde{f}(x+y))g(y)e^{ipx}\\right| +\n", "\\left|\\int_a^b \\tilde{f}(x+y)g(y)e^{ipx}\\,dx\\right| < \n", "\\frac{\\eps}{2} + \\frac{\\eps}{2} = \\eps.\n", "$$\n", "\n", "これで $J$ が $|p|\\to 0$ で($x$ ) $0$ に一様収束することがわかった." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**定義:** 函数 $f(x)$ が区間 $I$ において指数 $\\alpha>0$ の**一様Lipschitz条件を満たす**とは, ある $C>$ と $\\delta>0$ が存在して, $x,x'\\in I$ かつ $|x-x'|<\\delta$ ならば $|f(x)-f(x')|\\leqq C|x-x'|^\\alpha$ が成立することであると定める. $\\QED$\n", "\n", "$C^1$ 函数は閉区間上で指数 $\\alpha=1$ の一様Lipschitz条件を満たす.\n", "\n", "函数 $f(x)$ が区間 $(a,x_0)$ と $(x_0,b)$ 上で $C^1$ 級でかつ $x=x_0$ で連続であり, $h\\searrow0$ における極限達\n", "\n", "$$\n", "\\begin{aligned}\n", "&\n", "\\frac{f(x_0+h)-f(x_0)}{h}\\to f'(x_0+0)\\leftarrow f'(x_0+h), \n", "\\\\ &\n", "\\frac{f(x_0-h)-f(x_0)}{-h}\\to f'(x_0-0)\\leftarrow f'(x_0-h)\n", "\\end{aligned}\n", "$$\n", "\n", "が存在するならば, $f(x)$ は区間 $(a,b)$ に含まれる任意の閉区間上で一様Lipschitz条件を満たす." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**定理:** $f(x)$ は周期1を持つ $\\R$ 上の函数で $\\int_0^1|f(x)|\\,dx<\\infty$ を満たしてるとし, $\\ds a_n=\\int_0^1 f(x)e^{-2\\pi inx}\\,dx$ とおく. さらに $f(x)$ は開区間 $I$ 上で一様Liptschitz条件を満たしていると仮定する. このとき, $N\\to\\infty$ とすると $\\ds\\sum_{n=-N}^N a_n e^{2\\pi inx}$ は開区間 $I$ 上で $f(x)$ に一様収束する.\n", "\n", "**証明:** $f$ の $I$ 上における一様Lipschitz性より, ある $\\alpha>0$ と $C>0$ と $\\eta>0$ が存在して, $x,x'\\in I$ かつ $|x-x'|<\\eta$ ならば $|f(x)-f(x')|\\leqq C|x-x'|^\\alpha$ となる.\n", "\n", "一般に $\\ds 0<\\delta<\\frac{1}{2}$ のとき, \n", "\n", "$$\n", "\\begin{aligned}\n", "&\n", "\\sum_{k=-N}^N a_n(f)e^{2\\pi inx} - f(x) = I+J,\n", "\\\\ &\n", "I = \\int_0^\\delta \\frac{f(x+y)+f(x-y)-2f(x)}{y} \\frac{y}{\\sin(\\pi y)} \\sin(\\pi(2N+1)y)\\,dy,\n", "\\\\ &\n", "J = \\int_\\delta^{1/2} (f(x+y)+f(x-y)-2f(x)) \\frac{1}{\\sin(\\pi y)} \\sin(\\pi(2N+1)y)\\,dy.\n", "\\end{aligned}\n", "$$\n", "\n", "が成立しているのであった. \n", "\n", "$\\ds 00$ をさらに小さくすることによって, $\\ds |I|<\\frac{\\eps}{2}$ となるようにできる. 上の補題によって, $J$ は $N\\to\\infty$ で $0$ に一様収束することがわかる. ゆえに($x$ と無関係の)ある $N_0$ が存在して $N\\geqq N_0$ ならば $\\ds |J|<\\frac{\\eps}{2}$ となるようにできる. そのとき, \n", "\n", "$$\n", "\\left|\\sum_{k=-N}^N a_n(f)e^{2\\pi inx} - f(x)\\right| = |I|+|J| < \\eps.\n", "$$\n", "\n", "これで $\\ds\\sum_{n=-N}^N a_n e^{2\\pi inx}$ は開区間 $I$ 上で $f(x)$ に一様収束することを示せた. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Gibbs現象\n", "\n", "周期 $1$ を持つ函数 $b(x)$ を次のように定める:\n", "\n", "$$\n", "b(x) = \\frac{1}{2} - (x - \\lfloor x\\rfloor).\n", "$$\n", "\n", "ここで $\\lfloor x\\rfloor$ は $x$ 以下の最大の整数を表わす. $b(x)$ のグラフの形は**のこぎり波**(sawtooth wave)と呼ばれることがある. \n", "\n", "**注意:** Bernoulli多項式 $\\ds B_1(x)=x-\\frac{1}{2}$ を用いると, $b(x)=-B_1(x-\\lfloor x\\rfloor)$ と書ける. $B_1(x-\\lfloor x\\rfloor)$ はEulerMaclaurinの和公式の $n=1$ の場合に出て来る. この意味でのこぎり波はEuler-Maclaurinの和公式とも関係がある. $\\QED$\n", "\n", "$\\ds a_n=\\int_0^1 b(x)e^{-2\\pi inx}\\,dx$ とおくと, $a_0=0$ であり, $n\\ne 0$ のとき, 部分積分によって, \n", "\n", "$$\n", "a_n = -\\int_0^1 x e^{-2\\pi inx}\\,dx = \n", "-\\left[x\\frac{e^{-2\\pi inx}}{-2\\pi in}\\right]_0^1 + \\int_0^1 \\frac{e^{-2\\pi inx}}{-2\\pi in}\\,dx =\n", "\\frac{1}{2\\pi in}.\n", "$$\n", "\n", "部分積分後の積分項は $n\\ne 0$ なので消える. $b(x)$ のFourier級数の部分和は\n", "\n", "$$\n", "S_N(x) = \\sum_{n=-N}^N a_n e^{2\\pi inx} =\n", "\\sum_{n=-N}^N \\frac{e^{2\\pi inx}}{2\\pi in} =\n", "\\sum_{n=1}^N\\frac{\\sin(2\\pi nx)}{\\pi n} =\n", "2x\\sum_{n=1}^N\\sinc(2\\pi nx)\n", "$$\n", "\n", "と書ける. ここで $\\ds\\sinc x = \\frac{\\sin x}{x}$ という記号法を用いた.\n", "\n", "$x$ が $b(x)$ の不連続点である整数に近いところのどこかで $b(x)$ の値との違いがある値以上になってしまう(overshootしてしまう)という現象を**Gibbs現象**と呼ぶ.\n", "\n", "実際, $S_N(x)$ の $\\ds x=\\frac{1}{2N}$ における値は $N\\to\\infty$ のとき $\\ds b(x+0)=\\frac{1}{2}$ の $1.178979744\\cdots$ 倍に収束する. (同様に $S_N(x)$ の $\\ds x=\\frac{1}{2N}$ における値は $N\\to\\infty$ のとき $\\ds b(x-0)=-\\frac{1}{2}$ の $1.178979744\\cdots$ 倍に収束する.) このことは以下のようにして示される. $N\\to\\infty$ のとき,\n", "\n", "$$\n", "\\begin{aligned}\n", "S_N\\left(\\frac{1}{2N}\\right) &=\n", "\\frac{1}{N} \\sum_{n=1}^N\\sinc\\left(\\frac{\\pi n}{N}\\right)=\n", "\\frac{1}{\\pi}\\sum_{n=1}^N\\sinc\\left(\\frac{\\pi n}{N}\\right)\\,\\frac{\\pi}{N}\n", "\\\\ &\\to\n", "\\frac{1}{\\pi}\\int_0^\\pi\\sinc(x)\\,dx =\n", "\\frac{1}{\\pi}\\int_0^\\pi\\frac{\\sin x}{x}\\,dx \n", "\\\\ &=\n", "0.5894898722\\cdots\n", "=1.178979744\\cdots\\times\\frac{1}{2}.\n", "\\end{aligned}\n", "$$\n", "\n", "**注意:** $0$ に近い正の実数として $\\ds x=\\frac{1}{2N}$ を選んだのは以下のような理由からである. 上と同様にして, 任意の $a>0$ に対して $\\ds x=\\frac{a}{2\\pi N}$ とおいた場合を考えると, $N\\to\\infty$ のとき, \n", "\n", "$$\n", "\\begin{aligned}\n", "S_N\\left(\\frac{a}{2N}\\right) &=\n", "\\frac{a}{N} \\sum_{n=1}^N\\sinc\\left(\\frac{a\\pi n}{N}\\right)=\n", "\\frac{1}{\\pi}\\sum_{n=1}^N\\sinc\\left(\\frac{a\\pi n}{N}\\right)\\,\\frac{a\\pi}{N}\n", "\\\\ &\\to\n", "\\frac{1}{\\pi}\\int_0^{a\\pi}\\sinc(x)\\,dx =\n", "\\frac{1}{\\pi}\\int_0^{a\\pi}\\frac{\\sin x}{x}\\,dx\n", "\\end{aligned}\n", "$$\n", "\n", "となる. この積分は $a=1$ のときに最大になる. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**注意(一般の場合):** $f$ は $\\R$ 上の周期1を持つ函数で $\\ds\\int_0^1|f(x)|\\,dx<\\infty$ を満たすものであるとする. 区間 $[a,x_0)$ と $(x_0,b]$ 上で $f$ は $C^1$ 級であり, $h\\searrow0$ における極限達\n", "\n", "$$\n", "\\begin{aligned}\n", "&\n", "f(x_0+h)\\to f(x_0+0), \\qquad\n", "f(x_0-h)\\to f(x_0-0), \n", "\\\\ &\n", "\\frac{f(x_0+h)-f(x_0+0)}{h}\\to f'(x_0+0)\\leftarrow f'(x_0+h)\n", "\\\\ &\n", "\\frac{f(x_0-h)-f(x_0-0)}{-h}\\to f'(x_0-0)\\leftarrow f'(x_0-h)\n", "\\end{aligned}\n", "$$\n", "\n", "が存在すると仮定する. さらに $f(x_0+0)>f(x_0-0)$ であり, $\\ds f(x_0) = \\frac{f(x_0+0)+f(x_0-0)}{2}$ であると仮定する.\n", "\n", "このとき, $f$ のFourier級数の部分和も $x=x_0$ の近くでGibbs現象を引き起こす. \n", "\n", "なぜならば, 函数 $g(x)$ を\n", "\n", "$$\n", "g(x) = f(x) - (f(x_0+0)-f(x_0-0))s(x-x_0)\n", "$$\n", "\n", "とおくと, \n", "\n", "$$\n", "\\begin{aligned}\n", "&\n", "g(x_0+0) = f(x_0+0) - \\frac{f(x_0+0)-f(x_0-0)}{2} = \\frac{f(x_0+0)+f(x_0-0)}{2} = f(x_0), \n", "\\\\ &\n", "g(x_0-0) = f(x_0-0) + \\frac{f(x_0+0)-f(x_0-0)}{2} = \\frac{f(x_0+0)+f(x_0-0)}{2} = f(x_0)\n", "\\end{aligned}\n", "$$\n", "\n", "となり, $g$ は $x_0$ を含むある開区間 $I$ で指数 $1$ の一様Lipschitz条件を満たすことがわかる. ゆえに, $g$ のFourier級数の部分和は $I$ 上で $g$ に一様収束する. そして,\n", "\n", "$$\n", "f(x) = (f(x_0+0)-f(x_0-0))s(x-x_0) + g(x)\n", "$$\n", "\n", "であり, $(f(x_0+0)-f(x_0-0))s(x-x_0)$ のFourier級数の部分和が $x=x_0$ の近くでGibbs現象を引き起こすことが上の方の具体的な計算でわかっているので, $f(x)$ の Fourier級数の部分和も $x=x_0$ の近くでGibbs現象を引き起こすことがわかる. $\\QED$" ] }, { "cell_type": "code", "execution_count": 21, "metadata": {}, "outputs": [ { "data": { "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", "0\n", "\n", "\n", "1\n", "\n", "\n", "2\n", "\n", "\n", "3\n", "\n", "\n", "4\n", "\n", "\n", "5\n", "\n", "\n", "6\n", "\n", "\n", "0.2\n", "\n", "\n", "0.3\n", "\n", "\n", "0.4\n", "\n", "\n", "0.5\n", "\n", "\n", "0.6\n", "\n", "\n", "(1/pi) int_0^{a pi} sin(x)/x dx\n", "\n", "\n", "a\n", "\n", "\n", "\n" ] }, "execution_count": 21, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# (1/π)∫_0^{aπ} sinc(x) dx のグラフ\n", "\n", "f(a) = quadgk(x->sin(x)/x, eps(), a*π)[1]/π\n", "a = 0.2:0.01:6\n", "plot(size=(400,250), legend=false, xlims=(0,maximum(a)))\n", "plot!(title=\"(1/pi) int_0^{a pi} sin(x)/x dx\", titlefontsize=11)\n", "plot!(xlabel=\"a\")\n", "plot!(a, f.(a))" ] }, { "cell_type": "code", "execution_count": 22, "metadata": {}, "outputs": [ { "data": { "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", "-2\n", "\n", "\n", "-1\n", "\n", "\n", "0\n", "\n", "\n", "1\n", "\n", "\n", "2\n", "\n", "\n", "-0.4\n", "\n", "\n", "-0.2\n", "\n", "\n", "0.0\n", "\n", "\n", "0.2\n", "\n", "\n", "0.4\n", "\n", "\n", "\n", "\n" ] }, "execution_count": 22, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# のこぎり波のグラフ\n", "\n", "sawtooth(x) = 1/2 - (x - floor(x))\n", "x = -2:0.01:1.99\n", "plot(x, sawtooth.(x), legend=false, size=(400, 150))\n", "hline!([0], ls=:dot, color=:black)" ] }, { "cell_type": "code", "execution_count": 23, "metadata": {}, "outputs": [ { "data": { "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", "-1.0\n", "\n", "\n", "-0.5\n", "\n", "\n", "0.0\n", "\n", "\n", "0.5\n", "\n", "\n", "1.0\n", "\n", "\n", "-0.50\n", "\n", "\n", "-0.25\n", "\n", "\n", "0.00\n", "\n", "\n", "0.25\n", "\n", "\n", "0.50\n", "\n", "\n", "N=10\n", "\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "0.00\n", "\n", "\n", "0.05\n", "\n", "\n", "0.10\n", "\n", "\n", "0.15\n", "\n", "\n", "0.20\n", "\n", "\n", "0.30\n", "\n", "\n", "0.35\n", "\n", "\n", "0.40\n", "\n", "\n", "0.45\n", "\n", "\n", "0.50\n", "\n", "\n", "0.55\n", "\n", "\n", "0.60\n", "\n", "\n", "N=10\n", "\n", "\n", "\n", "\n" ] }, "execution_count": 23, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# のこぎり波のGibbs現象\n", "#\n", "# Fourier級数の部分和が不連続点で上下にオーバーシュートしている.\n", "\n", "sawtooth(x) = 1/2 - (x - floor(x))\n", "S(N,x) = sum(n->sin(2π*n*x)/(π*n), 1:N)\n", "PP = []\n", "for N in [10, 20, 50, 100]\n", " x = -1:0.0005:0.99\n", " P = plot(legend=false, ylims=(-0.61, 0.61))\n", " plot!(x, sawtooth.(x))\n", " plot!(x, S.(N, x))\n", " plot!(title=\"N=$N\", titlefontsize=10)\n", " push!(PP, P)\n", " \n", " x = -0.01:0.0005:0.2\n", " P = plot(legend=false, ylims=(0.28, 0.61))\n", " plot!(x, sawtooth.(x))\n", " plot!(x, S.(N, x))\n", " plot!(title=\"N=$N\", titlefontsize=10)\n", " push!(PP, P)\n", "end\n", "\n", "plot(PP[1:2]..., size=(500, 200), layout=@layout([a b{0.3w}]))" ] }, { "cell_type": "code", "execution_count": 24, "metadata": {}, "outputs": [ { "data": { "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", "-1.0\n", "\n", "\n", "-0.5\n", "\n", "\n", "0.0\n", "\n", "\n", "0.5\n", "\n", "\n", "1.0\n", "\n", "\n", "-0.50\n", "\n", "\n", "-0.25\n", "\n", "\n", "0.00\n", "\n", "\n", "0.25\n", "\n", "\n", "0.50\n", "\n", "\n", "N=20\n", "\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "0.00\n", "\n", "\n", "0.05\n", "\n", "\n", "0.10\n", "\n", "\n", "0.15\n", "\n", "\n", "0.20\n", "\n", "\n", "0.30\n", "\n", "\n", "0.35\n", "\n", "\n", "0.40\n", "\n", "\n", "0.45\n", "\n", "\n", "0.50\n", "\n", "\n", "0.55\n", "\n", "\n", "0.60\n", "\n", "\n", "N=20\n", "\n", "\n", "\n", "\n" ] }, "execution_count": 24, "metadata": {}, "output_type": "execute_result" } ], "source": [ "plot(PP[3:4]..., size=(500, 200), layout=@layout([a b{0.3w}]))" ] }, { "cell_type": "code", "execution_count": 25, "metadata": {}, "outputs": [ { "data": { "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", "-1.0\n", "\n", "\n", "-0.5\n", "\n", "\n", "0.0\n", "\n", "\n", "0.5\n", "\n", "\n", "1.0\n", "\n", "\n", "-0.50\n", "\n", "\n", "-0.25\n", "\n", "\n", "0.00\n", "\n", "\n", "0.25\n", "\n", "\n", "0.50\n", "\n", "\n", "N=50\n", "\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "0.00\n", "\n", "\n", "0.05\n", "\n", "\n", "0.10\n", "\n", "\n", "0.15\n", "\n", "\n", "0.20\n", "\n", "\n", "0.30\n", "\n", "\n", "0.35\n", "\n", "\n", "0.40\n", "\n", "\n", "0.45\n", "\n", "\n", "0.50\n", "\n", "\n", "0.55\n", "\n", "\n", "0.60\n", "\n", "\n", "N=50\n", "\n", "\n", "\n", "\n" ] }, "execution_count": 25, "metadata": {}, "output_type": "execute_result" } ], "source": [ "plot(PP[5:6]..., size=(500, 200), layout=@layout([a b{0.3w}]))" ] }, { "cell_type": "code", "execution_count": 26, "metadata": {}, "outputs": [ { "data": { "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", "-1.0\n", "\n", "\n", "-0.5\n", "\n", "\n", "0.0\n", "\n", "\n", "0.5\n", "\n", "\n", "1.0\n", "\n", "\n", "-0.50\n", "\n", "\n", "-0.25\n", "\n", "\n", "0.00\n", "\n", "\n", "0.25\n", "\n", "\n", "0.50\n", "\n", "\n", "N=100\n", "\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "0.00\n", "\n", "\n", "0.05\n", "\n", "\n", "0.10\n", "\n", "\n", "0.15\n", "\n", "\n", "0.20\n", "\n", "\n", "0.30\n", "\n", "\n", "0.35\n", "\n", "\n", "0.40\n", "\n", "\n", "0.45\n", "\n", "\n", "0.50\n", "\n", "\n", "0.55\n", "\n", "\n", "0.60\n", "\n", "\n", "N=100\n", "\n", "\n", "\n", "\n" ] }, "execution_count": 26, "metadata": {}, "output_type": "execute_result" } ], "source": [ "plot(PP[7:8]..., size=(500, 200), layout=@layout([a b{0.3w}]))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**例(矩形波):** 矩形波 $f(x)$ を\n", "\n", "$$\n", "f(x) = \n", "\\begin{cases}\n", " 0 & (x-\\lfloor x\\rfloor = 0) \\\\\n", " 1 & (0 < x-\\lfloor x\\rfloor < 1/2) \\\\\n", " 0 & (x-\\lfloor x\\rfloor = 1/2) \\\\\n", "-1 & (1/2 < x-\\lfloor x\\rfloor < 1) \\\\\n", "\\end{cases}\n", "$$\n", "\n", "と定めると,\n", "\n", "$$\n", "4\\sum_{k=1}^\\infty \\frac{\\sin(2\\pi(2k-1)x)}{\\pi(2k-1)} = f(x).\n", "$$\n", "\n", "以下のセルにおけるプロットを見よ. $\\QED$" ] }, { "cell_type": "code", "execution_count": 27, "metadata": {}, "outputs": [ { "data": { "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", "-1.0\n", "\n", "\n", "-0.5\n", "\n", "\n", "0.0\n", "\n", "\n", "0.5\n", "\n", "\n", "1.0\n", "\n", "\n", "-1.0\n", "\n", "\n", "-0.5\n", "\n", "\n", "0.0\n", "\n", "\n", "0.5\n", "\n", "\n", "1.0\n", "\n", "\n", "K=5\n", "\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "0.00\n", "\n", "\n", "0.05\n", "\n", "\n", "0.10\n", "\n", "\n", "0.15\n", "\n", "\n", "0.20\n", "\n", "\n", "0.7\n", "\n", "\n", "0.8\n", "\n", "\n", "0.9\n", "\n", "\n", "1.0\n", "\n", "\n", "1.1\n", "\n", "\n", "1.2\n", "\n", "\n", "K=5\n", "\n", "\n", "\n", "\n" ] }, "execution_count": 27, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# 矩形波のGibbs現象\n", "#\n", "# Fourier級数の部分和が不連続点で上下にオーバーシュートしている.\n", "\n", "squarewave(x) = (x - floor(x) ≤ 1/2) ? one(x) : -one(x)\n", "S(K,x) = 4*sum(k->sin(2π*(2k-1)*x)/(π*(2k-1)), 1:K)\n", "PP = []\n", "for K in [5, 10, 25, 50]\n", " x = -1:0.0005:0.99\n", " P = plot(legend=false, ylims=(-1.22, 1.22))\n", " plot!(x, squarewave.(x))\n", " plot!(x, S.(K, x))\n", " plot!(title=\"K=$K\", titlefontsize=10)\n", " push!(PP, P)\n", " \n", " x = -0.01:0.0005:0.2\n", " P = plot(legend=false, ylims=(0.7, 1.22))\n", " plot!(x, squarewave.(x))\n", " plot!(x, S.(K, x))\n", " plot!(title=\"K=$K\", titlefontsize=10)\n", " push!(PP, P)\n", "end\n", "\n", "plot(PP[1:2]..., size=(500, 200), layout=@layout([a b{0.3w}]))" ] }, { "cell_type": "code", "execution_count": 28, "metadata": {}, "outputs": [ { "data": { "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", "-1.0\n", "\n", "\n", "-0.5\n", "\n", "\n", "0.0\n", "\n", "\n", "0.5\n", "\n", "\n", "1.0\n", "\n", "\n", "-1.0\n", "\n", "\n", "-0.5\n", "\n", "\n", "0.0\n", "\n", "\n", "0.5\n", "\n", "\n", "1.0\n", "\n", "\n", "K=10\n", "\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "0.00\n", "\n", "\n", "0.05\n", "\n", "\n", "0.10\n", "\n", "\n", "0.15\n", "\n", "\n", "0.20\n", "\n", "\n", "0.7\n", "\n", "\n", "0.8\n", "\n", "\n", "0.9\n", "\n", "\n", "1.0\n", "\n", "\n", "1.1\n", "\n", "\n", "1.2\n", "\n", "\n", "K=10\n", "\n", "\n", "\n", "\n" ] }, "execution_count": 28, "metadata": {}, "output_type": "execute_result" } ], "source": [ "plot(PP[3:4]..., size=(500, 200), layout=@layout([a b{0.3w}]))" ] }, { "cell_type": "code", "execution_count": 29, "metadata": {}, "outputs": [ { "data": { "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", "-1.0\n", "\n", "\n", "-0.5\n", "\n", "\n", "0.0\n", "\n", "\n", "0.5\n", "\n", "\n", "1.0\n", "\n", "\n", "-1.0\n", "\n", "\n", "-0.5\n", "\n", "\n", "0.0\n", "\n", "\n", "0.5\n", "\n", "\n", "1.0\n", "\n", "\n", "K=25\n", "\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "0.00\n", "\n", "\n", "0.05\n", "\n", "\n", "0.10\n", "\n", "\n", "0.15\n", "\n", "\n", "0.20\n", "\n", "\n", "0.7\n", "\n", "\n", "0.8\n", "\n", "\n", "0.9\n", "\n", "\n", "1.0\n", "\n", "\n", "1.1\n", "\n", "\n", "1.2\n", "\n", "\n", "K=25\n", "\n", "\n", "\n", "\n" ] }, "execution_count": 29, "metadata": {}, "output_type": "execute_result" } ], "source": [ "plot(PP[5:6]..., size=(500, 200), layout=@layout([a b{0.3w}]))" ] }, { "cell_type": "code", "execution_count": 30, "metadata": {}, "outputs": [ { "data": { "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", "-1.0\n", "\n", "\n", "-0.5\n", "\n", "\n", "0.0\n", "\n", "\n", "0.5\n", "\n", "\n", "1.0\n", "\n", "\n", "-1.0\n", "\n", "\n", "-0.5\n", "\n", "\n", "0.0\n", "\n", "\n", "0.5\n", "\n", "\n", "1.0\n", "\n", "\n", "K=50\n", "\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "0.00\n", "\n", "\n", "0.05\n", "\n", "\n", "0.10\n", "\n", "\n", "0.15\n", "\n", "\n", "0.20\n", "\n", "\n", "0.7\n", "\n", "\n", "0.8\n", "\n", "\n", "0.9\n", "\n", "\n", "1.0\n", "\n", "\n", "1.1\n", "\n", "\n", "1.2\n", "\n", "\n", "K=50\n", "\n", "\n", "\n", "\n" ] }, "execution_count": 30, "metadata": {}, "output_type": "execute_result" } ], "source": [ "plot(PP[7:8]..., size=(500, 200), layout=@layout([a b{0.3w}]))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**例:** 周期1を持つ函数 $f(x)$ を次のように定める:\n", "\n", "$$\n", "f(x) =\n", "\\begin{cases}\n", " 1/4 & (x-\\lfloor x\\rfloor=0) \\\\\n", " 1/2 & (0 < x-\\lfloor x\\rfloor < 1/4) \\\\\n", " 0 & (x-\\lfloor x\\rfloor=1/4) \\\\\n", "-1/2 & (1/4< x-\\lfloor x\\rfloor < 1/2) \\\\\n", "-1/4 & (x-\\lfloor x\\rfloor=1/2) \\\\\n", " 0 & (1/2< x-\\lfloor x\\rfloor < 1). \\\\\n", "\\end{cases}\n", "$$\n", "\n", "このとき,\n", "\n", "$$\n", "\\sum_{k=1}^\\infty(-1)^{k-1}\\frac{\\cos(2\\pi(2k-1)x)}{\\pi(2k-1)} +\n", "\\sum_{l=1}^\\infty\\frac{\\sin(2\\pi(4l-2)x)}{\\pi(2l-1)} =\n", "f(x).\n", "$$\n", "\n", "部分和 $S_{M,N}(x)$ を\n", "\n", "$$\n", "S_{M,N}(x) =\n", "\\sum_{k=1}^M (-1)^{k-1}\\frac{\\cos(2\\pi(2k-1)x)}{\\pi(2k-1)} +\n", "\\sum_{l=1}^N \\frac{\\sin(2\\pi(4l-2)x)}{\\pi(2l-1)}\n", "$$\n", "\n", "と定める. このとき, $S_{N,N}(x)$ として, $\\cos$ と $\\sin$ の和の個数を同じにすると, $x-\\lfloor x\\rfloor=3/4$ にノイズが出てしまう. 正しい部分和は $S_{2N, N}(x)$ の方である. 以下のセルのプロットを見よ. $\\QED$" ] }, { "cell_type": "code", "execution_count": 31, "metadata": {}, "outputs": [ { "data": { "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", "-1.0\n", "\n", "\n", "-0.5\n", "\n", "\n", "0.0\n", "\n", "\n", "0.5\n", "\n", "\n", "1.0\n", "\n", "\n", "-0.4\n", "\n", "\n", "-0.2\n", "\n", "\n", "0.0\n", "\n", "\n", "0.2\n", "\n", "\n", "0.4\n", "\n", "\n", "(M,N)=(15,15)\n", "\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "0.6\n", "\n", "\n", "0.7\n", "\n", "\n", "0.8\n", "\n", "\n", "0.9\n", "\n", "\n", "-0.2\n", "\n", "\n", "-0.1\n", "\n", "\n", "0.0\n", "\n", "\n", "0.1\n", "\n", "\n", "0.2\n", "\n", "\n", "(M,N)=(15,15)\n", "\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "0.00\n", "\n", "\n", "0.05\n", "\n", "\n", "0.10\n", "\n", "\n", "0.15\n", "\n", "\n", "0.20\n", "\n", "\n", "0.25\n", "\n", "\n", "0.35\n", "\n", "\n", "0.40\n", "\n", "\n", "0.45\n", "\n", "\n", "0.50\n", "\n", "\n", "0.55\n", "\n", "\n", "0.60\n", "\n", "\n", "(M,N)=(15,15)\n", "\n", "\n", "\n", "\n" ] }, "execution_count": 31, "metadata": {}, "output_type": "execute_result" } ], "source": [ "function f(x)\n", " xx = x - floor(x)\n", " xx == 0 && return 1/4\n", " 0 < xx < 1/4 && return 1/2\n", " xx == 1/2 && return 0.0\n", " 1/4 < xx < 1/2 && return -1/2\n", " xx == 1/2 && return -1/4\n", " 1/2 < xx && return 0.0\n", "end\n", "S(M,N,x) = sum(m->(-1)^(m-1)*cos(2π*(2m-1)x)/(π*(2m-1)), 1:M) + sum(n->sin(2π*(4n-2)*x)/(π*(2n-1)), 1:N)\n", "\n", "PP = []\n", "for N in [15, 45]\n", " M = N\n", " x = -1.0:0.0005:0.9995\n", " P = plot(legend=false)#, ylims=(-0.61, 0.61))\n", " plot!(x, f.(x))\n", " plot!(x, S.(M, N, x))\n", " plot!(title=\"(M,N)=($M,$N)\", titlefontsize=10)\n", " push!(PP, P)\n", "\n", " x = 0.6:0.0005:0.9\n", " P = plot(legend=false, ylims=(-0.2, 0.2))\n", " plot!(x, f.(x))\n", " plot!(x, S.(M, N, x))\n", " plot!(title=\"(M,N)=($M,$N)\", titlefontsize=10)\n", " push!(PP, P)\n", "\n", " x = -0.01:0.0005:0.26\n", " P = plot(legend=false, ylims=(0.35, 0.61))\n", " plot!(x, f.(x))\n", " plot!(x, S.(M, N, x))\n", " plot!(title=\"(M,N)=($M,$N)\", titlefontsize=10)\n", " push!(PP, P)\n", "end\n", "\n", "plot(PP[1:3]..., size=(640, 200), layout=@layout([a b{0.2w} c{0.3w}]))" ] }, { "cell_type": "code", "execution_count": 32, "metadata": {}, "outputs": [ { "data": { "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", "-1.0\n", "\n", "\n", "-0.5\n", "\n", "\n", "0.0\n", "\n", "\n", "0.5\n", "\n", "\n", "1.0\n", "\n", "\n", "-0.4\n", "\n", "\n", "-0.2\n", "\n", "\n", "0.0\n", "\n", "\n", "0.2\n", "\n", "\n", "0.4\n", "\n", "\n", "(M,N)=(45,45)\n", "\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "0.6\n", "\n", "\n", "0.7\n", "\n", "\n", "0.8\n", "\n", "\n", "0.9\n", "\n", "\n", "-0.2\n", "\n", "\n", "-0.1\n", "\n", "\n", "0.0\n", "\n", "\n", "0.1\n", "\n", "\n", "0.2\n", "\n", "\n", "(M,N)=(45,45)\n", "\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "0.00\n", "\n", "\n", "0.05\n", "\n", "\n", "0.10\n", "\n", "\n", "0.15\n", "\n", "\n", "0.20\n", "\n", "\n", "0.25\n", "\n", "\n", "0.35\n", "\n", "\n", "0.40\n", "\n", "\n", "0.45\n", "\n", "\n", "0.50\n", "\n", "\n", "0.55\n", "\n", "\n", "0.60\n", "\n", "\n", "(M,N)=(45,45)\n", "\n", "\n", "\n", "\n" ] }, "execution_count": 32, "metadata": {}, "output_type": "execute_result" } ], "source": [ "plot(PP[4:6]..., size=(640, 200), layout=@layout([a b{0.2w} c{0.3w}]))" ] }, { "cell_type": "code", "execution_count": 33, "metadata": {}, "outputs": [ { "data": { "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", "-1.0\n", "\n", "\n", "-0.5\n", "\n", "\n", "0.0\n", "\n", "\n", "0.5\n", "\n", "\n", "1.0\n", "\n", "\n", "-0.50\n", "\n", "\n", "-0.25\n", "\n", "\n", "0.00\n", "\n", "\n", "0.25\n", "\n", "\n", "0.50\n", "\n", "\n", "(M,N)=(20,10)\n", "\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "0.6\n", "\n", "\n", "0.7\n", "\n", "\n", "0.8\n", "\n", "\n", "0.9\n", "\n", "\n", "-0.2\n", "\n", "\n", "-0.1\n", "\n", "\n", "0.0\n", "\n", "\n", "0.1\n", "\n", "\n", "0.2\n", "\n", "\n", "(M,N)=(20,10)\n", "\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "0.00\n", "\n", "\n", "0.05\n", "\n", "\n", "0.10\n", "\n", "\n", "0.15\n", "\n", "\n", "0.20\n", "\n", "\n", "0.25\n", "\n", "\n", "0.35\n", "\n", "\n", "0.40\n", "\n", "\n", "0.45\n", "\n", "\n", "0.50\n", "\n", "\n", "0.55\n", "\n", "\n", "0.60\n", "\n", "\n", "(M,N)=(20,10)\n", "\n", "\n", "\n", "\n" ] }, "execution_count": 33, "metadata": {}, "output_type": "execute_result" } ], "source": [ "PP = []\n", "for N in [10, 30]\n", " M = 2N\n", " x = -1.0:0.0005:0.9995\n", " P = plot(legend=false)#, ylims=(-0.61, 0.61))\n", " plot!(x, f.(x))\n", " plot!(x, S.(M, N, x))\n", " plot!(title=\"(M,N)=($M,$N)\", titlefontsize=10)\n", " push!(PP, P)\n", "\n", " x = 0.6:0.0005:0.9\n", " P = plot(legend=false, ylims=(-0.2, 0.2))\n", " plot!(x, f.(x))\n", " plot!(x, S.(M, N, x))\n", " plot!(title=\"(M,N)=($M,$N)\", titlefontsize=10)\n", " push!(PP, P)\n", "\n", " x = -0.01:0.0005:0.26\n", " P = plot(legend=false, ylims=(0.35, 0.61))\n", " plot!(x, f.(x))\n", " plot!(x, S.(M, N, x))\n", " plot!(title=\"(M,N)=($M,$N)\", titlefontsize=10)\n", " push!(PP, P)\n", "end\n", "\n", "plot(PP[1:3]..., size=(640, 200), layout=@layout([a b{0.2w} c{0.3w}]))" ] }, { "cell_type": "code", "execution_count": 34, "metadata": {}, "outputs": [ { "data": { "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", "-1.0\n", "\n", "\n", "-0.5\n", "\n", "\n", "0.0\n", "\n", "\n", "0.5\n", "\n", "\n", "1.0\n", "\n", "\n", "-0.50\n", "\n", "\n", "-0.25\n", "\n", "\n", "0.00\n", "\n", "\n", "0.25\n", "\n", "\n", "0.50\n", "\n", "\n", "(M,N)=(60,30)\n", "\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "0.6\n", "\n", "\n", "0.7\n", "\n", "\n", "0.8\n", "\n", "\n", "0.9\n", "\n", "\n", "-0.2\n", "\n", "\n", "-0.1\n", "\n", "\n", "0.0\n", "\n", "\n", "0.1\n", "\n", "\n", "0.2\n", "\n", "\n", "(M,N)=(60,30)\n", "\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "0.00\n", "\n", "\n", "0.05\n", "\n", "\n", "0.10\n", "\n", "\n", "0.15\n", "\n", "\n", "0.20\n", "\n", "\n", "0.25\n", "\n", "\n", "0.35\n", "\n", "\n", "0.40\n", "\n", "\n", "0.45\n", "\n", "\n", "0.50\n", "\n", "\n", "0.55\n", "\n", "\n", "0.60\n", "\n", "\n", "(M,N)=(60,30)\n", "\n", "\n", "\n", "\n" ] }, "execution_count": 34, "metadata": {}, "output_type": "execute_result" } ], "source": [ "plot(PP[4:6]..., size=(640, 200), layout=@layout([a b{0.2w} c{0.3w}]))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Fourier級数の総和核\n", "\n", "#### Fourier級数の総和核の定義\n", "\n", "$\\R$ 上の周期 $1$ を持つ周期的函数(正確には周期的可測函数) $f(x)$ でその絶対値の周期分の定積分 $\\int_0^1 |f(x)|\\,dx$ が有限の値になるものを1次元トーラス(もしくは円周) $\\T$ 上の可積分函数もしくは $L^1$ 函数と呼び, それら全体の集合を $L^1(\\T)$ と書くことにする. 同様に, 絶対値の $p$ 上の周期分の積分が有限の値になるものを $L^p$ 函数と呼び, それら全体の集合を $L^p(\\T)$ と書く. $f\\in L^p(\\T)$ の $L^p$ ノルムが\n", "\n", "$$\n", "\\|f\\|_p = \\left(\\int_0^1 |f(x)|^p\\,dx\\right)^{1/p}\n", "$$\n", "\n", "と定義される.\n", "\n", "**定義:** $\\rho_t\\in L^1(\\T)$ ($t>0$) で以下の条件を満たすものをFourier級数に関する**総和核**(summability kernel)と呼ぶ:\n", "\n", "(s1) $\\ds \\int_{-1/2}^{1/2} \\rho_t(x)\\,dx = 1$.\n", "\n", "(s2) ある $C>0$ が存在して, すべての $t>0$ について $\\ds \\int_{-1/2}^{1/2}|\\rho_t(x)|\\,dx \\leqq C$.\n", "\n", "(s3) $0<\\delta<1/2$ ならば, $\\ds\\lim_{t\\searrow 0}\\int_{\\delta<|x|<1/2} |\\rho_t(x)|\\,dx = 0$. $\\QED$\n", "\n", "この定義は, 猪狩惺著『実解析入門』岩波書店(1996年)の§8.5(b)に書いてあるものに等しい.\n", "\n", "大雑把に言えば, Fourier級数の総和核は周期 $1$ を持つデルタ函数 $\\ds\\sum_{m\\in\\Z}\\delta(x-m)$ に「収束」するような函数族のことである.\n", "\n", "**総和核の作り方:** $\\rho_t\\in L^1(\\T)$ ($t>0$) が(s1)と以下の条件を満たしていればFourier級数の総和核である.\n", "\n", "(s2') ある $C_1>0$ が存在して, すべての $t>0$ について $\\ds\\sup_{|x|<1/2}\\ds|\\rho_t(x)|\\leqq\\frac{C_1}{t}$.\n", "\n", "(s3') ある $C_2>0$ と $\\eta > 0$ が存在して, すべての $t>0$ と $|x|<1/2$ について $\\ds|\\rho_t(x)|\\leqq C_2\\frac{t^\\eta}{|x|^{\\eta+1}}$.\n", "\n", "**証明:** (s2)と(s3)を示せばよい. (s2)の積分を $|x|t$ に分割して, (s2'), (s3')を使うと, \n", "\n", "$$\n", "\\begin{aligned}\n", "&\n", "\\int_{-1/2}|\\rho_t(x)|\\,dx \\leqq I + J,\n", "\\\\ &\n", "I = 2\\frac{C_1}{t}\\int_0^{\\min\\{t,1/2\\}}dx \\leqq \\frac{C_1}{t}2t = 2C_1,\n", "\\\\ &\n", "J = 2C_2\\int_t^{1/2}\\frac{t^\\eta}{x^{\\eta+1}}\\,dx \\leqq\n", "2C_2\\int_t^\\infty \\frac{t^\\eta}{x^{\\eta+1}}\\,dx =\n", "2C_2\\int_1^\\infty \\frac{dy}{y^{\\,\\eta+1}} =\n", "\\frac{2C_2}{\\eta}.\n", "\\end{aligned}\n", "$$\n", "\n", "これで(s2)が示された. $0<\\delta<1/2$ であるとする. このとき, (s3') を使うと, 上と同様にして, \n", "\n", "$$\n", "\\int_{\\delta<|x|<1/2} |\\rho_t(x)|\\,dx \\leqq\n", "2C_2\\int_\\delta^\\infty \\frac{t^\\eta}{x^{\\eta+1}}\\,dx =\n", "2C_2\\int_{\\delta/t}^\\infty \\frac{dy}{y^{\\,\\eta+1}} =\n", "\\frac{2C_2}{\\eta}\\left(\\frac{\\delta}{t}\\right)^{-\\eta} \\to 0 \\qquad (t\\searrow 0).\n", "$$\n", "\n", "これで(s3)も示された. $\\QED$\n", "\n", "$f,g\\in L^1(\\T)$ の畳み込み積を次のように定義しておく:\n", "\n", "$$\n", "f*g(x) = \\int_0^1 f(y)g(x-y)\\,dy = \\int_0^1 f(x-y)g(y)\\,dy.\n", "$$\n", "\n", "このとき, Fourier変換の場合と同様にして以下を示すことができる.\n", "\n", "**定理:** $\\rho_t(x)$ はFourier級数の総和核であり, $f$ は周期1を持つ $\\R$ 上の連続函数であるとする. このとき, $t\\searrow 0$ のとき $\\rho_t*f$ は $f$ に一様収束する. $\\QED$\n", "\n", "**定理:** $\\rho_t(x)$ はFourier級数の総和核であり, $p\\geqq 1$ であるとし, $f\\in L^p(\\T)$ であるとする. このとき, $t\\searrow 0$ のとき $\\|\\rho_t*f - f\\|_p\\to 0$ となる. $\\QED$\n", "\n", "**問題:** 以上を示せ. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Fourier級数のDirichlet核は総和核ではない\n", "\n", "上の方で示したようにFourier級数のDirichlet核 $\\ds D_N(x) = \\sum_{n=-N}^N e^{2\\pi inx} = \\frac{\\sin(\\pi(2N+1)x)}{\\sin(\\pi x)}$ は\n", "\n", "$$\n", "\\int_0^1 |D_N(x)|\\,dx \\sim \\log(2N+1) \\qquad (N\\to\\infty)\n", "$$\n", "\n", "を満たしているので, $D_{1/t}(x)$ は条件(s2)を満たしていない. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Fourier級数のFejér核\n", "\n", "Dirichlet核の加法平均\n", "\n", "$$\n", "F_N(x) = \\frac{1}{N+1}\\sum_{n=0}^N D_n(x) = \\sum_{n=-N}^N \\left(1-\\frac{|n|}{N+1}\\right)e^{2\\pi inx}\n", "$$\n", "\n", "をFourier級数の**Fejér核**と呼ぶ. \n", "\n", "このとき, $\\ds a_n = \\int_0^1 f(y)e^{-2\\pi iny}\\,dy$ とおくと, \n", "\n", "$$\n", "F_N*f(x) = \n", "\\frac{1}{N+1}\\sum_{n=0}^N D_n*f(x) =\n", "\\frac{1}{N+1}\\sum_{n=0}^N \\sum_{m=-n}^n a_m e^{2\\pi imx}.\n", "$$\n", "\n", "ゆえに, $F_N*f(x)$ が $N\\to\\infty$ で収束することと, $D_n*f(x)$ が $n\\to\\infty$ でCesàro総和可能(すなわちFourier級数がCesàro総和可能)であることは同値であり, その収束先はCesàro和になる. $D_n*f(x)$ が $n\\to\\infty$ で収束するならばCesàro総和可能になるが, 逆は成立しない. Cesàro和は通常の無限和よりも収束し易い.\n", "\n", "Fourier級数のFejér核は\n", "\n", "$$\n", "F_N(x) = \\frac{1}{N+1}\\left(\\frac{\\sin(\\pi(N+1)x)}{\\sin(\\pi x)}\\right)^2\n", "$$\n", "\n", "と書ける. この表示は一般に\n", "\n", "$$\n", "\\left(\\frac{z^{(N+1)/2}-z^{-(N+1)/2}}{z^{1/2}-z^{-1/2}}\\right)^2 =\n", "\\left(z^{-N/2}+z^{-N/2+1}+\\cdots+z^{N/2-1}+z^{N/2}\\right)^2 =\n", "\\sum_{n=-N}^N(N+1-|n|)z^n\n", "$$\n", "\n", "であることを, $z=e^{2\\pi ix}$ に適用すれば得られる. 例えば,\n", "\n", "$$\n", "\\left(\\frac{z^{4/2}-z^{-4/2}}{z^{1/2}-z^{-1/2}}\\right)^2 =\n", "\\left(z^{-3/2}+z^{-1/2}+z^{1/2}+z^{3/2}\\right)^2 =\n", "z^{-3} + 2z^{-2}+3z^{-1}+4+3z+2z^2+z^3.\n", "$$\n", "\n", "上の表示より, Fourier級数のFejér核は $N+1=t^{-1/2}$ とおくことによってFourier級数の総和核とみなせることがわかる. " ] }, { "cell_type": "code", "execution_count": 35, "metadata": {}, "outputs": [ { "data": { "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", "-0.4\n", "\n", "\n", "-0.2\n", "\n", "\n", "0.0\n", "\n", "\n", "0.2\n", "\n", "\n", "0.4\n", "\n", "\n", "0.0\n", "\n", "\n", "2.5\n", "\n", "\n", "5.0\n", "\n", "\n", "7.5\n", "\n", "\n", "10.0\n", "\n", "\n", "N=10\n", "\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "-0.4\n", "\n", "\n", "-0.2\n", "\n", "\n", "0.0\n", "\n", "\n", "0.2\n", "\n", "\n", "0.4\n", "\n", "\n", "0\n", "\n", "\n", "5\n", "\n", "\n", "10\n", "\n", "\n", "15\n", "\n", "\n", "20\n", "\n", "\n", "N=20\n", "\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "-0.4\n", "\n", "\n", "-0.2\n", "\n", "\n", "0.0\n", "\n", "\n", "0.2\n", "\n", "\n", "0.4\n", "\n", "\n", "0\n", "\n", "\n", "10\n", "\n", "\n", "20\n", "\n", "\n", "30\n", "\n", "\n", "N=30\n", "\n", "\n", "\n", "\n" ] }, "execution_count": 35, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Fourier級数のFejer核のプロット\n", "\n", "Fejer(N,x) = 1/(N+1)*(sin(π*(N+1)*x)/sin(π*x))^2\n", "PP = []\n", "for N in [10; 20; 30]\n", " x = -0.5:0.001:0.5\n", " P = plot(x, Fejer.(N,x), title=\"N=$N\", titlefontsize=10)\n", " push!(PP, P)\n", "end\n", "plot(PP[1:3]..., size=(750, 150), legend=false, layout=@layout([a b c]))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Fourier級数のPoisson核\n", "\n", "$0\\leqq r<1$ に対する\n", "\n", "$$\n", "P_r(x) = \\sum_{n\\in\\Z} r^{|n|} e^{2\\pi inx} =\n", "\\frac{1-r^2}{1-2r\\cos(2\\pi x)+r^2}\n", "$$\n", "\n", "はFourier級数の**Poisson核**と呼ばれる. このとき, $P_r(x) > 0$ でかつ\n", "\n", "$$\n", "\\int_0^1 P_r(x)\\,dx = \\sum_{n\\in\\Z}r^{|n|}\\int_0^1 e^{2\\pi in}\\,dx = 1.\n", "$$\n", "\n", "$P_r(x)$ の最大値は $x=0$ のときの $\\ds\\frac{1+r}{1-r}$ であり, $\\ds\\frac{1+r}{1-r}\\leqq\\frac{2}{1-r}$.\n", "\n", "さらに, $-1/2\\leqq x\\leqq 1/2$ のとき, $\\cos(2\\pi x)\\leqq 1-8x^2$ となることより, \n", "\n", "$$\n", "P_r(x) \\leqq \n", "\\frac{2(1-r)}{1-2r(1-8x^2)+r^2} =\n", "\\frac{2(1-r)}{(1-r)^2+16x^2} \\leqq\n", "\\frac{1}{8}\\frac{1-r}{x^2}.\n", "$$\n", "\n", "ゆえにFourier級数のPoisson核は $t=1-r$ とおくことによってFourier級数の総和核とみなされる.\n", "\n" ] }, { "cell_type": "code", "execution_count": 36, "metadata": {}, "outputs": [ { "data": { "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", "-0.4\n", "\n", "\n", "-0.2\n", "\n", "\n", "0.0\n", "\n", "\n", "0.2\n", "\n", "\n", "0.4\n", "\n", "\n", "-1.0\n", "\n", "\n", "-0.5\n", "\n", "\n", "0.0\n", "\n", "\n", "0.5\n", "\n", "\n", "1.0\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "cos(2pi y)\n", "\n", "\n", "\n", "1 - 8y^2\n", "\n", "\n" ] }, "execution_count": 36, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x = -1/2:0.005:1/2\n", "f(x) = 1 - 8*x^2\n", "P = plot(size=(400,230), legend=:bottom)\n", "plot!(x, cos.(2π.*x), label=\"cos(2pi y)\")\n", "plot!(x, f.(x), label=\"1 - 8y^2\")" ] }, { "cell_type": "code", "execution_count": 37, "metadata": {}, "outputs": [ { "data": { "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", "-0.4\n", "\n", "\n", "-0.2\n", "\n", "\n", "0.0\n", "\n", "\n", "0.2\n", "\n", "\n", "0.4\n", "\n", "\n", "0\n", "\n", "\n", "2\n", "\n", "\n", "4\n", "\n", "\n", "6\n", "\n", "\n", "8\n", "\n", "\n", "r = 0.8\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "P_r(x)\n", "\n", "\n", "\n", "(1/8)(1-r)/x^2\n", "\n", "\n" ] }, "execution_count": 37, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Poisson(r,x) = (1-r^2)/(1-2r*cos(2π*x)+r^2)\n", "g(r,x) = 1/8*(1-r)/x^2\n", "x = -1/2:0.005:1/2\n", "r = 0.8\n", "plot(size=(400,230), ylim=(0, 1.01*(1+r)/(1-r)))\n", "plot!(title=\"r = $r\", titlefontsize=10)\n", "plot!(x, Poisson.(r, x), label=\"P_r(x)\")\n", "plot!(x, g.(r,x), label=\"(1/8)(1-r)/x^2\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**注意:** Fourier級数のPoisson核は本質的に絶対値が $1$ 未満の複素数 $z = re^{2\\pi ix}$ に関する次の等比級数の実部に等しい(正確に言えば実部の2倍から1を引いたものに等しい):\n", "\n", "$$\n", "1+z+z^2+z^3+\\cdots = \\frac{1}{1-z}.\n", "$$\n", "\n", "実際, \n", "\n", "$$\n", "\\frac{1}{1-z} = \\frac{1}{1-re^{2\\pi ix}} =\n", "\\frac{1-re^{-2\\pi ix}}{(1-re^{2\\pi ix})(1-re^{-2\\pi ix})} =\n", "\\frac{1-r\\cos(2\\pi x) + r\\sin(2\\pi x)}{1-2r\\cos(2\\pi x)+r^2}\n", "$$\n", "\n", "でかつ\n", "\n", "$$\n", "2\\frac{1-r\\cos(2\\pi x)}{1-2r\\cos(2\\pi x)+r^2}-1 = \n", "\\frac{1-r^2}{1-2r\\cos(2\\pi x)+r^2} = P_r(x).\n", "$$\n", "\n", "このようにFourier級数のPoisson核の理論は本質的に複素数の等比級数の理論である. $\\QED$" ] }, { "cell_type": "code", "execution_count": 38, "metadata": {}, "outputs": [ { "data": { "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", "-0.4\n", "\n", "\n", "-0.2\n", "\n", "\n", "0.0\n", "\n", "\n", "0.2\n", "\n", "\n", "0.4\n", "\n", "\n", "0.6\n", "\n", "\n", "0.8\n", "\n", "\n", "1.0\n", "\n", "\n", "1.2\n", "\n", "\n", "1.4\n", "\n", "\n", "1.6\n", "\n", "\n", "1.8\n", "\n", "\n", "r = 0.3\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "-0.4\n", "\n", "\n", "-0.2\n", "\n", "\n", "0.0\n", "\n", "\n", "0.2\n", "\n", "\n", "0.4\n", "\n", "\n", "0\n", "\n", "\n", "2\n", "\n", "\n", "4\n", "\n", "\n", "6\n", "\n", "\n", "8\n", "\n", "\n", "r = 0.8\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "-0.4\n", "\n", "\n", "-0.2\n", "\n", "\n", "0.0\n", "\n", "\n", "0.2\n", "\n", "\n", "0.4\n", "\n", "\n", "0\n", "\n", "\n", "5\n", "\n", "\n", "10\n", "\n", "\n", "15\n", "\n", "\n", "r = 0.9\n", "\n", "\n", "\n" ] }, "execution_count": 38, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Fourier級数のPoisson核のプロット\n", "\n", "Poisson(r,x) = (1-r^2)/(1-2r*cos(2π*x)+r^2)\n", "PP = []\n", "for r in [0.3; 0.8; 0.9]\n", " x = -0.5:0.001:0.5\n", " P = plot(x, Poisson.(r,x), title=\"r = $r\", titlefontsize=10)\n", " push!(PP, P)\n", "end\n", "plot(PP[1:3]..., size=(750, 150), legend=false, layout=@layout([a b c]))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Fourier級数のGauss核\n", "\n", "Fourier級数のGauss核を, Fourier変換のGauss核を周期的に足し上げて,\n", "\n", "$$\n", "G_t(x) = \\sum_{m\\in\\Z} \\frac{e^{-\\pi(x-m)^2/t}}{\\sqrt{t}} = \\sum_{n\\in\\Z} e^{-\\pi n^2 t + 2\\pi inx}.\n", "$$\n", "\n", "と定める. 後者の等号は後で示すPoissonの和公式より示される. Gauss核もFourier級数の総和核である." ] }, { "cell_type": "code", "execution_count": 39, "metadata": {}, "outputs": [ { "data": { "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", "-0.4\n", "\n", "\n", "-0.2\n", "\n", "\n", "0.0\n", "\n", "\n", "0.2\n", "\n", "\n", "0.4\n", "\n", "\n", "0\n", "\n", "\n", "1\n", "\n", "\n", "2\n", "\n", "\n", "3\n", "\n", "\n", "t = 0.1\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "-0.4\n", "\n", "\n", "-0.2\n", "\n", "\n", "0.0\n", "\n", "\n", "0.2\n", "\n", "\n", "0.4\n", "\n", "\n", "0.0\n", "\n", "\n", "2.5\n", "\n", "\n", "5.0\n", "\n", "\n", "7.5\n", "\n", "\n", "10.0\n", "\n", "\n", "t = 0.01\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "-0.4\n", "\n", "\n", "-0.2\n", "\n", "\n", "0.0\n", "\n", "\n", "0.2\n", "\n", "\n", "0.4\n", "\n", "\n", "0\n", "\n", "\n", "5\n", "\n", "\n", "10\n", "\n", "\n", "15\n", "\n", "\n", "t = 0.004\n", "\n", "\n", "\n" ] }, "execution_count": 39, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# Fourier級数のGauss核のプロット\n", "\n", "Gauss(t,x; N=100) = (1/√t)*sum(m->e^(-π*(x-m)^2/t), -N:N)\n", "PP = []\n", "for t in [0.1; 0.01; 0.004]\n", " x = -0.5:0.001:0.5\n", " P = plot(x, Gauss.(t,x), title=\"t = $t\", titlefontsize=10)\n", " push!(PP, P)\n", "end\n", "plot(PP[1:3]..., size=(750, 150), legend=false, layout=@layout([a b c]))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**注意:** Fourier級数のDirichlet核 $D_N(x)$, Fejér核 $F_N(x)$, Poisson核 $P_r(x)$, Gauss核 $G_t(x)$ はそれぞれ以下のようなFourier級数で表わされる:\n", "\n", "$$\n", "\\begin{alignedat}{3}\n", "D_N(x) &= \\sum_{n=-N}^N e^{2\\pi inx}\n", "& &=\n", "\\frac{\\sin(\\pi(2N+1)x)}{\\sin(\\pi x)},\n", "& &\n", "\\\\\n", "F_N(x) &= \\sum_{n=-N}^N \\left(1 - \\frac{|n|}{N+1}\\right) e^{2\\pi inx}\n", "& &=\n", "\\frac{1}{N+1}\\left(\\frac{\\sin(\\pi(N+1)x)}{\\sin(\\pi x)}\\right)^2,\n", "& &\n", "\\\\\n", "P_r(x) &= \\sum_{n\\in\\Z} e^{-\\alpha |n|} e^{2\\pi inx}\n", "& &=\n", "\\frac{1-r^2}{1-2r\\cos(2\\pi x)+r^2}\n", "& &\n", "\\quad (r=e^{-\\alpha}<1),\n", "\\\\\n", "G_t(x) &= \\sum_{n\\in\\Z} e^{-\\pi tn^2} e^{2\\pi inx}\n", "& &=\n", "\\sum_{m\\in\\Z} \\frac{e^{-\\pi(x-m)^2/t}}{\\sqrt{t}}\n", "& &\n", "\\quad (t>0).\n", "\\end{alignedat}\n", "$$\n", "\n", "$n=0$ を中心に上下対象に適当に重みを付けて足し上げている. 足し上げる範囲で同じ重みにするとDirichlet核になり, $n$ の絶対値に比例して重みを減少させるとFejér核になり, $n$ の絶対値の負の定数倍の指数函数で重みを減少させるとPoisson核になり, $n$ の2乗の負の定数倍の指数函数で重みを減少させるとGauss核になる. もちろん, これら以外にもたくさんの変種を考えることができる. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 三角函数へのFourier級数論の応用" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### cosecとcotの部分分数展開\n", "\n", "整数ではない実数 $t$ に対して, $-1/2\\leqq x < 1/2$ 上の函数 $f(x)$ を\n", "\n", "$$\n", "f(x) = e^{2\\pi itx} \\qquad (-1/2\\leqq x < 1/2)\n", "$$\n", "\n", "と定め, 周期 $1$ で $\\R$ 上の函数に拡張したものを $f(x)$ と書くことにする.\n", "\n", "このとき, $f(x)$ のFourier係数は次のように計算される:\n", "\n", "$$\n", "\\begin{aligned}\n", "a_n(f) = \\int_{-1/2}^{1/2} e^{2\\pi itx}e^{-2\\pi nx}\\,dx = \n", "\\left[\\frac{e^{2\\pi i(t-n)x}}{2\\pi i(t-n)}\\right]_{x=-1/2}^{x=1/2} =\n", "\\frac{\\sin(\\pi(t-n))}{\\pi(t-n)} =\n", "(-1)^n\\frac{\\sin(\\pi t)}{\\pi(t-n)}.\n", "\\end{aligned}\n", "$$\n", "\n", "したがって, $-1/20$ となり, さらに $\\log x$ が上に凸な函数であることより, $a_n$ が単調減少することがわかる. $\\log x$ の導函数 $1/x$ は $x\\to\\infty$ で $0$ に収束することから $a_n\\to 0$ となることもわかる. ゆえに $a_n$ 達から作られる交代級数は収束する. そして, そのとき,\n", "\n", "$$\n", "\\log k = \\int_{k-1/2}^{k+1/2} \\log x\\,dx + a_{2k-1} - a_{2k}\n", "$$\n", "\n", "なので\n", "\n", "$$\n", "\\begin{aligned}\n", "\\log n! &= \\sum_{k=1}^n \\log k =\n", "\\frac{1}{2}\\log 1 + \\int_1^n \\log x\\,dx + \\frac{1}{2}\\log n+ \\sum_{j=2}^{2n-1} (-1)^{j-1}a_j \n", "\\\\ &=\n", "n\\log n - n + 1 + \\frac{1}{2}\\log n + \\sum_{j=2}^{2n-1} (-1)^{j-1}a_j.\n", "\\end{aligned}\n", "$$\n", "\n", "ゆえに $\\ds c_n = 1 + \\sum_{j=2}^{2n-1} (-1)^{j-1}a_j$ とおくと, \n", "\n", "$$\n", "\\log n! = n\\log n - n + \\frac{1}{2}\\log n + c_n.\n", "$$\n", "\n", "$c_n$ は上で述べたことより, 収束する交代級数として, $n\\to\\infty$ で収束する. その収束先 $c$ を求めよう. Wallisの公式\n", "\n", "$$\n", "\\frac{(2n)!}{2^{2n}(n!)^2} \\sim \\frac{1}{\\sqrt{n\\pi}}\n", "$$\n", "\n", "に $(2n)!=(2n)^{2n}e^{-2n}\\sqrt{2n}\\;e^{c_{2n}}$, $n!=n^n e^{-n}\\sqrt{n}\\;e^{c_n}$ を代入すると\n", "\n", "$$\n", "\\frac{1}{\\sqrt{n\\pi}} \\sim\n", "\\frac{(2n)!}{2^{2n}(n!)^2} = \n", "\\frac\n", "{(2n)^{2n}e^{-2n}\\sqrt{2n}\\;e^{c_{2n}}}\n", "{2^{2n}n^{2n} e^{-2n} n\\,e^{2c_n}} =\n", "\\sqrt{\\frac{2}{n}}\\;e^{c_{2n}-2c_n}\n", "$$\n", "\n", "なので, 両辺を $\\ds \\sqrt{\\frac{2}{n}}$ で割って, $n\\to\\infty$ とすると,\n", "\n", "$$\n", "e^{-c} = \\frac{1}{\\sqrt{2\\pi}}.\n", "$$\n", "\n", "すなわち, $c=\\log\\sqrt{2\\pi}$ であることがわかった. これで, Stirlingの公式($*$)が証明された. " ] }, { "cell_type": "code", "execution_count": 40, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(2.5066284835166988, 2.5066282746310002)" ] }, "execution_count": 40, "metadata": {}, "output_type": "execute_result" } ], "source": [ "n = big\"1000000\"\n", "Float64(factorial(n)/(n^n*e^(-n)*√n)), √(2π)" ] }, { "cell_type": "code", "execution_count": 41, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "\\begin{bmatrix}\\pi\\\\\\frac{2 \\pi}{3} \\sqrt{3}\\\\\\sqrt{2} \\pi\\\\\\frac{2 \\sqrt{2} \\pi}{\\sqrt{- \\sqrt{5} + 5}}\\\\2 \\pi\\end{bmatrix}" ], "text/plain": [ "5-element Array{SymPy.Sym,1}:\n", " pi\n", " 2*sqrt(3)*pi/3\n", " sqrt(2)*pi\n", " 2*sqrt(2)*pi/sqrt(-sqrt(5) + 5)\n", " 2*pi" ] }, "execution_count": 41, "metadata": {}, "output_type": "execute_result" } ], "source": [ "u = symbols(\"u\", positive=true)\n", "[integrate(k/(1+u^k), (u, 0, oo)) for k in 2:6]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### ゼータ函数の正の偶数での特殊値" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**問題:** $\\sin$ の無限乗積展開を用いて, $\\ds\\zeta(2)=\\sum_{n=1}^\\infty \\frac{1}{n^2}$ を求めよ.\n", "\n", "**解答例:** $\\sin$ のMaclaurin展開を使うと, \n", "\n", "$$\n", "\\frac{\\sin(\\pi x)}{\\pi x} = 1 - \\frac{\\pi^2}{6}x^2 + O(x^4).\n", "$$\n", "\n", "$\\sin$ の無限乗積展開を使うと, \n", "\n", "$$\n", "\\frac{\\sin(\\pi x)}{\\pi x} = 1 - \\left(\\sum_{n=1}^\\infty \\frac{1}{n^2}\\right)x^2 + O(x^4).\n", "$$\n", "\n", "これらを比較すると,\n", "\n", "$$\n", "\\zeta(2) = \\sum_{n=1}^\\infty \\frac{1}{n^2} = \\frac{\\pi^2}{6}.\n", "\\qquad\\QED\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**問題:** $\\sin$ の無限乗積展開を用いて, $\\ds\\zeta(4)=\\sum_{n=1}^\\infty \\frac{1}{n^4}$ を求めよ.\n", "\n", "**解答例:** $\\sin$ のMaclaurin展開を使うと,\n", "\n", "$$\n", "\\begin{aligned}\n", "\\frac{\\sin(\\pi x)}{\\pi x}\\frac{\\sin(\\pi i x)}{\\pi(ix)} &=\n", "\\left(1 - \\frac{\\pi^2}{6}x^2 + \\frac{\\pi^4}{120}x^4 + O(x^6)\\right)\n", "\\left(1 + \\frac{\\pi^2}{6}x^2 + \\frac{\\pi^4}{120}x^4 + O(x^6)\\right) \n", "\\\\ &=\n", "1 - \\frac{\\pi^4}{90}x^4 + O(x^6).\n", "\\end{aligned}\n", "$$\n", "\n", "$\\sin$ の無限乗積展開を使うと,\n", "\n", "$$\n", "\\begin{aligned}\n", "\\frac{\\sin(\\pi x)}{\\pi x}\\frac{\\sin(\\pi i x)}{\\pi(ix)} &=\n", "\\prod_{n=1}^\\infty\\left(1-\\frac{x^2}{n^2}\\right)\n", "\\prod_{n=1}^\\infty\\left(1+\\frac{x^2}{n^2}\\right) =\n", "\\prod_{n=1}^\\infty\\left(1-\\frac{x^4}{n^4}\\right)\n", "\\\\ &=\n", "1 - \\left(\\sum_{n=1}^\\infty\\frac{1}{n^4}\\right)x^4 + O(x^8).\n", "\\end{aligned}\n", "$$\n", "\n", "これらを比較すると,\n", "\n", "$$\n", "\\zeta(4) = \\sum_{n=1}^\\infty \\frac{1}{n^4} = \\frac{\\pi^4}{90}.\n", "\\qquad\\QED\n", "$$" ] }, { "cell_type": "code", "execution_count": 42, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$$1 - \\frac{\\pi^{2} x^{2}}{6} + \\frac{\\pi^{4} x^{4}}{120} - \\frac{\\pi^{6} x^{6}}{5040} + \\frac{\\pi^{8} x^{8}}{362880} + \\mathcal{O}\\left(x^{10}\\right)$$" ], "text/plain": [ " 2 2 4 4 6 6 8 8 \n", " pi *x pi *x pi *x pi *x / 10\\\n", "1 - ------ + ------ - ------ + ------ + O\\x /\n", " 6 120 5040 362880 " ] }, "execution_count": 42, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x = symbols(\"x\")\n", "f(x) = sin(π*x)/(π*x)\n", "series(f(x), x, n=10)" ] }, { "cell_type": "code", "execution_count": 43, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$$1 - \\frac{\\pi^{4} x^{4}}{90} + \\frac{\\pi^{8} x^{8}}{113400} + \\mathcal{O}\\left(x^{12}\\right)$$" ], "text/plain": [ " 4 4 8 8 \n", " pi *x pi *x / 12\\\n", "1 - ------ + ------ + O\\x /\n", " 90 113400 " ] }, "execution_count": 43, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x = symbols(\"x\")\n", "f(x) = sin(π*x)/(π*x)\n", "series(f(x)*f(im*x), x, n=12)" ] }, { "cell_type": "code", "execution_count": 44, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$$1 - \\frac{\\pi^{8} x^{8}}{9450} + \\frac{59 \\pi^{16}}{1302566265000} x^{16} + \\mathcal{O}\\left(x^{24}\\right)$$" ], "text/plain": [ " 8 8 16 16 \n", " pi *x 59*pi *x / 24\\\n", "1 - ------ + ------------- + O\\x /\n", " 9450 1302566265000 " ] }, "execution_count": 44, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x = symbols(\"x\")\n", "f(x) = sin(π*x)/(π*x)\n", "ω = exp(im*Sym(π)/4)\n", "series(f(x)*f(ω*x)*f(ω^2*x)*f(ω^3*x), x, n=24)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**注意:** 上のセルの計算結果を使うと, $\\ds\\zeta(8)=\\frac{\\pi^8}{9450}$ を示せる. $\\QED$" ] }, { "cell_type": "code", "execution_count": 45, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " 12.561860 seconds (22.37 k allocations: 1.155 MiB)\n" ] }, { "data": { "text/latex": [ "$$1 - \\frac{3617 \\pi^{16}}{325641566250} x^{16} + \\frac{67323341 \\pi^{32}}{35708697469155623547009375000} x^{32} + \\mathcal{O}\\left(x^{48}\\right)$$" ], "text/plain": [ " 16 16 32 32 \n", " 3617*pi *x 67323341*pi *x / 48\\\n", "1 - ------------- + ----------------------------- + O\\x /\n", " 325641566250 35708697469155623547009375000 " ] }, "execution_count": 45, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x = symbols(\"x\")\n", "f(x) = sin(π*x)/(π*x)\n", "ω = exp(im*Sym(π)/8)\n", "@time series(prod(f(ω^k*x) for k in 0:7), x, n=48)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**注意:** 上のセルの計算結果を使うと, $\\ds\\zeta(16)=\\frac{3617\\pi^{16}}{325641566250}$ を示せる. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**注意:** より一般に\n", "\n", "$$\n", "\\zeta(2k) = \\sum_{n=1}^\\infty \\frac{1}{n^{2k}} = \\frac{2^{2k-1}(-1)^{k-1}B_{2k}}{(2k)!}\\pi^{2k}\n", "$$\n", "\n", "を示せる. 実は $\\sin$ の無限乗積展開を用いるよりも, $\\cot$ の部分分数展開を用いた方がこの公式を得ることは易しい(少し下の方にある問題の解答例を見よ). ここで, $B_n$ は次のように定義されるBernoulli数である:\n", "\n", "$$\n", "\\frac{z}{e^z-1} = \\sum_{n=0}^\\infty B_n\\frac{z^n}{n!}.\n", "$$\n", "\n", "$n$ が $3$ 以上の奇数ならば $B_n=0$ となり, 例えば, \n", "\n", "$$\n", "\\begin{aligned}\n", "&\n", "B_0 = 1, \\ \n", "B_1 = -1/2, \\\\ & \n", "B_2 = \\frac{1}{6}, \\ \n", "B_4 = -\\frac{1}{30}, \\ \n", "B_6 = \\frac{1}{42}, \\ \n", "B_8 = -\\frac{1}{30}, \\\\ &\n", "B_{10} = \\frac{5}{66}, \\\n", "B_{12} = -\\frac{691}{2730}, \\ \n", "B_{14} = \\frac{7}{6}, \\ \n", "B_{16} = -\\frac{3617}{510}, \\ \n", "\\ldots\n", "\\end{aligned}\n", "$$\n", "\n", "これより, \n", "\n", "$$\n", "\\begin{aligned}\n", "&\n", "\\zeta(2) = \\frac{2(1/6)}{2!}\\pi^2 = \\frac{\\pi^2}{6}, \n", "\\\\ &\n", "\\zeta(4) = \\frac{2^2(1/30)}{4!}\\pi^4 = \\frac{\\pi^4}{90}, \n", "\\\\ &\n", "\\zeta(6) = \\frac{2^3(1/42)}{6!}\\pi^6 = \\frac{\\pi^6}{945}, \n", "\\\\ &\n", "\\zeta(8) = \\frac{2^4(1/30)}{8!}\\pi^8 = \\frac{\\pi^8}{9450}, \n", "\\\\ &\n", "\\zeta(10) = \\frac{2^5(5/66)}{10!}\\pi^8 = \\frac{\\pi^{10}}{93555}, \n", "\\\\ &\n", "\\zeta(12) = \\frac{2^6(691/2730)}{12!}\\pi^8 = \\frac{691 \\pi^{12}}{638512875}, \n", "\\\\ &\n", "\\zeta(14) = \\frac{2^7(7/6)}{14!}\\pi^8 = \\frac{2 \\pi^{14}}{18243225}, \n", "\\\\ &\n", "\\zeta(16) = \\frac{2^8(3617/510)}{16!}\\pi^{16} = \\frac{3617\\pi^{16}}{325641566250}, \\ \\ldots\n", "\\end{aligned}\n", "$$" ] }, { "cell_type": "code", "execution_count": 46, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "\\begin{bmatrix}1\\\\- \\frac{1}{2}\\\\\\frac{1}{6}\\\\0\\\\- \\frac{1}{30}\\\\0\\\\\\frac{1}{42}\\\\0\\\\- \\frac{1}{30}\\end{bmatrix}" ], "text/plain": [ "9-element Array{SymPy.Sym,1}:\n", " 1\n", " -1/2\n", " 1/6\n", " 0\n", " -1/30\n", " 0\n", " 1/42\n", " 0\n", " -1/30" ] }, "execution_count": 46, "metadata": {}, "output_type": "execute_result" } ], "source": [ "BernoulliNumber(n) = sympy[:bernoulli](n)\n", "[BernoulliNumber(n) for n in 0:8]" ] }, { "cell_type": "code", "execution_count": 47, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "\\begin{bmatrix}\\frac{1}{6}\\\\- \\frac{1}{30}\\\\\\frac{1}{42}\\\\- \\frac{1}{30}\\\\\\frac{5}{66}\\\\- \\frac{691}{2730}\\\\\\frac{7}{6}\\\\- \\frac{3617}{510}\\end{bmatrix}" ], "text/plain": [ "8-element Array{SymPy.Sym,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": 47, "metadata": {}, "output_type": "execute_result" } ], "source": [ "BernoulliNumber(n) = sympy[:bernoulli](n)\n", "B = [BernoulliNumber(2k) for k in 1:8]" ] }, { "cell_type": "code", "execution_count": 48, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "\\begin{bmatrix}\\frac{\\pi^{2}}{6}\\\\\\frac{\\pi^{4}}{90}\\\\\\frac{\\pi^{6}}{945}\\\\\\frac{\\pi^{8}}{9450}\\\\\\frac{\\pi^{10}}{93555}\\\\\\frac{691 \\pi^{12}}{638512875}\\\\\\frac{2 \\pi^{14}}{18243225}\\\\\\frac{3617 \\pi^{16}}{325641566250}\\end{bmatrix}" ], "text/plain": [ "8-element Array{SymPy.Sym,1}:\n", " pi^2/6\n", " pi^4/90\n", " pi^6/945\n", " pi^8/9450\n", " pi^10/93555\n", " 691*pi^12/638512875\n", " 2*pi^14/18243225\n", " 3617*pi^16/325641566250" ] }, "execution_count": 48, "metadata": {}, "output_type": "execute_result" } ], "source": [ "BernoulliNumber(n) = sympy[:bernoulli](n)\n", "Z = [2^(2k-1)*(-1)^(k-1)*BernoulliNumber(2k)*PI^(2k)/factorial(2k) for k in 1:8]" ] }, { "cell_type": "code", "execution_count": 49, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "\\begin{bmatrix}\\frac{\\pi^{2}}{6}\\\\\\frac{\\pi^{4}}{90}\\\\\\frac{\\pi^{6}}{945}\\\\\\frac{\\pi^{8}}{9450}\\\\\\frac{\\pi^{10}}{93555}\\\\\\frac{691 \\pi^{12}}{638512875}\\\\\\frac{2 \\pi^{14}}{18243225}\\\\\\frac{3617 \\pi^{16}}{325641566250}\\end{bmatrix}" ], "text/plain": [ "8-element Array{SymPy.Sym,1}:\n", " pi^2/6\n", " pi^4/90\n", " pi^6/945\n", " pi^8/9450\n", " pi^10/93555\n", " 691*pi^12/638512875\n", " 2*pi^14/18243225\n", " 3617*pi^16/325641566250" ] }, "execution_count": 49, "metadata": {}, "output_type": "execute_result" } ], "source": [ "[zeta(Sym(2k)) for k in 1:8]" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**問題:** $\\pi z\\cot(\\pi z)$ の部分分数展開と $\\pi z\\cot(\\pi z)$ のMaclaurine展開を比較して, $k=1,2,\\ldots$ に対する $\\zeta(2k)$ の値をBernoulli数で表す公式を得よ.\n", "\n", "**解答例:** $\\pi\\cot(\\pi t)$ の部分分数展開の公式より,\n", "\n", "$$\n", "\\pi z\\cot(\\pi z) = \n", "1 + z\\sum_{n=1}^\\infty\\left(\\frac{z}{z-n} + \\frac{z}{z+n}\\right) =\n", "1 + 2\\sum_{n=1}^\\infty\\frac{z^2}{z^2-n^2}.\n", "$$\n", "\n", "そして,\n", "\n", "$$\n", "\\frac{z^2}{z^2-n^2} = -\\frac{z^2/n^2}{1-z^2/n^2} = -\\sum_{k=1}^\\infty \\frac{z^{2k}}{n^{2k}}\n", "$$\n", "\n", "なので,\n", "\n", "$$\n", "\\pi z\\cot(\\pi z) = \n", "1 - 2\\sum_{k=1}^\\infty\\left(\\sum_{n=1}^\\infty\\frac{1}{n^{2k}}\\right)z^{2k} =\n", "1 - 2\\sum_{k=1}^\\infty \\zeta(2k)z^{2k}.\n", "$$\n", "\n", "一方, $x\\cot x$ のMaclaurin展開が\n", "\n", "$$\n", "x\\cot x = \\sum_{k=0}^\\infty (-1)^k\\frac{2^{2k}B_{2k}}{(2k)!}x^{2k} =\n", "1 - 2\\sum_{k=0}^\\infty \\frac{2^{2k-1}(-1)^{k-1} B_{2k}}{(2k)!}x^{2k}\n", "$$\n", "\n", "であることより(これを $B_{2k}$ の定義だと思ってもよい), $x=\\pi z$ を代入すると, \n", "\n", "$$\n", "\\pi z\\cot(\\pi z) = 1 - 2\\sum_{k=0}^\\infty \\frac{2^{2k-1}(-1)^{k-1} B_{2k}}{(2k)!}\\pi^{2k}z^{2k}.\n", "$$\n", "\n", "以上を比較すると, \n", "\n", "$$\n", "\\zeta(2k) = \\frac{2^{2k-1}(-1)^{k-1} B_{2k}}{(2k)!}\\pi^{2k}\n", "\\qquad(k=1,2,3,\\ldots)\n", "$$\n", "\n", "が得られる. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Lobachevskyの公式\n", "\n", "この節の内容は\n", "\n", "* Hassan Jolany, An extension of Lobachevsky formula, 2017 (arXiv版)\n", "\n", "の第2節の引き写しである. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$\\pi\\cosec(\\pi t) = \\pi/\\sin(\\pi t)$ の部分分数展開の公式に $t=x/\\pi$ を代入すると,\n", "\n", "$$\n", "\\frac{1}{\\sin x} = \n", "\\frac{1}{x} + \n", "\\sum_{k=1}^\\infty(-1)^k\\left(\\frac{1}{x-k\\pi}+\\frac{1}{x+k\\pi}\\right).\n", "$$\n", "\n", "$\\pi\\cot(\\pi t)$ の部分分数展開の公式に $t=x/\\pi$ を代入すると,\n", "\n", "$$\n", "\\cot(x) =\n", "\\frac{1}{x} + \n", "\\sum_{k=1}^\\infty\\left(\\frac{1}{x-k\\pi} + \\frac{1}{x+k\\pi}\\right).\n", "$$\n", "\n", "これの両辺に $-d/dx$ を作用させると, \n", "\n", "$$\n", "\\frac{1}{\\sin^2 x} =\n", "\\frac{1}{x^2} +\n", "\\sum_{k=1}^\\infty\\left(\\frac{1}{(x-k\\pi)^2} + \\frac{1}{(x+k\\pi)^2}\\right).\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Lobachevskyの公式:** $f$ は\n", "\n", "$$\n", "f(x+\\pi) = f(x)\\, \\quad f(\\pi-x)=f(x)\n", "$$\n", "\n", "を満たす $\\R$ 上の連続函数であると仮定する. このとき,\n", "\n", "$$\n", "\\int_0^\\infty \\frac{\\sin^2 x}{x^2} f(x)\\,dx =\n", "\\int_0^\\infty \\frac{\\sin x}{x} f(x)\\,dx =\n", "\\int_0^{\\pi/2} f(x)\\,dx.\n", "$$\n", "\n", "**注意:** 特に $f(x)=1$ のとき,\n", "\n", "$$\n", "\\int_0^\\infty \\frac{\\sin^2 x}{x^2}\\,dx =\n", "\\int_0^\\infty \\frac{\\sin x}{x}\\,dx =\n", "\\frac{\\pi}{2}\n", "$$\n", "\n", "なので, Lobachevskyの公式はDirichlet積分の公式の一般化になっている.\n", "\n", "**証明:** $0$ から $\\infty$ のあいだを長さ $\\pi/2$ の区間で区切って整理し直して, $1/\\sin x$ と $1/\\sin^2 x$ の部分分数展開を使えばこの公式が得られる. 詳しい計算の手順は以下の通り.\n", "\n", "整数 $k$ に対して, $f(x+\\pi)=f(x)$, $f(\\pi-x)=f(x)$ という仮定より,\n", "\n", "$$\n", "\\begin{aligned}\n", "&\n", "\\int_{(2k-1)\\pi/2}^{2k\\pi/2} \\frac{\\sin x}{x}f(x)\\,dx =\n", "(-1)^k \\int_0^{\\pi/2} \\frac{\\sin(-x)}{-x+k\\pi}f(x)\\,dx =\n", "(-1)^k \\int_0^{\\pi/2} \\frac{\\sin x}{x-k\\pi}f(x)\\,dx,\n", "\\\\ &\n", "\\int_{2k\\pi/2}^{(2k+1)\\pi/2} \\frac{\\sin x}{x}f(x)\\,dx =\n", "(-1)^k \\int_0^{\\pi/2} \\frac{\\sin x}{x+k\\pi}f(x)\\,dx.\n", "\\end{aligned}\n", "$$\n", "\n", "ゆえに,\n", "\n", "$$\n", "\\begin{aligned}\n", "\\int_0^\\infty \\frac{\\sin x}{x} f(x)\\,dx &=\n", "\\sum_{n=0}^\\infty\\int_{n\\pi/2}{(n+1)\\pi/2} \\frac{\\sin x}{x} f(x)\\,dx\n", "\\\\ &=\n", "\\int_0^{\\pi/2}\\frac{\\sin x}{x} f(x)\\,dx +\n", "\\sum_{k=1}^\\infty(-1)^k\\int_0^{\\pi/2}\n", "\\left(\\frac{\\sin x}{x-k\\pi}+\\frac{\\sin x}{x+k\\pi}\\right)f(x)\\,dx\n", "\\\\ &=\n", "\\int_0^{\\pi/2}\\sin x\n", "\\left[\n", "\\frac{1}{x} +\n", "\\sum_{k=1}^\\infty(-1)^k\\left(\\frac{1}{x-k\\pi}+\\frac{1}{x+k\\pi}\\right)\n", "\\right]\n", "f(x)\\,dx\n", "\\\\ &=\n", "\\int_0^{\\pi/2} \\sin x \\frac{1}{\\sin x} f(x)\\,dx =\n", "\\int_0^{\\pi/2} f(x)\\,dx.\n", "\\end{aligned}\n", "$$\n", "\n", "終わりから2番目の等号で $1/\\sin x$ の部分分数展開を使った.\n", "\n", "整数 $k$ に対して, $f(x+\\pi)=f(x)$, $f(\\pi-x)=f(x)$ という仮定より,\n", "\n", "$$\n", "\\begin{aligned}\n", "&\n", "\\int_{(2k-1)\\pi/2}^{2k\\pi/2} \\frac{\\sin^2 x}{x^2}f(x)\\,dx =\n", "\\int_0^{\\pi/2} \\frac{\\sin^2(-x)}{(-x+k\\pi)^2}f(x)\\,dx =\n", "\\int_0^{\\pi/2} \\frac{\\sin^2 x}{(x-k\\pi)^2}f(x)\\,dx,\n", "\\\\ &\n", "\\int_{2k\\pi/2}^{(2k+1)\\pi/2} \\frac{\\sin^2 x}{x^2}f(x)\\,dx =\n", "\\int_0^{\\pi/2} \\frac{\\sin^2 x}{(x+k\\pi)^2}f(x)\\,dx.\n", "\\end{aligned}\n", "$$\n", "\n", "ゆえに,\n", "\n", "$$\n", "\\begin{aligned}\n", "\\int_0^\\infty \\frac{\\sin^2 x}{x^2} f(x)\\,dx &=\n", "\\sum_{n=0}^\\infty\\int_{n\\pi/2}{(n+1)\\pi/2} \\frac{\\sin^2 x}{x^2} f(x)\\,dx\n", "\\\\ &=\n", "\\int_0^{\\pi/2}\\frac{\\sin x^2}{x^2} f(x)\\,dx +\n", "\\sum_{k=1}^\\infty \\int_0^{\\pi/2}\n", "\\left(\\frac{\\sin^2 x}{(x-k\\pi)^2}+\\frac{\\sin^2 x}{(x+k\\pi)^2}\\right)f(x)\\,dx\n", "\\\\ &=\n", "\\int_0^{\\pi/2}\\sin^2 x\n", "\\left[\n", "\\frac{1}{x^2} +\n", "\\sum_{k=1}^\\infty\\left(\\frac{1}{(x-k\\pi)^2}+\\frac{1}{(x+k\\pi)^2}\\right)\n", "\\right]\n", "f(x)\\,dx\n", "\\\\ &=\n", "\\int_0^{\\pi/2} \\sin^2 x \\frac{1}{\\sin^2 x} f(x)\\,dx =\n", "\\int_0^{\\pi/2} f(x)\\,dx.\n", "\\end{aligned}\n", "$$\n", "\n", "終わりから2番目の等号で $1/\\sin^2 x$ の部分分数展開を使った. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Poissonの和公式" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Poissonの和公式とその証明\n", "\n", "Fourier級数の収束とFourier変換の定義から, **Poissonの和公式**が得られることを説明しよう." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**定義(急減少函数):** $\\R$ 上の $C^\\infty$ 函数 $f$ で, 任意の非負の整数 $m,n$ に対して, $|x|\\to\\infty$ のとき $f^{(m)}(x)x^n\\to 0$ となるものを**急減少函数**と呼ぶ. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**定理(Poissonの和公式)** $f$ は $\\R$ 上の急減少函数であると仮定する. このとき, 次の公式が成立している:\n", "\n", "$$\n", "\\sum_{m\\in\\Z} f(m) = \\sum_{n\\in\\Z} \\hat{f}(n)\n", "$$\n", "\n", "**略証:** $\\ds g(x) = \\sum_{m\\in\\Z} f(x+m)$ とおくと, $g(x)$ は周期 $1$ を持つ $C^\\infty$ 函数になる. ゆえに,\n", "\n", "$$\n", "g(x) = \\sum_{n\\in\\Z} a_n(g)e^{2\\pi inx} \\quad (x\\in \\R).\n", "$$\n", "\n", "そして, \n", "\n", "$$\n", "\\begin{aligned}\n", "a_n(g) &= \\int_0^1 \\sum_{m\\in\\Z}f(x+m)e^{-2\\pi inx}\\,dx =\n", "\\sum_{m\\in\\Z} \\int_0^1 f(x+m)e^{-2\\pi inx}\\,dx \n", "\\\\ &=\n", "\\sum_{m\\in\\Z} \\int_m^{m+1} f(x)e^{-2\\pi inx}\\,dx =\n", "\\int_{-\\infty}^\\infty f(x)e^{-2\\pi inx}\\,dx = \\hat{f}(n).\n", "\\end{aligned}\n", "$$\n", "\n", "以上をまとめると,\n", "\n", "$$\n", "g(x) = \\sum_{m\\in\\Z} f(x+m) = \\sum_{n\\in\\Z} \\hat{f}(n)e^{2\\pi inx} \\quad (x\\in\\R).\n", "$$\n", "\n", "この等式で $x=0$ をおけば欲しい公式が得られる. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Theta zero value Θ(t) のモジュラー変換性\n", "\n", "**問題:** $t>0$ に対して, 次の公式を示せ:\n", "\n", "$$\n", "\\sum_{m\\in\\Z} \\frac{e^{-\\pi(x-m)^2/t}}{\\sqrt{t}} = \\sum_{n\\in\\Z} e^{-\\pi n^2 t + 2\\pi inx}.\n", "$$\n", "\n", "**注意:** この問題の左辺と右辺は楕円テータ函数と呼ばれる特殊函数の特別な場合になっている. 左辺は熱方程式の基本解を周期函数になるように足し上げたものになっている. そのことから, この公式の両辺は周期境界条件のもとでの熱方程式の基本解になっていることがわかる. 楕円テータ函数については\n", "\n", "* David Mumford, Tata Lectures on Theta I, Reprint of the 1983 Edition\n", "\n", "が非常に面白くてかつ読み易い教科書であり, 論文などでもよく引用されている. $\\QED$\n", "\n", "**解答例:** $\\ds f(x)=\\frac{e^{-\\pi x^2/t}}{\\sqrt{t}}$ とおくと, $f(x)$ が偶函数であることと, Poissonの和公式の証明より,\n", "\n", "$$\n", "\\sum_{m\\in\\Z} \\frac{e^{-\\pi(x-m)^2/t}}{\\sqrt{t}} =\n", "\\sum_{m\\in\\Z}f(x-m)=\\sum_{m\\in\\Z}f(x+m)=\\sum_{n\\in\\Z}\\hat{f}(n)e^{2\\pi inx}.\n", "$$\n", "\n", "そして, 公式\n", "\n", "$$\n", "\\int_{-\\infty}^\\infty e^{-y^2/a}e^{-ipy}\\,dy = \\sqrt{\\pi a}e^{-ap^2/4}\n", "$$\n", "\n", "より, $x=y/(2\\pi)$ とおくと, \n", "\n", "$$\n", "\\hat{f}(n) = \\int_{-\\infty}^\\infty \\frac{e^{-\\pi x^2/t}}{\\sqrt{t}} e^{-2\\pi inx}\\,dx =\n", "\\int_{-\\infty}^\\infty \\frac{e^{-y^2/(4\\pi t)}}{\\sqrt{t}} e^{-iny}\\,\\frac{dy}{2\\pi} =\n", "\\frac{\\sqrt{4\\pi t\\,\\pi}}{2\\pi\\sqrt{t}}e^{-4\\pi t n^2/4} =\n", "e^{-\\pi n^2 t}.\n", "$$\n", "\n", "以上をまとめると示したい公式が得られる. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**問題(Theta zero value のモジュラー変換性):** $t>0$ に対して, $\\ds \\Theta(t)=\\sum_{n\\in\\Z} e^{-\\pi n^2 t} = 1 + 2\\sum_{n=1}^\\infty e^{-\\pi n^2 t}$ とおくと, \n", "\n", "$$\n", "\\Theta(t) = \\frac{1}{\\sqrt{t}}\\Theta\\left(\\frac{1}{t}\\right)\n", "\\quad\\text{すなわち}\\quad\n", "\\Theta\\left(\\frac{1}{t}\\right) = \\sqrt{t}\\;\\Theta(t)\n", "$$\n", "\n", "が成立することを示せ. この結果を $\\Theta(t)$ の**モジュラー変換性**と呼ぶ.\n", "\n", "**注意:** $\\Theta(t)$ の定義式を見ると, $t>0$ が大きなときに $\\Theta(t)$ がほぼ $1$ になることはすぐに確認できるが, $t>0$ が小さいときにはどのような様子になっているかはよくわからない. しかし, モジュラー変換性を使うと, $\\Theta(t)$ は, $t>0$ が小さいときにはほぼ $\\ds\\frac{1}{\\sqrt{t}}$ に等しいことがわかる. このようにモジュラー変換性は「よくわからない量」を「よくわかる量」に関係付ける公式である. $\\QED$\n", "\n", "**注意:** 超弦理論共形場理論ではモジュラー変換性が重要な意味を持つ. $\\QED$\n", "\n", "**注意:** 上の問題の公式はRiemannのゼータ函数の函数等式を証明するときに使われる. 上の問題の結果は楕円テータ函数のモジュラー変換性の特別な場合になっている. モジュラー変換性を持つ函数は数論的にも極めて重要な数学的対象である. $\\QED$\n", "\n", "**解答例1:** $\\ds f(x)=\\frac{e^{-\\pi x^2/t}}{\\sqrt{t}}$ にPoissonの和公式を適用すればこの公式が得られる. すなわち, 上の問題の結果で $x=0$ とおけば示したい公式が得られる. $\\QED$\n", "\n", "**解答例2:** $f(x)=e^{-\\pi tx^2}$ について $\\ds\\hat{f}(p) = \\frac{e^{-\\pi p^2/t}}{\\sqrt{t}}$ なので, Poissonの和公式より, 示したい公式が得られる. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**問題:** 上の問題の結論を $\\Theta(t)$ と $\\ds\\frac{1}{\\sqrt{t}}\\Theta\\left(\\frac{1}{t}\\right)$ のグラフを重ねてプロットすることによって確認せよ. 2つのグラフはぴったり重なるはずである. $\\QED$\n", "\n", "次のセルを見よ." ] }, { "cell_type": "code", "execution_count": 50, "metadata": {}, "outputs": [ { "data": { "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", "0.5\n", "\n", "\n", "1.0\n", "\n", "\n", "1.5\n", "\n", "\n", "2.0\n", "\n", "\n", "1.2\n", "\n", "\n", "1.5\n", "\n", "\n", "1.8\n", "\n", "\n", "2.1\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "Theta(t)\n", "\n", "\n", "\n", "(1/sqrt(t)) Theta(1/t)\n", "\n", "\n" ] }, "execution_count": 50, "metadata": {}, "output_type": "execute_result" } ], "source": [ "Theta(t; N=20) = iszero(N) ? one(t) : 1 + 2*sum(n->e^(-π*n^2*t), 1:N)\n", "t = 0.2:0.05:2.0\n", "A = Theta.(t)\n", "B = 1./sqrt.(t).*Theta.(1./t)\n", "plot(size=(500, 350))\n", "plot!(t, B, label=\"Theta(t)\", lw=2)\n", "plot!(t, A, label=\"(1/sqrt(t)) Theta(1/t)\", lw=2, ls=:dash)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**問題:** $t=0.1$ のとき, まず $\\ds\\frac{1}{\\sqrt{t}}\\Theta\\left(\\frac{1}{t}\\right)$ の近似値を\n", "\n", "$$\n", "\\frac{1}{\\sqrt{t}}\\left(1 + 2\\sum_{n=1}^N e^{-\\pi n^2/t}\\right)\n", "$$\n", "\n", "の $N=1$ の場合を用いて計算せよ. そして, $\\Theta(t)$ を\n", "\n", "$$\n", "1 + 2\\sum_{n=1}^N e^{-\\pi n^2 t}\n", "$$\n", "\n", "で近似するとき, $N\\geqq 10$ としなければ, 上と同じ精度が得られないことを確認せよ. $t>0$ が小さいときには $\\Theta(t)$ の定義に基いて直接的に数値計算するより, モジュラー変換を経由して数値計算した方が効率的である. $\\QED$\n", "\n", "次のセルを見よ." ] }, { "cell_type": "code", "execution_count": 51, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "(1 / √t) * Theta(1 / t; N=0) = 3.162277660168379\n", "(1 / √t) * Theta(1 / t; N=1) = 3.162277660168523\n", "(1 / √t) * Theta(1 / t; N=2) = 3.162277660168523\n", "Theta(t; N=9) = 3.1622776601684772\n", "Theta(t; N=10) = 3.1622776601685225\n", "Theta(t; N=11) = 3.1622776601685225\n" ] } ], "source": [ "Theta(t; N=20) = iszero(N) ? one(t) : 1 + 2*sum(n->e^(-π*n^2*t), 1:N)\n", "t = 0.1\n", "@show 1/√t*Theta(1/t; N=0)\n", "@show 1/√t*Theta(1/t; N=1)\n", "@show 1/√t*Theta(1/t; N=2)\n", "@show Theta(t; N=9);\n", "@show Theta(t; N=10);\n", "@show Theta(t; N=11);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Lerchの超越函数へのPoissonの和公式の応用\n", "\n", "#### Lerchの超越函数\n", "\n", "以下では $a\\ne0,-1,-2,\\ldots$ であると仮定する.\n", "\n", "**定義:** **Lerchの超越函数** $\\Phi(z,s,a)$ を\n", "\n", "$$\n", "\\Phi(z,s,a) = \n", "\\sum_{k=0}^\\infty \\frac{z^k}{(a+k)^s}.\n", "$$\n", "\n", "と定義する. 次の記号法も使われる:\n", "\n", "$$\n", "L(\\tau, a, s) = \\Phi(e^{2\\pi i\\tau}, s ,a) =\n", "\\sum_{k=0}^\\infty \\frac{e^{2\\pi ik\\tau}}{(a+k)^s}, \n", "\\qquad z=e^{2\\pi i\\tau}.\n", "$$\n", "\n", "これは**Lerchのゼータ函数**(レルヒのゼータ函数)と呼ばれる. **引数の順序が変わっていることに注意せよ.** $|z|<1$ ならば右辺の級数は絶対収束し, $|z|=1$ であっても右辺の級数は $\\real s > 1$ ならば絶対収束する. さらに,\n", "\n", "$$\n", "\\Phi(z,s,a) = \\left(z\\frac{\\d}{\\d z} + a\\right)^m \\Phi(z,s+m,a)\n", "$$\n", "\n", "を使って, $|z|=1$ であっても, $\\real s>1-m$ まで $\\Phi(z,s,a)$ を解析接続できる.\n", "\n", "Lerchのゼータ函数は, $\\tau=0$ ($z=1$) とするとHurwitzのゼータ函数になり, $a=1$ としてから $z$ 倍すると($s$ が正の整数の場合には)polylogarithmになり, $\\tau=0$ ($z=1$), $a=1$ とするとRiemannのゼータ函数になる. $z=e^{2\\pi i\\tau}$ のとき,\n", "\n", "$$\n", "\\begin{aligned}\n", "&\n", "L(0,a,s) = \\Phi(1,s,a)=\\zeta(s,z) = \\sum_{k=0}^\\infty\\frac{1}{(k+a)^s},\n", "\\\\ &\n", "e^{2\\pi i\\tau}L(\\tau,1,s) = z\\Phi(z,s,1)=\\Li_s(z) = \\sum_{n=1}^\\infty\\frac{z^n}{n^s},\n", "\\\\ &\n", "L(0,1,s) = \\Phi(1,s,1)=\\zeta(s) = \\sum_{n=1}^\\infty \\frac{1}{n^s}.\n", "\\end{aligned}\n", "$$\n", "\n", "Lerchの超越函数の基本性質については\n", "\n", "* Jesus Guillera and Jonathan Sondow. Double integrals and infinite products for some classical constants via analytic continuations of Lerch's transcendent. arXiv:math/0506319\n", "\n", "* Jeffrey C. Lagarias and Wen-Ching Winnie Li. Mathematics > Number Theory\n", "The Lerch Zeta Function I, II, III, IV. arXiv:1005.4712, arXiv:1005.4967, arXiv:1506.06161, arXiv:1511.08116\n", "\n", "を参照せよ.\n", "\n", "#### Lipschitzの和公式=Lerchの函数等式\n", "\n", "\n", "**Lipschitzの和公式:** $\\real s>1$, $\\imag\\tau > 0$, $0 -a)\\\\\n", "0 & (x < -a).\n", "\\end{cases}\n", "$$\n", "\n", "このとき,\n", "\n", "$$\n", "\\sum_{k\\in\\Z}f(k) = \\sum_{k=0}^\\infty\\frac{e^{2\\pi i\\tau(k+a)}}{(k+a)^{1-s}} =\n", "e^{2\\pi i\\tau a}\\Phi(e^{2\\pi i\\tau}, 1-s, a).\n", "$$\n", "\n", "一方, $p\\in\\R$ に対して, \n", "\n", "$$\n", "\\begin{aligned}\n", "\\hat{f}(p) &= \n", "\\int_{-a}^\\infty e^{2\\pi i\\tau(x+a)} (x+a)^{s-1} e^{-2\\pi ipx}\\,dx =\n", "\\int_0^\\infty e^{2\\pi i\\tau x}x^{s-1}e^{-2\\pi ip(x-a)}\\,dx\n", "\\\\ &=\n", "e^{2\\pi ipa}\\int_0^\\infty e^{2\\pi i(\\tau-p)x} x^{s-1}\\,dx =\n", "e^{2\\pi ipa}\\frac{\\Gamma(s)}{(-2\\pi i(\\tau-p))^s} =\n", "\\frac{\\Gamma(s)}{(-2\\pi i)^s} \\frac{e^{2\\pi ipa}}{(\\tau-p)^s}.\n", "\\end{aligned}\n", "$$\n", "\n", "4番目の等号で, Cauchyの積分定理より, $y=-2\\pi i(\\tau-p)x$ とおいて $y$ に関する積分に書き換えた後に, 積分経路を $(0,\\infty)$ に置き換えても値が変わらないことを用いた.\n", "\n", "したがって, Poissonの和公式 $\\ds\\sum_{m\\in\\Z}f(m)=\\sum_{n\\in\\Z}\\hat{f}(n)=\\sum_{n\\in\\Z}\\hat{f}(-n)$ より, 示したい前者の公式\n", "\n", "$$\n", "\\sum_{k=0}^\\infty\\frac{e^{2\\pi i\\tau(k+a)}}{(k+a)^{1-s}} = \n", "\\frac{\\Gamma(s)}{(-2\\pi i)^s}\\sum_{n\\in\\Z}\\frac{e^{-2\\pi ina}}{(n+\\tau)^s}\n", "$$\n", "\n", "が得られる. 後者の公式は以下のように右辺の和を $n<0$ ($n=-(k+1)$, $k=0,1,2,\\ldots$) と $n\\geqq 0$ に分けることによって得られる.\n", "\n", "$$\n", "\\begin{aligned}\n", "e^{2\\pi i\\tau a}L(\\tau, a, 1-s) &=\n", "\\sum_{k=0}^\\infty\\frac{e^{2\\pi i\\tau(k+a)}}{(k+a)^{1-s}} = \n", "\\frac{\\Gamma(s)}{(-2\\pi i)^s}\\sum_{n\\in\\Z}\\frac{e^{-2\\pi ina}}{(n+\\tau)^s}\n", "\\\\ &=\n", "\\frac{\\Gamma(s)}{(-2\\pi)^s}\\left(\n", "\\sum_{k=0}^\\infty\\frac{e^{2\\pi i(k+1)a}}{(-(k+1-\\tau))^s} +\n", "\\sum_{n=0}^\\infty\\frac{e^{-2\\pi ina}}{(n+\\tau)^s}\n", "\\right)\n", "\\\\ &=\n", "\\frac{\\Gamma(s)}{(2\\pi)^s}e^{-\\pi is/2}\\left(\n", "e^{\\pi i s}e^{2\\pi ia}\\sum_{k=0}^\\infty\\frac{e^{2\\pi ika}}{(k+1-\\tau)^s} +\n", "\\sum_{n=0}^\\infty\\frac{e^{-2\\pi ina}}{(n+\\tau)^s}\n", "\\right)\n", "\\\\ &=\n", "\\frac{\\Gamma(s)}{(2\\pi)^s}\\left(\n", "e^{-\\pi is/2}e^{2\\pi ia}L(a, 1-\\tau, s) +\n", "e^{\\pi is/2}L(-a, \\tau, s)\n", "\\right).\n", "\\qquad \\QED\n", "\\end{aligned}\n", "$$\n", "\n", "**注意:** 上のPoissonの和公式を使う証明の方針は\n", "\n", "* Knopp, Marvin and Robins, Sinai. Easy proofs of Riemann's functional equation for $\\zeta(s)$ and Lipschitz summation. Proc. Amer. Math. Soc., Vol.129 (2001), No.7, 1915-1922\n", "\n", "による. この論文の説明の方がこのノートの説明より詳しい. Lerchの函数等式の別証明については\n", "\n", "* Berndt, Bruce C. Two new proofs of Lerch's functional equation. Proc. Amer. Math. Soc., Vol.32 (1972), No.2, 403-408 \n", "\n", "を参照せよ. $\\QED$\n", "\n", "#### Hurwitzの函数等式\n", "\n", "$z=e^{2\\pi i\\tau}$ とおくと,\n", "\n", "$$\n", "\\begin{aligned}\n", "L(\\tau,a,s) &= \\Phi(z,s,a) = \n", "\\sum_{k=0}^\\infty\\frac{z^k}{(k+a)^s} =\n", "\\frac{1}{a^s} + \\sum_{m=0}^\\infty\\frac{z^{m+1}}{(m+1+a)^s} \n", "\\\\ &=\n", "\\frac{1}{a^s} + z\\,\\Phi(z, s, 1+a) =\n", "\\frac{1}{a^s} + e^{2\\pi i\\tau}L(\\tau, 1+a, s).\n", "\\end{aligned}\n", "$$\n", "\n", "なので, Lipschitzの和公式=Lerchの函数等式は次のように書き直される:\n", "\n", "$$\n", "e^{2\\pi i\\tau a}L(\\tau, a, 1-s) =\n", "\\frac{\\Gamma(s)}{(2\\pi)^s}\\left(\n", "e^{-\\pi is/2}e^{2\\pi ia}L(a, 1-\\tau, s) +\n", "e^{\\pi is/2}e^{-2\\pi ia}L(a, 1+\\tau, s) +\n", "\\frac{e^{\\pi is/2}}{\\tau^s}\n", "\\right).\n", "$$\n", "\n", "したがって, $\\real s < 0$ として $\\tau \\to 0$ とすると $1/\\tau^s\\to 0$ となり, 一般に $L(0,a,s)=\\zeta(s,a)$, $e^{2\\pi i\\tau}L(\\tau,1,s)=\\Li_s(e^{2\\pi i\\tau})$ が成立しているので,\n", "\n", "$$\n", "\\zeta(1-s, a) = \n", "\\frac{\\Gamma(s)}{(2\\pi)^s}\\left(\n", "e^{-\\pi is/2} \\Li_s(e^{2\\pi ia}) + e^{\\pi is/2}\\Li_s(e^{-2\\pi ia})\n", "\\right)\n", "\\qquad (0