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

目次

\n", "
" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "using Base.MathConstants\n", "using Base64\n", "using Printf\n", "using Statistics\n", "const e = ℯ\n", "endof(a) = lastindex(a)\n", "linspace(start, stop, length) = range(start, stop, length=length)\n", "\n", "using Plots\n", "#gr(); ENV[\"PLOTS_TEST\"] = \"true\"\n", "#clibrary(:colorcet)\n", "#clibrary(:misc)\n", "default(fmt=:png)\n", "\n", "function pngplot(P...; kwargs...)\n", " sleep(0.1)\n", " pngfile = tempname() * \".png\"\n", " savefig(plot(P...; kwargs...), pngfile)\n", " showimg(\"image/png\", pngfile)\n", "end\n", "pngplot(; kwargs...) = pngplot(plot!(; kwargs...))\n", "\n", "showimg(mime, fn) = open(fn) do f\n", " base64 = base64encode(f)\n", " display(\"text/html\", \"\"\"\"\"\")\n", "end\n", "\n", "using SymPy\n", "#sympy.init_printing(order=\"lex\") # default\n", "#sympy.init_printing(order=\"rev-lex\")\n", "\n", "using SpecialFunctions\n", "using QuadGK" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "# Override the Base.show definition of SymPy.jl:\n", "# https://github.com/JuliaPy/SymPy.jl/blob/29c5bfd1d10ac53014fa7fef468bc8deccadc2fc/src/types.jl#L87-L105\n", "\n", "@eval SymPy function Base.show(io::IO, ::MIME\"text/latex\", x::SymbolicObject)\n", " print(io, as_markdown(\"\\\\displaystyle \" * sympy.latex(x, mode=\"plain\", fold_short_frac=false)))\n", "end\n", "@eval SymPy function Base.show(io::IO, ::MIME\"text/latex\", x::AbstractArray{Sym})\n", " function toeqnarray(x::Vector{Sym})\n", " a = join([\"\\\\displaystyle \" * sympy.latex(x[i]) for i in 1:length(x)], \"\\\\\\\\\")\n", " \"\"\"\\\\left[ \\\\begin{array}{r}$a\\\\end{array} \\\\right]\"\"\"\n", " end\n", " function toeqnarray(x::AbstractArray{Sym,2})\n", " sz = size(x)\n", " a = join([join(\"\\\\displaystyle \" .* map(sympy.latex, x[i,:]), \"&\") for i in 1:sz[1]], \"\\\\\\\\\")\n", " \"\\\\left[ \\\\begin{array}{\" * repeat(\"r\",sz[2]) * \"}\" * a * \"\\\\end{array}\\\\right]\"\n", " end\n", " print(io, as_markdown(toeqnarray(x)))\n", "end" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 漸近展開の有名な例" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### $F_n(x)$ の定義\n", "\n", "$n$ は非負の整数であるとする. $x>0$ の函数 $F_n(x)$ を\n", "\n", "$$\n", "F_n(x) = n!\\,e^{1/x}\\int_{1/x}^\\infty e^{-t} t^{-n-1}\\,dt\n", "$$\n", "\n", "と定める. $F_n(x)$ の $x>0$ が $0$ に近いときの様子を調べたい." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### $F_n(x) = O(x^{n+1})$\n", "\n", "$x>0$ のとき $t\\geqq 1/x$ ならば $t^{-n-1}\\leqq x^{n+1}$ なので\n", "\n", "$$\n", "0 < F_n(x) \\leqq n!\\,e^{1/x}\\int_{1/x}^\\infty e^{-t}x^{n+1}\\,dt = n!\\, x^{n+1}.\n", "$$\n", "\n", "ゆえに,\n", "\n", "$$\n", "F_n(x) = O(x^{n+1}) \\quad (x\\searrow 0).\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### $F_0(x)$ の漸近展開\n", "\n", "$(-e^{-t})'=e^{-t}$ を用いた部分積分によって\n", "\n", "$$\n", "\\begin{aligned}\n", "F_n(x) &= n!\\,e^{1/x}\\left(\n", "\\left[-e^{-t}t^{-n-1}\\right]_{1/x}^\\infty + \\int_{1/x}^\\infty e^{-t}(-(n+1)t^{-n-2})dt\n", "\\right)\n", "\\\\ &=\n", "n!\\,x^{n+1} - F_{n+1}(x).\n", "\\end{aligned}\n", "$$\n", "\n", "ゆえに $x>0$ において, \n", "\n", "$$\n", "\\begin{aligned}\n", "F_0(x) &= 0!\\,x - F_1(x) =\n", "0!\\,x - 1!\\,x^2 + F_2(x) = \\cdots \n", "\\\\ &=\n", "0!\\,x - 1!\\,x^2 + \\cdots + (-1)^n n! x^{n+1} + (-1)^{n+1} F_{n+1}(x) \n", "\\\\ &=\n", "\\sum_{k=0}^n (-1)^k k!\\, x^{k+1} + (-1)^{n+1} F_{n+1}(x).\n", "\\end{aligned}\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### $F_0(x)$ の漸近展開の別の導出の仕方\n", "\n", "$x>0$ であるとする. $F_0(x)$ は $t=1/x+u$ という置換によって次のように書き直される:\n", "\n", "$$\n", "F_0(x) = e^{1/x}\\int_{1/x}^\\infty \\frac{e^{-t}}{t}\\,dt =\n", "x\\int_0^\\infty \\frac{e^{-u}}{1+xu}\\,du.\n", "$$\n", "\n", "ゆえに\n", "\n", "$$\n", "\\frac{1}{1+z} = \\sum_{k=0}^{n-1}(-1)^k z^k + (-1)^n\\frac{z^n}{1+z}\n", "$$\n", "\n", "を $z=xu$ に適用した結果を使うと, \n", "\n", "$$\n", "\\begin{aligned}\n", "F_0(x) &= \\sum_{k=0}^{n-1} (-1)^k x^{k+1}\\int_0^\\infty e^{-u}u^k\\,du + \n", "(-1)^n x^{n+1}\\int_0^\\infty \\frac{e^{-u}u^n}{1+xu}\\,du\n", "\\\\ &=\n", "\\sum_{k=0}^{n-1} (-1)^k k! x^{k+1} + \n", "(-1)^n x^{n+1}\\int_0^\\infty \\frac{e^{-u}u^n}{1+xu}\\,du.\n", "\\end{aligned}\n", "$$\n", "\n", "さらに\n", "\n", "$$\n", "0 < x^{n+1}\\int_0^\\infty \\frac{e^{-u}u^n}{1+xu}\\,du \\leqq \n", "x^{n+1}\\int_0^\\infty e^{-u}u^n\\,du = n!\\,x^{n+1}\n", "$$\n", "\n", "なので\n", "\n", "$$\n", "x^{n+1}\\int_0^\\infty \\frac{e^{-u}u^n}{1+xu}\\,du = O(x^{n+1}) \\qquad(x\\searrow 0).\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 以上のまとめ\n", "\n", "以上をまとめると\n", "\n", "$$\n", "F_0(x) = \\sum_{k=0}^{n-1} (-1)^k k!\\, x^{k+1} + (-1)^n F_n(x) =\n", "\\sum_{k=0}^{n-1}(-1)^k k!\\,x^{k+1} + O(x^{n+1}) \\quad (x\\searrow 0).\n", "$$\n", "\n", "ここで\n", "\n", "$$\n", "F_n(x) = n!e^{1/x}\\int_{1/x}^\\infty e^{-t}t^{-n-1}\\,dt =\n", "x^{n+1}\\int_0^\\infty \\frac{e^{-u}u^n}{1+xu}\\,du = O(x^{n+1})\n", "\\quad(x\\searrow 0).\n", "$$\n", "\n", "しかし, $x>0$ で\n", "\n", "$$\n", "\\sum_{k=0}^\\infty (-1)^k k!\\, x^{k+1} =\n", "0!\\,x - 1!\\,x^2 + 2!\\,x^3 - 3!\\,x^4 + \\cdots\n", "$$\n", "\n", "は決して収束しない. \n", "\n", "このように全てを足し上げると発散する場合であっても, 有限項と剰余項の和の形式で表わせば, すべてがwell-definedな量だけを使って議論を進めることができる場合がある. 上の場合には剰余項は $(-1)^n F_n(x)$ である." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### $F_0(1/10)$ の漸近展開を用いた数値計算\n", "\n", "$x>0$ のとき $0\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n" ], "text/html": [ "" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "F₀(x) = exp(1/x)*quadgk(u->exp(-1/(x*u))/u, 0, 1)[1]\n", "F₀_ae(x, n=10) = sum(k->(-1)^k*factorial(k)*x^(k+1), 0:n-1)\n", "\n", "@show Y = F₀(1/10)\n", "@show Y_ae9 = F₀_ae(1/10, 9)\n", "@show Y_ae10 = F₀_ae(1/10, 10)\n", "\n", "n = 1:20\n", "plot(size=(500,350))\n", "plot!(ylims=(-0.0001,0.0001))\n", "plot!(legend=:top)\n", "plot!(n, F₀_ae.(1/10, n) .- Y, label=\"error\")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 漸近展開の入門書\n", "\n", "このように $x > 0$ で決して収束しないべき級数であっても, 適切な解釈のもとで数学的に十分な意味を持つことがある. このような理由で数学では発散級数に関するたくさんの深い研究がある.\n", "\n", "その方面の入門書としては次の文献がある. 非常に面白い本なのでおすすめできる.\n", "\n", "* 大久保謙二郎・河野實彦共著『漸近展開』, 新しい応用の数学12, 教育出版, 1976, 1996." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 指数積分函数\n", "\n", "$F_0(x)$ は実用的にも重要な函数である. それと本質的に同じ\n", "\n", "$$\n", "E_1(z) = e^{-z}F_0(1/z) = \\int_z^\\infty \\frac{e^{-t}}{t}\\,dt =\n", "\\int_0^1 \\frac{e^{-z/u}}{u} du\n", "$$\n", "\n", "は指数積分函数と呼ばれる特殊函数の1つである($t=z/u$). この函数の数値計算については\n", "\n", "* http://nbviewer.jupyter.org/github/stevengj/18S096/blob/iap2017/pset3/pset3-solutions.ipynb\n", "\n", "が非常に面白い解説になっている. 特殊函数の数値計算の最適化に興味がある人は是非とも閲覧して欲しい." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 連分数展開による数値計算\n", "\n", "以下は $x=1/z$ のときの\n", "\n", "$$\n", "G(z) = F_0(1/z) = e^z E_1(z) = e^z \\int_0^1 \\frac{e^{-z/u}}{u}du\n", "$$\n", "\n", "の連分数展開による数値計算である. この函数の連分数展開については\n", "\n", "* 一松信著『特殊関数入門』数学選書, 森北出版, 1999\n", "\n", "の第3章の最後のp.74にある例3.10および第6章のpp.132-133にある例6.4を参照せよ. この本も非常に面白い本なのでおすすめできる." ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "G (generic function with 1 method)" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "function G_cf(z; n::Int=2)\n", " cf = 1 + (n+1)/z\n", " for i = n:-1:1\n", " cf = z + (1+i)/cf\n", " cf = 1 + i/cf\n", " end\n", " return 1 / (z + 1/cf)\n", "end\n", "\n", "G(z) = exp(z)*quadgk(u->exp(-z/u)/u, 0, 1)[1]" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle \\frac{1}{z + \\frac{1}{1 + \\frac{1}{z + \\frac{2}{1 + \\frac{2}{z}}}}}$\n" ], "text/plain": [ " 1 \n", "-----------------\n", " 1 \n", "z + -------------\n", " 1 \n", " 1 + ---------\n", " 2 \n", " z + -----\n", " 2\n", " 1 + -\n", " z" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/latex": [ "$\\displaystyle \\frac{1}{z + \\frac{1}{1 + \\frac{1}{z + \\frac{2}{1 + \\frac{2}{z + \\frac{3}{1 + \\frac{3}{z}}}}}}}$\n" ], "text/plain": [ " 1 \n", "-------------------------\n", " 1 \n", "z + ---------------------\n", " 1 \n", " 1 + -----------------\n", " 2 \n", " z + -------------\n", " 2 \n", " 1 + ---------\n", " 3 \n", " z + -----\n", " 3\n", " 1 + -\n", " z" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/latex": [ "$\\displaystyle \\frac{1}{z + \\frac{1}{1 + \\frac{1}{z + \\frac{2}{1 + \\frac{2}{z + \\frac{3}{1 + \\frac{3}{z + \\frac{4}{1 + \\frac{4}{z}}}}}}}}}$\n" ], "text/plain": [ " 1 \n", "---------------------------------\n", " 1 \n", "z + -----------------------------\n", " 1 \n", " 1 + -------------------------\n", " 2 \n", " z + ---------------------\n", " 2 \n", " 1 + -----------------\n", " 3 \n", " z + -------------\n", " 3 \n", " 1 + ---------\n", " 4 \n", " z + -----\n", " 4\n", " 1 + -\n", " z" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sympy.init_printing(order=\"lex\")\n", "z = symbols(\"z\")\n", "for n in 1:3\n", " cf = G_cf(z, n=n)\n", " display(cf)\n", "end" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "$\\displaystyle z - z^{2} + 2 z^{3} - 6 z^{4} + 24 z^{5} - 120 z^{6} + 720 z^{7} - 5040 z^{8} + 40320 z^{9} - 362880 z^{10}$\n" ], "text/plain": [ " 2 3 4 5 6 7 8 9 \n", "z - z + 2*z - 6*z + 24*z - 120*z + 720*z - 5040*z + 40320*z - 362880*z\n", "\n", "10\n", " " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/latex": [ "$\\displaystyle z - z^{2} + 2 z^{3} - 6 z^{4} + 24 z^{5} - 108 z^{6} + 504 z^{7} - 2376 z^{8} + 11232 z^{9} - 53136 z^{10} + O\\left(z^{11}\\right)$\n" ], "text/plain": [ " 2 3 4 5 6 7 8 9 1\n", "z - z + 2*z - 6*z + 24*z - 108*z + 504*z - 2376*z + 11232*z - 53136*z \n", "\n", "0 / 11\\\n", " + O\\z /" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/latex": [ "$\\displaystyle z - z^{2} + 2 z^{3} - 6 z^{4} + 24 z^{5} - 120 z^{6} + 720 z^{7} - 4896 z^{8} + 35712 z^{9} - 269568 z^{10} + O\\left(z^{11}\\right)$\n" ], "text/plain": [ " 2 3 4 5 6 7 8 9 \n", "z - z + 2*z - 6*z + 24*z - 120*z + 720*z - 4896*z + 35712*z - 269568*z\n", "\n", "10 / 11\\\n", " + O\\z /" ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "text/latex": [ "$\\displaystyle z - z^{2} + 2 z^{3} - 6 z^{4} + 24 z^{5} - 120 z^{6} + 720 z^{7} - 5040 z^{8} + 40320 z^{9} - 360000 z^{10} + O\\left(z^{11}\\right)$\n" ], "text/plain": [ " 2 3 4 5 6 7 8 9 \n", "z - z + 2*z - 6*z + 24*z - 120*z + 720*z - 5040*z + 40320*z - 360000*z\n", "\n", "10 / 11\\\n", " + O\\z /" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "sympy.init_printing(order=\"rev-lex\")\n", "display(series(sum((-1)^n*factorial(n)*z^(n+1) for n in 0:9), n=11))\n", "for n in 1:3\n", " display(series(G_cf(1/z, n=n), n=11))\n", "end" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$n=1,2,3$ の連分数近似であっても, 大きめの $z$ における近似が相当にうまく行っていることを以下で確認する." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "(0.20636792452830188, 0.20634564990105575)" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "G_cf(4), G(4)" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ " 0.124564 seconds (148.57 k allocations: 10.049 MiB, 99.61% compilation time)\n", " 0.049663 seconds (98.27 k allocations: 6.637 MiB, 99.27% compilation time)\n", " 0.000048 seconds (6 allocations: 1008 bytes)\n", " 0.000023 seconds (6 allocations: 1008 bytes)\n" ] }, { "data": { "image/png": "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", "image/svg+xml": [ "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n" ], "text/html": [ "" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "x = 0.05:0.05:4\n", "@time y = G.(x)\n", "@time y_cf1 = G_cf.(x, n=1)\n", "@time y_cf2 = G_cf.(x, n=2)\n", "@time y_cf3 = G_cf.(x, n=3)\n", "plot(size=(500,350))\n", "plot!(title=\"y = G(x) = e^x E_1(x)\", titlefontsize=11)\n", "plot!(xlims=(0,maximum(x)), ylims=(0,2.3))\n", "plot!(x, y, label=\"numetical integration\")\n", "plot!(x, y_cf1, label=\"continued fractional approximation n=1\", ls=:dash)\n", "plot!(x, y_cf2, label=\"continued fractional approximation n=2\", ls=:dash)\n", "plot!(x, y_cf3, label=\"continued fractional approximation n=3\", ls=:dash)" ] } ], "metadata": { "@webio": { "lastCommId": null, "lastKernelId": null }, "_draft": { "nbviewer_url": "https://gist.github.com/4177ac45105dbd51f53a91555f8b48e8" }, "gist": { "data": { "description": "07 example of asymptotic expansion", "public": true }, "id": "4177ac45105dbd51f53a91555f8b48e8" }, "jupytext": { "formats": "ipynb,md" }, "kernelspec": { "display_name": "Julia 1.9.1", "language": "julia", "name": "julia-1.9" }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", "version": "1.9.1" }, "toc": { "base_numbering": 1, "nav_menu": { "height": "207px", "width": "242px" }, "number_sections": true, "sideBar": true, "skip_h1_title": true, "title_cell": "目次", "title_sidebar": "目次", "toc_cell": true, "toc_position": { "height": "calc(100% - 180px)", "left": "10px", "top": "150px", "width": "214px" }, "toc_section_display": true, "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 2 }