{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# 08 函数の凸性と不等式への応用\n", "\n", "黒木玄\n", "\n", "2018-06-11~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/08%20convexity.ipynb\n", "\n", "* https://genkuroki.github.io/documents/Calculus/08%20convexity.pdf\n", "\n", "このファイルは Julia Box で利用できる.\n", "\n", "自分のパソコンにJulia言語をインストールしたい場合には\n", "\n", "* [WindowsへのJulia言語のインストール](http://nbviewer.jupyter.org/gist/genkuroki/81de23edcae631a995e19a2ecf946a4f)\n", "\n", "* [Julia v1.1.0 の Windows 8.1 へのインストール](https://nbviewer.jupyter.org/github/genkuroki/msfd28/blob/master/install.ipynb)\n", "\n", "を参照せよ. 前者は古く, 後者の方が新しい.\n", "\n", "論理的に完璧な説明をするつもりはない. 細部のいい加減な部分は自分で訂正・修正せよ.\n", "\n", "$\n", "\\newcommand\\eps{\\varepsilon}\n", "\\newcommand\\ds{\\displaystyle}\n", "\\newcommand\\Z{{\\mathbb Z}}\n", "\\newcommand\\R{{\\mathbb R}}\n", "\\newcommand\\C{{\\mathbb C}}\n", "\\newcommand\\QED{\\text{□}}\n", "\\newcommand\\root{\\sqrt}\n", "\\newcommand\\bra{\\langle}\n", "\\newcommand\\ket{\\rangle}\n", "\\newcommand\\d{\\partial}\n", "$" ] }, { "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": [ "**定義:** 区間 $I$ 上の実数値函数 $f$ が**下に凸**な函数であるとは, 任意の $a,b\\in I$ と実数 $t$ について, \n", "\n", "$$\n", "0\\leqq t\\leqq 1 \\implies f((1-t)a+tb) \\leqq (1-t)f(a)+t f(b) \n", "$$\n", "\n", "を満たしていることである. 逆向きの不等式で上に凸な函数を定義する. すなわち, 区間 $I$ 上の実数値函数 $f$ が**上に凸**な函数であるとは, 任意の $a,b\\in I$ と実数 $t$ について, \n", "\n", "$$\n", "0\\leqq t\\leqq 1 \\implies f((1-t)a+tb) \\geqq (1-t)f(a)+t f(b) \n", "$$\n", "\n", "を満たしていることである. " ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "image/svg+xml": [ "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n" ], "text/html": [ "" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# log x は上に凸な函数\n", "\n", "x = 0:0.01:2.0\n", "a, b = 0.3, 1.5\n", "f(x) = log(x)\n", "t = 0:0.01:1.0\n", "g(a,b,t) = (1-t)*f(a) + t*f(b)\n", "X(a,b,t) = (1-t)*a + t*b\n", "plot(size=(400,250), legend=:topleft, xlims=(0,2.0), ylims=(-2.0, 0.8))\n", "plot!(x, f.(x), label=\"y = log x\")\n", "plot!(X.(a,b,t), g.(a,b,t), label=\"\")\n", "plot!([a,a], [-10.0, f(a)], label=\"x = a\", ls=:dash)\n", "plot!([b,b], [-10.0, f(b)], label=\"x = b\", ls=:dash)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "image/svg+xml": [ "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n" ], "text/html": [ "" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# e^x は下に凸な函数\n", "\n", "x = -1:0.01:2\n", "a, b = -0.3, 1.5\n", "f(x) = e^x\n", "t = 0:0.01:1.0\n", "g(a,b,t) = (1-t)*f(a) + t*f(b)\n", "X(a,b,t) = (1-t)*a + t*b\n", "plot(size=(400,250), legend=:topleft, xlims=(-1,2), ylims=(0,8))\n", "plot!(x, f.(x), label=\"y = e^x\")\n", "plot!(X.(a,b,t), g.(a,b,t), label=\"\")\n", "plot!([a,a], [-0.0, f(a)], label=\"x = a\", ls=:dash)\n", "plot!([b,b], [-0.0, f(b)], label=\"x = b\", ls=:dash)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## 2階の導函数の符号と函数の凸性" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 2階の導函数の符号と接線の関係\n", "\n", "**定理:** 区間 $I$ 上の実数値函数 $f$ が $C^2$ 級でかつ $I$ 上で $f''\\geqq 0$ ならば, $a\\in I$ における $y=f(x)$ のグラフは接線 $y=f'(a)(x-a)+f(a)$ の上側にある. 同様に区間 $I$ 上の実数値函数 $f$ が $C^2$ 級でかつ $I$ 上で $f''\\leqq 0$ ならば $a\\in I$ における $y=f(x)$ のグラフは接線 $y=f'(a)(x-a)+f(a)$ の下側にある.\n", "\n", "**証明:** 前半のみを証明する. 区間 $I$ 上の実数値函数 $f$ が $C^2$ 級でかつ $I$ 上で $f''\\geqq 0$ であると仮定し, $a\\in I$ とする. $f$ は $C^2$ 級なのでTaylorの公式より, $x\\in I$ について,\n", "\n", "$$\n", "f(x) = f(a) + f'(a)(x-a) + R, \\qquad\n", "R = f''(\\xi)\\frac{(x-a)^2}{2}.\n", "$$\n", "\n", "ここで $\\xi$ は $a$ と $x$ のあいだのある実数である. $f''\\geqq 0$ より, $R\\geqq 0$ となる. ゆえに, $f(x)\\geqq f(a) + f'(a)(x-a)$ となる. これで, $y=f(x)$ のグラフは接線 $y=f'(a)(x-a)+f(a)$ の上側にあることがわかった. $\\QED$\n", "\n", "**注意:** 上の定理の $C^2$ 級の仮定は2回微分可能性の仮定に弱めることができる. $\\QED$\n", "\n", "**注意:** 上の定理の証明中の剰余項は\n", "\n", "$$\n", "R = \\int_a^x dx_1\\int_a^{x_1}\\,dx_2\\;f''(x_2)\n", "$$\n", "\n", "とも書ける. $f''\\geqq 0$ のとき, $x>a$ ならば $x_1,x_2$ は $a0$ に対して $f(x)=\\log x$ とおくと $f'(x)=1/x$, $f''(x)=-1/x^2<0$ なので, $f$ は上に凸な函数である. $\\QED$\n", "\n", "**例題:** $a$ は実数であるとし, $x>0$ に対して $f(x)=x^a$ とおく. $f(x)$ は凸性について調べよ.\n", "\n", "**解答例:** $x>0$ であるとする. $f'(x)=ax^{a-1}$, $f''(x)=a(a-1)x^{a-2}$ であり, $x^{a-2}>0$ である. ゆえに, $a(a-1)\\geqq 0$ のとき, すなわち $a\\leqq 0$ または $1\\leqq a$ のとき, $f$ は下に凸になり, $a(a-1)\\leqq 0$ のとき, すなわち $0\\leqq a\\leqq 1$ のとき, $f$ は上に凸になる. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 指数・対数函数への応用\n", "\n", "#### 指数函数の上からと下からの評価\n", "\n", "**問題:** すべての $x\\in\\R$ について $1+x\\leqq e^x$ となることを示せ. \n", "\n", "**解答例:** $y=e^x$ の $x=0$ での接線は $y=1+x$ であり, $f''(x)=e^x\\geqq 0$ であるから, 上の定理より, $1+x\\leqq ex$. $\\QED$\n", "\n", "**注意:** この問題の結果より, $1-x \\leqq e^{-x}$ なので, $x<1$ のとき $e^x\\leqq (1-x)^{-1}$ となる. これで \n", "\n", "$$\n", "1+x\\leqq e^x\\leqq (1-x)^{-1} \\qquad (x<1)\n", "$$\n", "\n", "となることがわかった. $a>0$, $-a\\leqq t-1$ のとき, $\\log(1+x)\\leqq x$ となることもわかる. $\\QED$\n", "\n", "**問題:** $x>-1$ のとき $\\ds\\frac{x}{1+x}\\leqq \\log(1+x)$ となることを示せ.\n", "\n", "**解答例:** $\\ds f(x) = \\log(1+x) - \\frac{x}{1+x}$ とおく. $f(0)=0$ である. $\\ds\\frac{x}{1+x}=1-\\frac{1}{1+x}$ と使って, $f$ を微分すると,\n", "\n", "$$\n", "f'(x) = \\frac{1}{1+x} - \\frac{1}{(1+x)^2} = \\frac{x}{(1+x)^2}\n", "$$\n", "\n", "なので, $x<0$ において $f'<0$ で $f$ は単調減少し, $x>0$ において $f'>0$ で $f$ は単調増加する. さらに $f(0)=0$ なので, $f(x)\\geqq 0$ すなわち, $\\ds \\frac{x}{1+x}\\leqq \\log(1+x)$ である. $\\QED$\n", "\n", "**注意:** $\\ds f''(x)=\\frac{1-x}{(x+1)^3}$ なので, $-11$ で $f''(x)<0$ となってしまうので, 上の問題と同様の方法でこの問題を解くことはできない. $\\QED$\n", "\n", "**以上のまとめ:** $x>-1$ のとき\n", "\n", "$$\n", "\\frac{x}{1+x}\\leqq \\log(1+x)\\leqq x.\n", "\\qquad\\QED\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 対数函数の上からと下からの評価のプロット" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "image/svg+xml": [ "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n" ], "text/html": [ "" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f(x) = x/(1+x)\n", "g(x) = log(1+x)\n", "h(x) = x\n", "x = -0.99:0.01:3\n", "plot(size=(400, 250), legend=:bottomright, xlim=(-1,3), ylims=(-6,2))\n", "plot!(x, h.(x), label=\"x\", ls=:dash)\n", "plot!(x, g.(x), label=\"log(1+x)\")\n", "plot!(x, f.(x), label=\"x/(1+x)\", ls=:dash)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### log(1+x) の -1/2 ≦ x ≦ 0 における下からの評価" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**問題:** $\\ds -\\frac{1}{2}\\leqq x\\leqq 0$ ならば $\\log(1+x)\\geqq 2x$ となることを示せ.\n", "\n", "**解答例:** $f(x)=\\log(1+x)-2x$ とおく. $f(0)=0$ である. ゆえに $\\ds -\\frac{1}{2}\\leqq x\\leqq 0$ で単調減少するならば, $\\ds -\\frac{1}{2}\\leqq x\\leqq 0$ で $f(x)\\leqq 0$ となり, 示したいことが示される. そのことを確認するために $f(x)$ を微分すると,\n", "\n", "$$\n", "f'(x) = \\frac{1}{1+x}-2 = \\frac{-(2x+1)}{1+x}\n", "$$\n", "\n", "なので $\\ds x\\geqq-\\frac{1}{2}$ ならば $f'(x)\\leqq 0$ となるので, そこで $f(x)$ は単調減少する. $\\QED$\n", "\n", "**注意:** $f(x)=\\log(1+x)-2x$ は上に凸な函数なので, $f(a)=0$ となる $a<0$ を取れば $f(x)\\geqq 0$ と $a\\leqq x\\leqq 0$ は同値になる. 実際に $a$ を計算すると $a=-0.79681213\\cdots$ となる. $\\QED$" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "f(-0.79681213) = 5.848987960632712e-11\n", "f(-0.79681214) = -2.9157047887196086e-8\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" ], "text/html": [ "" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f(x) = log(1+x) - 2x\n", "@show f(-0.79681213)\n", "@show f(-0.79681214)\n", "\n", "a = -0.79681213\n", "x = -0.999:0.001:0.1\n", "plot(size=(400,250), legend=:bottomright, ylims=(-1,0.5))\n", "plot!(x, f.(x), label=\"log(1+x) - 2x\")\n", "plot!(x, zero(x), label=\"\", color=\"black\", ls=:dot)\n", "plot!([a,a], [-1,0], label=\"x=$a\", color=:red, ls=:dash)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 指数函数の上からと下からの評価による指数函数の挟み撃ち\n", "\n", "**問題:** $a>0$ であるとし, $-a-1)\n", "$$\n", "\n", "より, \n", "\n", "$$\n", "\\begin{aligned}\n", "&\n", "\\frac{\\d}{\\d a}\\log\\left(1+\\frac{t}{a}\\right)^a =\n", "\\log\\left(1+\\frac{t}{a}\\right) - \\frac{t/a}{1+t/a} \\geqq 0,\n", "\\\\ &\n", "\\frac{\\d}{\\d a}\\log\\left(1-\\frac{t}{a}\\right)^{-a} =\n", "-\\log\\left(1-\\frac{t}{a}\\right) + \\frac{-t/a}{1-t/a} \\leqq 0.\n", "\\end{aligned}\n", "$$\n", "\n", "ゆえに, $\\ds\\left(1+\\frac{t}{a}\\right)^a$ は $a$ について単調増加し, $\\ds\\left(1-\\frac{t}{a}\\right)^{-a}$ は $a$ について単調減少する. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**問題:** 以上の結果をまとめて用いて, \n", "\n", "$$\n", "\\lim_{a\\to\\infty}\\left(1+\\frac{t}{a}\\right)^a =\n", "\\lim_{a\\to\\infty}\\left(1-\\frac{t}{a}\\right)^{-a} =\n", "e^t\n", "$$\n", "\n", "を証明せよ. \n", "\n", "**解答例:** 上の方の注意では\n", "\n", "$$\n", "\\left(1+\\frac{t}{a}\\right)^a \\leqq e^t \\leqq \\left(1-\\frac{t}{a}\\right)^{-a}\n", "\\tag{$*$}\n", "\\qquad (-a\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\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": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "f(t) = e^t\n", "g(a,t) = (1+t/a)^a\n", "h(a,t) = (1-t/a)^(-a)\n", "t = -3:0.01:3\n", "\n", "PP = []\n", "for a in [5, 10, 20, 40]\n", " P = plot(title=\"a=$a\", titlefontsize=10, legendfontsize=7)\n", " plot!(legend=:topleft, yscale=:log, ylims=(10^(-1.3), 10^1.3))\n", " plot!(t, f.(t), label=\"e^t\")\n", " plot!(t, h.(a,t), label=\"(1-t/a)^(-a)\", ls=:dash)\n", " plot!(t, g.(a,t), label=\"(1+t/a)^a\", ls=:dash)\n", " push!(PP, P)\n", "end\n", "plot(PP[1:2]..., size=(750,250), layout=@layout([a b]))" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "image/svg+xml": [ "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n" ], "text/html": [ "" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "plot(PP[3:4]..., size=(750,250), layout=@layout([a b]))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Jensenの不等式" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 期待値汎函数\n", "\n", "函数を数に対応させる函数を**汎函数** (functional)と呼ぶことがある.\n", "\n", "**函数の例:** $x$ を $x$ に対応させる函数を $x$ と書く.\n", "\n", "すべての $x$ を一定の値 $\\alpha$ に対応させる函数も同じ記号の $\\alpha$ で書き, 定数函数と呼ぶ. $f(x)=\\alpha$ とおいて記号 $f$ を利用すると煩雑になるので, 単に $\\alpha$ と書いて代用するということである. 数としての $\\alpha$ と定数函数としての $\\alpha$ を同じ記号で書くので混乱しないように注意して欲しい. \n", "\n", "例えば, すべての $x$ を $1$ に対応させる函数も単に $1$ と書く. \n", "$\\QED$\n", "\n", "**定義:** 函数 $f$ を数 $E[f]$ に対応させる函数 $E[\\ ]$ (汎函数)が以下の条件を満たしているとき, $E[\\ ]$ は**期待値汎函数** (expextation functional)であると言うことにする:\n", "\n", "**(1) 線形性:** 函数 $f,g$ と数 $\\alpha,\\beta$ に対して, $E[\\alpha f+\\beta g]=\\alpha E[f]+\\beta E[g]$.\n", "\n", "**(2) 単調性:** 函数 $f, g$ のあいだで常に $f\\leqq g$ が成立しているならば $E[f]\\leqq E[g]$.\n", "\n", "**(3) 規格化条件:** 定数函数 $\\alpha$ について, $E[\\alpha]=\\alpha$. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 例: 有限和で書ける加重平均\n", "\n", "**例:** 区間 $I$ 上の函数を数 $E[f]$ に対応させる函数 $E[\\ ]$ を以下のように定めると, $E[\\ ]$ は期待値汎函数になる. まず $a_1,\\ldots,a_n\\in I$ を任意に取る. $w_1,\\ldots,w_n$ は0以上の実数でかつ $w_1+\\cdots+w_n=1$ を満たしていると仮定する. そして区間 $I$ 上の函数 $f$ に対して\n", "\n", "$$\n", "E[f] = \\sum_{i=1}^n w_i f(a_i) = w_1 f(a_1)+\\cdots+w_n f(a_n)\n", "$$\n", "\n", "と定める. このようにして定められた $E[\\ ]$ が実際に期待値汎函数の性質を満たしていることは以下のようにして確認できる.\n", "\n", "(1) 区間 $I$ 上の函数 $f,g$ と数 $\\alpha,\\beta$ について\n", "\n", "$$\n", "\\begin{aligned}\n", "E[\\alpha f+\\beta g] &= \\sum_{i=1}^n w_i(\\alpha f(a_i)+\\beta g(a_i)) =\n", "\\sum_{i=1}^n (\\alpha w_i f(a_i)+\\beta w_i g(a_i))\n", "\\\\ &=\n", "\\alpha\\sum_{i=1}^n w_i f(a_i) + \\beta\\sum_{i=1}^n w_i g(a_i) = \\alpha E[f]+\\beta E[g].\n", "\\end{aligned}\n", "$$\n", "\n", "(2) 区間 $I$ 上で $f\\leqq g$ が成立していると仮定すると, $w_i\\geqq 0$ より $w_i f(a_i)\\leqq w_i g(a_i)$ も成立するので\n", "\n", "$$\n", "E[f] = \\sum_{i=1}^n w_i f(a_i) \\leqq \\sum_{i=1}^n w_i g(a_i) = E[g].\n", "$$\n", "\n", "(3) 定数函数 $f(x)=\\alpha$ について $f(a_i)=\\alpha$ が成立しているので, $w_1+\\cdots+w_n=1$ という仮定より, \n", "\n", "$$\n", "E[\\alpha] = E[f] = \\sum_{i=1}^n w_i f(a_i) = \\sum_{i=1}^n w_i \\alpha = \\alpha.\n", "$$\n", "\n", "これで示すべきことがすべて示された. \n", "\n", "特に $w_i=1/n$ であるとき, $E[f]$ は\n", "\n", "$$\n", "E[f] = \\frac{f(a_1)+\\cdots+f(a_n)}{n}\n", "$$\n", "\n", "と $f(a_i)$ たちの加法平均になる. $\\QED$\n", "\n", "抽象的な期待値汎函数の概念が難しいと感じる人は, 一般的な期待値汎函数の定義を忘れてこの例の $E[f]$ またはさらにその特別な場合である加法平均の場合のみを考えれば十分である. " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 例: 区間上の一様分布による平均\n", "\n", "**問題:** $a\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\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:0.01:2.0\n", "μ = 0.7\n", "f(x) = log(x)\n", "g(μ,x) = (1/μ)*(x-μ) + f(μ)\n", "plot(size=(500,350), legend=:topleft, xlims=(0,1.7), ylims=(-2.2, 0.8))\n", "plot!(x, f.(x), label=\"y = log x\")\n", "plot!(x, g.(μ,x), label=\"y = a(x-mu)+f(mu)\")\n", "plot!([μ, μ], [-3.0, f(μ)], label=\"x=mu\", ls=:dash)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 有限和で書ける荷重平均に関するJensenの不等式の帰納法による証明\n", "\n", "**問題:** 上に凸な函数 $f(x)$ と\n", "\n", "$$\n", "E[g(x)] = w_1 g(a_1)+\\cdots+w_n g(a_n), \\quad\n", "w_i\\geqq 0, \\quad w_1+\\cdots+w_n=1\n", "$$\n", "\n", "に関するJensenの不等式\n", "\n", "$$\n", "w_1 f(a_1)+\\cdots + w_n f(a_n) \\leqq f(w_1 a_1 +\\cdots+ w_n a_n)\n", "\\tag{$*$}\n", "$$\n", "\n", "を $n$ に関する数学的帰納法を用いて直接証明せよ.\n", "\n", "**解答例:** $n=1$ のとき, ($*$) は $f(a_1)\\leqq f(a_1)$ を意味するので, 自明に正しい.\n", "\n", "$n=N\\geqq 1$ に関する ($*$) が常に成立していると仮定し(帰納法の仮定),\n", "\n", "$$\n", "w_i \\geqq 0, \\quad w_1+\\cdots+w_N+w_{N+1} = 1\n", "$$\n", "\n", "と仮定する. もしも $w_{N+1}=1$ ならば $n=N+1$ の場合の ($*$) は自明に成立している. 以下では $w_{N+1}<1$ と仮定し, \n", "\n", "$$\n", "t_i = \\frac{w_i}{1-w_{N+1}}\n", "$$\n", "\n", "とおく. このとき, $w_i\\geqq 0$, $w_1+\\cdots+w_N=1-w_{N+1}$ より, \n", "\n", "$$\n", "t_i \\geqq 0, \\quad\n", "t_1+\\cdots+t_N = \\frac{w_1+\\cdots+w_N}{1-w_{N+1}} = 1.\n", "$$\n", "\n", "したがって, $n=N$ の場合の($*$)より, \n", "\n", "$$\n", "t_1 f(a_1)+\\cdots+t_N f(a_N) \\leqq f(t_1 a_1+\\cdots+t_N a_N).\n", "$$\n", "\n", "$f$ は上に凸と仮定してあったので, $w_i=(1-w_{N+1})t_i$ を使うと,\n", "\n", "$$\n", "\\begin{aligned}\n", "w_1 f(a_1)+\\cdots+w_N f(a_N)+w_{N+1}f(a_{N+1}) &=\n", "(1-w_{N+1})(t_1 f(a_1)+\\cdots+t_N f(a_N))+w_{N+1}f(a_{N+1})\n", "\\\\ &\\leqq\n", "(1-w_{N+1})f(t_1 a_1+\\cdots+t_N a_N) + w_{N+1} f(a_{N+1})\n", "\\\\ &\\leqq\n", "f((1-w_{N+1})(t_1 a_1+\\cdots+t_N a_N)+w_{N+1} a_{N+1})\n", "\\\\ &=\n", "f(w_1 a_1+\\cdots+w_N a_N+w_{N+1} a_{N+1}) .\n", "\\end{aligned}\n", "$$\n", "\n", "ここで, 2行目で $n=N$ の場合の($*$)を使い, 3行目で $f$ が上に凸であることを使った.\n", "\n", "ゆえに数学的帰納法によってすべての $n$ について ($*$) が成立する. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### 相加相乗平均の不等式" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**例:** $a_i>0$ であるとし, \n", "\n", "$$\n", "E[f(x)] = \\frac{f(a_1)+\\cdots+f(a_n)}{n}\n", "$$\n", "\n", "とおく. $x>0$ に対して $f(x)=\\log x$ とおく. このとき, $f(x)=\\log x$ は下に凸なので, Jensenの不等式より $E[f(x)] \\leqq f(E[x])$. そして, \n", "\n", "$$\n", "E[f(x)] = \\frac{\\log a_1+\\cdots+\\log a_n}{n} = \\log(a_1\\cdots a_n)^{1/n}, \\quad\n", "f(E[x]) = \\log\\frac{a_1+\\cdots+a_n}{n}\n", "$$\n", "\n", "なので, $\\log$ の単調増加性より, \n", "\n", "$$\n", "(a_1\\cdots a_n)^{1/n} \\leqq \\frac{a_1+\\cdots+a_n}{n}.\n", "$$\n", "\n", "これでJensenの不等式が相加相乗平均の不等式を含んでいることがわかった. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**例題:** 下に凸な函数 $f(x)=e^x$ に関するJensenの不等式を用いて相加相乗平均の不等式を証明し直せ.\n", "\n", "**解答例:** $a_i>0$ であるとし, $A_i=\\log a_i$, $\\ds E[f(x)] = \\frac{f(A_1)+\\cdots+f(A_n)}{n}$ とおくと, $f(x)=e^x$ のとき\n", "\n", "$$\n", "\\begin{aligned}\n", "&\n", "E[f(x)] = E[e^x] = \\frac{e^{A_1}+\\cdots+e^{A_n}}{n} = \\frac{a_1+\\cdots+a_n}{n}, \n", "\\\\ &\n", "f(E[x]) = e^{(A_1+\\cdots+A_n)/n} = \\left(e^{A_1}\\cdots e^{A_n}\\right)^{1/n} = (a_1\\cdots a_n)^{1/n}.\n", "\\end{aligned}\n", "$$\n", "\n", "下に凸な函数 $f(x)=e^x$ に関するJensenの不等式 $E[f(x)] \\geqq f(E[x])$ より,\n", "\n", "$$\n", "\\frac{a_1+\\cdots+a_n}{n} \\geqq (a_1\\cdots a_n)^{1/n}.\n", "$$\n", "\n", "これで示すべきことが示された. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Youngの不等式" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**Youngの不等式の一般化:** $p_i>0$, $\\ds\\frac{1}{p_1}+\\cdots+\\frac{1}{p_n}=1$, $a_i>0$ のとき\n", "\n", "$$\n", "a_1\\cdots a_n \\leqq \\frac{a_1^{p_1}}{p_1}+\\cdots+\\frac{a_n^{p_n}}{p_n}\n", "$$\n", "\n", "$n=2$ の場合をYoungの不等式と呼ぶ. すなわち $p>0$, $q>0$, $\\ds\\frac{1}{p}+\\frac{1}{q}=1$, $a>0$, $b>0$ のときの\n", "\n", "$$\n", "ab \\leqq \\frac{a^p}{p} + \\frac{b^q}{q}\n", "$$\n", "\n", "という不等式を**Youngの不等式**と呼ぶ." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**証明:** 上に凸な函数 $f(x)=\\log x$ に関するJensenの不等式より\n", "\n", "$$\n", "\\log(a_1\\cdots a_n)\n", "= \\frac{\\log a_1^{p_1}}{p_1} + \\cdots + \\frac{\\log a_n^{p_n}}{p_n}\n", "\\leqq \\log\\left(\\frac{a_1^{p_1}}{p_1}+\\cdots+\\frac{a_n^{p_n}}{p_n}\\right)\n", "$$\n", "\n", "ゆえに\n", "\n", "$$\n", "a_1\\cdots a_n \\leqq \\frac{a_1^{p_1}}{p_1}+\\cdots+\\frac{a_n^{p_n}}{p_n}\n", "\\qquad \\QED\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**問題:** $a,b>0$, $p,q>0$, $\\ds\\frac{1}{p}+\\frac{1}{q}=1$ のとき\n", "\n", "$$\n", "ab \\leqq \\frac{a^p}{p} + \\frac{b^p}{q}\n", "$$\n", "\n", "となること(つまりYoungの不等式)を直接的に証明してみよ." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**解答例1:** $f(x)=\\log x$ が上に凸であることより, $A,B>0$ について\n", "\n", "$$\n", "\\frac{1}{p}\\log A + \\frac{1}{q}\\log B\\leqq \\log\\left(\\frac{A}{p}+\\frac{B}{q}\\right).\n", "$$\n", "\n", "ゆえに $A=a^p$, $B=b^q$ とおくと, \n", "\n", "$$\n", "\\log(ab) = \\frac{1}{p}\\log a^p + \\frac{1}{q}\\log b^q\\leqq \\log\\left(\\frac{a^p}{p}+\\frac{b^q}{q}\\right).\n", "$$\n", "\n", "したがって,\n", "\n", "$$\n", "ab \\leqq \\frac{a^p}{p} + \\frac{b^p}{q}. \\qquad \\QED\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**解答例2:** $f(x)=e^x$ が下に凸であることより, 実数 $A,B$ について\n", "\n", "$$\n", "\\frac{1}{p}e^A + \\frac{1}{q}e^B \\geqq e^{A/p+B/q} = e^{A/p} e^{B/q}.\n", "$$\n", "\n", "ゆえに $A=\\log a^p$, $B=\\log b^q$ とおくと, \n", "\n", "$$\n", "\\frac{a^p}{p}+\\frac{b^q}{q} \\geqq ab. \\qquad \\QED\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**解答例3:** $f(x)$ は $x\\geqq 0$ の狭義単調増加連続函数で $f(0)=0$ を満たすものであるとし, \n", "\n", "$$\n", "X = \\{\\,(x,y)\\mid 0\\leqq x\\leqq a,\\ 0\\leqq y\\leqq f(x)\\,\\}, \\quad\n", "Y = \\{\\,(x,y)\\mid 0\\leqq x\\leqq f^{-1}(y),\\ 0\\leqq y\\leqq b\\,\\}\n", "$$\n", "\n", "とおくと, $[0,a]\\times[0,b]\\subset X\\cup Y$ となるので(図を描いてみよ), 面積を比較することによって\n", "\n", "$$\n", "ab \\leqq \\int_0^a f(x)\\,dx + \\int_0^b f^{-1}(y)\\,dy.\n", "\\tag{$\\star$}\n", "$$\n", "\n", "$f(x)=x^{p-1}$ とおくと,\n", "\n", "$$\n", "\\frac{1}{p}+\\frac{1}{q}=1 \\iff (p-1)(q-1)=1\n", "$$\n", "\n", "より, $f^{-1}(y)=y^{1/(p-1)}=y^{q-1}$ となることがわかる. これに上の不等式を適用すると\n", "\n", "$$\n", "ab \\leqq \\frac{a^p}{p} + \\frac{b^p}{q}\n", "$$\n", "\n", "が得られる. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**注意:** $a^{p-1}=b$ ならば ($\\star$) で等号が成立する. \n", "\n", "$$\n", "\\frac{1}{p}+\\frac{1}{q}=1 \\iff (p-1)(q-1)=1 \\iff (p-1)q = p\n", "$$\n", "\n", "なので $a^{p-1}=b$ と $a^p = b^q$ は同値である(前者の両辺を $q$ 乗すると後者になる). $\\QED$" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "image/png": "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", "image/svg+xml": [ "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", " \n", " \n", " \n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n", "\n" ], "text/html": [ "" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "function plot_Young(a, b; p=2.5, kwarg...)\n", " q = p/(p-1)\n", " f(x) = x^(p-1)\n", " g(y) = y^(q-1)\n", " A = max(a, g(b))\n", " x = 0:a/200:a\n", " y = 0:b/200:b\n", " x1 = 0:A/200:A\n", " P = plot(legend=false; kwarg...)\n", " plot!([a,a], [0,b], color=:black)\n", " plot!([0,a], [b,b], color=:black)\n", " plot!(x, f.(x), color=:red, fill=(0, 0.4, :pink))\n", " plot!(x1, f.(x1), color=:red, fill=(b, 0.4, :pink))\n", " if A > a\n", " x2 = a:(A-a)/200:A\n", " plot!(x2, f.(x2), color=:red, fill=(b, 0.4, :pink))\n", " end\n", " P\n", "end\n", "\n", "P1 = plot_Young(3,2)\n", "P2 = plot_Young(2,5)\n", "plot(P1, P2, size=(600, 300))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Hölderの不等式\n", "\n", "#### $L^p$ ノルム\n", "\n", "区間 $[a,b]$ 乗の連続函数 $f$ に対して $\\|f\\|_p$ を\n", "\n", "$$\n", "\\|f\\|_p = \\left(\\int_a^b \\left|f(x)\\right|^p\\,dx\\right)^{1/p}\n", "$$\n", "\n", "と定める. これを函数 $f$ の $L^p$ ノルムと呼ぶ.\n", "\n", "**問題:** 定数 $\\alpha$ について $\\left\\|\\alpha f\\right\\|_p=|\\alpha|\\left\\|f\\right\\|_p$ が成立していることを示せ.\n", "\n", "**解答例:**\n", "$$\n", "\\|\\alpha f\\|_p = \\left(\\int_a^b \\left|\\alpha f(x)\\right|^p\\,dx\\right)^{1/p} =\n", "\\left(\\left|\\alpha\\right|^p \\int_a^b \\left|f(x)\\right|^p\\,dx\\right)^{1/p} =\n", "\\left|\\alpha\\right| \\left(\\int_a^b \\left|f(x)\\right|^p\\,dx\\right)^{1/p} =\n", "|\\alpha|\\|f\\|_p. \\qquad \\QED\n", "$$\n", "\n", "**注意:** 上の問題の結果より, 特に $g=\\dfrac{f}{\\|f\\|_p}$ とおくと $\\|g\\|_p=1$ となることがわかる. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 一般化されたHölderの不等式\n", "\n", "$p > 0$, $p_i > 0$ であるとし, \n", "\n", "$$\n", "\\frac{1}{p_1} + \\cdots + \\frac{1}{p_n} = \\frac{1}{p}\n", "$$\n", "\n", "と仮定する. このとき, 区間 $[a,b]$ 上の連続函数 $f_i$ 達について\n", "\n", "$$\n", "\\|f_1\\cdots f_n\\|_p \\leqq \\|f_1\\|_{p_1}\\cdots\\|f_n\\|_{p_n}\n", "\\tag{$*$}\n", "$$\n", "\n", "が成立する. これを**一般化されたHölderの不等式**と呼ぶことにする. $n=2$, $p=1$ の場合はHölderの不等式と呼ばれる. すなわち, $p>0$, $q>0$ かつ\n", "\n", "$$\n", "\\frac{1}{p}+\\frac{1}{q}=1\n", "$$\n", "\n", "のときの\n", "\n", "$$\n", "\\|fg\\|_1 \\leqq \\|f\\|_p \\|g\\|_q\n", "$$\n", "\n", "という不等式は**Hölderの不等式**と呼ばれる. さらにこれの $p=q=2$ の場合は**Cauchy-Schwarzの不等式**の特別な場合である." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**一般化されたHölderの不等式の証明の概略:** $g_i(x) = \\dfrac{f_i(x)}{\\|f_i\\|_{p_i}}$ とおく. そのとき $\\|g_i\\|_{p_i}=1$ となる.\n", "\n", "$\\ds\\frac{1}{p_1} + \\cdots + \\frac{1}{p_n} = \\frac{1}{p}$ は $\\ds\\frac{p}{p_1} + \\cdots + \\frac{p}{p_n} = 1$ と同値なので, $q_i=p_i/p$ とおくと, \n", "\n", "$$\n", "q_i>0, \\quad p q_i = p_i, \\quad \\frac{1}{q_1}+\\cdots+\\frac{1}{q_n} = 1.\n", "$$\n", "\n", "ゆえに $a_i = |g_i(x)|^p$ にYoungの不等式の一般化を適用することによって, \n", "\n", "$$\n", "|g_1(x)\\cdots g_n(x)|^p =\n", "|g_1(x)|^p\\cdots|g_n(x)|^p \\leqq\n", "\\frac{|g_1(x)|^{pq_1}}{q_1}+\\cdots+\\frac{|g_n(x)|^{pq_n}}{q_n} =\n", "\\frac{|g_1(x)|^{p_1}}{q_1}+\\cdots+\\frac{|g_n(x)|^{p_n}}{q_n}.\n", "$$\n", "\n", "これを $x$ で積分すると,\n", "\n", "$$\n", "(\\|g_1\\cdots g_n\\|_p)^p \\leqq\n", "\\frac{(\\|g_1(x)\\|_{p_1})^{p_1}}{q_1}+\\cdots+\\frac{(\\|g_n(x)\\|_{p_n})^{p_n}}{q_n} =\n", "\\frac{1}{q_1}+\\cdots+\\frac{1}{q_n}=1.\n", "$$\n", "\n", "ゆえに, \n", "\n", "$$\n", "\\frac{\\|f_1\\cdots f_n\\|_p}{\\|f_1\\|_{p_1}\\cdots\\|f_n\\|_{p_n}} =\n", "\\|g_1\\cdots g_n\\|_p\\leqq 1.\n", "$$. \n", "\n", "したがって,\n", "\n", "$$\n", "\\|f_1\\cdots f_n\\|_p\\leqq \\|f_1\\|_{p_1}\\cdots\\|f_n\\|_{p_n}. \\qquad\\QED\n", "$$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 一般化されていないHölderの不等式\n", "\n", "**問題:** (一般化されていない)Youngの不等式から(一般化されていない)Hölderの不等式を導け.\n", "\n", "**解答例の概略:** $p,q>0$, $\\ds\\frac{1}{p}+\\frac{1}{q}=1$ と仮定する.\n", "\n", "$$\n", "\\|fg\\|_1 \\leqq \\|f\\|_p \\|g\\|_q\n", "$$\n", "\n", "を証明したい. 左辺を右辺で割ったものが $1$ 以下になることを示せばよい. \n", "\n", "$$\n", "a(x) = \\frac{|f(x)|}{\\|f\\|_p}, \\quad\n", "b(x) = \\frac{|g(x)|}{\\|g\\|_q}\n", "$$\n", "\n", "とおくと, $\\|a\\|_p=\\|b\\|_q=1$ となる. $a(x)$, $b(x)$ にYoungの不等式を適用すると,\n", "\n", "$$\n", "a(x)b(x) \\leqq \\frac{a(x)^p}{p} + \\frac{b(x)^q}{q}.\n", "$$\n", "\n", "両辺を $x$ について積分すると,\n", "\n", "$$\n", "\\begin{aligned}\n", "&\n", "\\int_a^b a(x)b(x)\\,dx = \\|ab\\|_1 = \\frac{\\|fg\\|_1}{\\|f\\|_p \\|g\\|_q}, \n", "\\\\ &\n", "\\int_a^b \\left(\\frac{a(x)^p}{p} + \\frac{b(x)^q}{q}\\right)\\,dx = \n", "\\frac{(\\|a\\|_p)^p}{p}+\\frac{(\\|b\\|_q)^q}{q} = \\frac{1}{p}+\\frac{1}{q} = 1.\n", "\\end{aligned}\n", "$$\n", "\n", "ゆえに\n", "\n", "$$\n", "\\frac{\\|fg\\|_1}{\\|f\\|_p \\|g\\|_q} \\leqq 1.\n", "$$\n", "\n", "これより, Hölderの不等式が成立することがわかる. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### Cauchy-Schwarzの不等式\n", "\n", "$p,q>0$, $\\ds\\frac{1}{p}+\\frac{1}{q}=1$ と仮定する. このとき, $\\|f\\|_p<\\infty$, $\\|g\\|_q<\\infty$ を満たす函数 $f,g$ の内積を\n", "\n", "$$\n", "\\bra f,g\\ket = \\int_a^b \\overline{f(x)}g(x)\\,dx\n", "$$\n", "\n", "と定義できる. ここで $\\overline{f(x)}$ は $f(x)$ の複素共役を意味している. $f(x)$ が実数ならば $\\overline{f(x)}=f(x)$ である. このとき, Hölderの不等式より,\n", "\n", "$$\n", "|\\bra f,g\\ket|\\leqq \n", "\\int_a^b \\left|\\overline{f(x)}\\right|\\left|g(x)\\right|\\,dx =\n", "\\int_a^b \\left|f(x)\\right|\\left|g(x)\\right|\\,dx =\n", "\\|fg\\|_1 \\leqq \\|f\\|_p\\|g\\|_q.\n", "$$\n", "\n", "すなわち, \n", "\n", "$$\n", "|\\bra f,g\\ket| \\leqq \\|fg\\|_1 \\leqq \\|f\\|_p\\|g\\|_q.\n", "$$\n", "\n", "この不等式の $p=q=1/2$ の場合は**Cauchy-Schwarzの不等式**と呼ばれている." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 分配函数の対数凸性のHölderの不等式を用いた証明\n", "\n", "**問題:** $a0$ に対して $\\Gamma(s) = \\int_0^\\infty e^{-x} x^{s-1}\\,dx = \\int_0^\\infty e^{(s-1)\\log x-x}\\,dx$ とおくと, その対数 $\\log\\Gamma(s)$ は $s>0$ の下に凸な函数になる. $\\QED$ " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "#### 分配函数の対数凸性の微分を用いた証明法\n", "\n", "**注意:** 上の問題の記号のもとで, 函数 $h(x)$ に対する $\\bra h(x)\\ket=\\bra h(y)\\ket$ を次のように定める:\n", "\n", "$$\n", "\\bra h(x)\\ket = \\frac{1}{Z(\\beta)}\\int_a^b h(x) e^{-\\beta f(x)+g(x)}\\,dx, \\quad\n", "\\bra h(y)\\ket = \\frac{1}{Z(\\beta)}\\int_a^b h(y) e^{-\\beta f(y)+g(y)}\\,dy.\n", "$$\n", "\n", "さらに函数 $h(x,y)$ に対する $\\bra h(x,y)\\ket$ を次のように定める:\n", "\n", "$$\n", "\\bra h(x,y)\\ket = \\frac{1}{Z(\\beta)^2}\\int_a^b\\int_a^b h(x,y) e^{-\\beta f(x)+g(x)}e^{-\\beta f(y)+g(y)}\\,dx\\,dy.\n", "$$\n", "\n", "このとき $\\bra f(x)\\ket^2=\\bra f(x)f(y)\\ket$ などが成立している.\n", "\n", "もしも上の問題の $Z(\\beta)$ について $\\beta$ に関する微分と積分の順序交換を自由にできるならば\n", "\n", "$$\n", "\\begin{aligned}\n", "&\n", "-\\frac{d}{d\\beta}\\log Z(\\beta) = \\frac{\\int_a^b e^{-\\beta f(x)+g(x)}f(x)\\,dx}{Z(\\beta)} = \\bra f(x)\\ket, \n", "\\\\ &\n", "\\frac{d^2}{d\\beta^2}\\log Z(\\beta) = \\bra f(x)^2\\ket - \\bra f(x)\\ket^2 =\n", "\\bra f(x)f(x)\\ket - \\bra f(x)f(y)\\ket\n", "\\\\ &\\qquad=\n", "\\frac{1}{2}(\\bra f(x)f(x)\\ket - 2\\bra f(x)f(y)\\ket + \\bra f(y)f(y)\\ket) =\n", "\\frac{1}{2}\\bra (f(x)+f(y))^2\\ket \\geqq 0.\n", "\\end{aligned}\n", "$$\n", "\n", "これからも, $\\log Z(\\beta)$ が下に凸な函数であることがわかる. $\\QED$" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Minkowskiの不等式" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$L^1$ ノルムについては, 三角不等式 $|f(x)+g(x)|\\leqq |f(x)|+|g(x)|$ より, \n", "\n", "$$\n", "\\|f+g\\|_1 = \\int_a^b |f(x)+g(x)|\\,dx\n", "\\leqq \\int_a^b(|f(x)|+|g(x)|)\\,dx = \\|f\\|_1 + \\|g\\|_1\n", "$$\n", "\n", "が成立している. この $L^1$ ノルムに関する三角不等式はそのまま $L^p$ ノルム ($p>1$) に一般化される." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "$p>1$ であると仮定する. $q=\\dfrac{p}{p-1}$ とおくと, $\\ds\\frac{1}{p}+\\frac{1}{q}=1$. このとき,\n", "\n", "$$\n", "\\left\\|\\,\\left|\\varphi\\right|^{p-1}\\right\\|_q=\n", "\\left\\|\\,\\left|\\varphi\\right|^{p-1}\\right\\|_{p/(p-1)}=\n", "\\left(\\int_a^b \\left|\\varphi(x)\\right|^p\\,dx\\right)^{(p-1)/p}=\n", "(\\|\\varphi\\|_p)^{p-1}.\n", "$$\n", "\n", "これを $\\varphi=f+g$ に適用することによって,\n", "\n", "$$\n", "\\begin{aligned}\n", "(\\|f+g\\|_p)^p &=\n", "\\int_a^b \\left|f(x)+g(x)\\right|^p\\,dx = \\int_a^b \\left|f(x)+g(x)\\right|\\left|f(x)+g(x)\\right|^{p-1}\\,dx\n", "\\\\ &\\leqq\n", "\\int_a^b \\left|f(x)\\right| \\left|f(x)+g(x)\\right|^{p-1}\\,dx +\n", "\\int_a^b \\left|g(x)\\right| \\left|f(x)+g(x)\\right|^{p-1}\\,dx\n", "\\\\ &\\leqq\n", "\\|f\\|_p \\left\\|\\left|f(x)+g(x)\\right|^{p-1}\\right\\|_q +\n", "\\|g\\|_p \\left\\|\\left|f(x)+g(x)\\right|^{p-1}\\right\\|_q \n", "\\\\ &=\n", "\\|f\\|_p (\\|f(x)+g(x)\\|_p)^{p-1} +\n", "\\|g\\|_p (\\|f(x)+g(x)\\|_p)^{p-1}\n", "\\\\ &=\n", "(\\|f\\|_p+\\|g\\|_p) (\\|f(x)+g(x)\\|_p)^{p-1}\n", "\\end{aligned}\n", "$$\n", "\n", "ここで, 2行目の不等号で三角不等式 $|f(x)+g(x)|\\leqq |f(x)|+|g(x)|$ を使い, 3行目の不等号でHölderの不等式を使った. したがって,\n", "\n", "$$\n", "\\|f+g\\|_p \\leqq \\|f\\|_p+\\|g\\|_p.\n", "$$\n", "\n", "これを**Minkowskiの不等式**と呼ぶ." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "**定義:** $\\|f\\|_p<\\infty$ すなわち $\\ds \\int_a^b |f(x)|^p\\,dx<\\infty$ を満たす函数を **$L^p$ 函数** もしくは **$p$ 乗可積分函数** と呼ぶ. 特に $L^1$ 函数を単に**可積分函数**と呼ぶ. $\\QED$\n", "\n", "Minkowskiの不等式より, $L^p$ 函数の和も $L^p$ 函数になる." ] } ], "metadata": { "@webio": { "lastCommId": null, "lastKernelId": null }, "_draft": { "nbviewer_url": "https://gist.github.com/24a01ebc7d50e000e8e4244615355a4d" }, "gist": { "data": { "description": "08 convexity.ipynb", "public": true }, "id": "24a01ebc7d50e000e8e4244615355a4d" }, "jupytext": { "formats": "ipynb,md" }, "kernelspec": { "display_name": "Julia 1.9.1", "language": "julia", "name": "julia-1.9" }, "language_info": { "file_extension": ".jl", "mimetype": "application/julia", "name": "julia", "version": "1.9.1" }, "toc": { "base_numbering": 1, "nav_menu": {}, "number_sections": true, "sideBar": true, "skip_h1_title": true, "title_cell": "目次", "title_sidebar": "目次", "toc_cell": true, "toc_position": {}, "toc_section_display": true, "toc_window_display": false } }, "nbformat": 4, "nbformat_minor": 2 }