{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "超幾何関数に対するオイラー積分表示の証明の続きです。証明したいのは下記の(%o3)の式です。" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{1}$}\\left[ z<1 \\right] \\]" ], "text/plain": [ "(%o1) [z < 1]" ], "text/x-maxima": [ "[z < 1]" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{2}$}\\left[ z>-1 \\right] \\]" ], "text/plain": [ "(%o2) [z > - 1]" ], "text/x-maxima": [ "[z > -1]" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{3}$}F\\left( \\left. \\begin{array}{c}a,\\;b\\\\c\\end{array} \\right |,z\\right)=\\frac{\\Gamma\\left(c\\right)\\,\\int_{0}^{1}{\\frac{\\left(1-t\\right)^{c-a-1}\\,t^{a-1}}{\\left(1-t\\,z\\right)^{b}}\\;dt}}{\\Gamma\\left(a\\right)\\,\\Gamma\\left(c-a\\right)}\\]" ], "text/plain": [ " 1\n", " / c - a - 1 a - 1\n", " [ (1 - t) t\n", " gamma(c) I ----------------------- dt\n", " ] b\n", " / (1 - t z)\n", " 0\n", "(%o3) hypergeometric([a, b], [c], z) = --------------------------------------\n", " gamma(a) gamma(c - a)" ], "text/x-maxima": [ "hypergeometric([a,b],[c],z) = (gamma(c)*'integrate(\n", " ((1-t)^(c-a-1)*t^(a-1))/(1-t*z)^b,t,0,\n", " 1))\n", " /(gamma(a)*gamma(c-a))" ] }, "execution_count": 1, "metadata": {}, "output_type": "execute_result" }, { "name": "stdout", "output_type": "stream", "text": [ "SB-KERNEL:REDEFINITION-WITH-DEFUN: redefining MAXIMA::SIMP-HYPERGEOMETRIC in DEFUN\n" ] } ], "source": [ "assume(z-1<0);\n", "assume(-1 ---------- dt\n", " / n!\n", " ====\n", " n = 0" ], "text/x-maxima": [ "'integrate(((1-t)^(c-a-1)*t^(a-1))/(1-t*z)^b,t,0,1)\n", " = 'integrate((1-t)^(c-a-1)*t^(a-1)\n", " *'sum((pochhammer(b,n)*t^n*z^n)/n!,n,0,inf),t,0,1)" ] }, "execution_count": 2, "metadata": {}, "output_type": "execute_result" }, { "name": "stdout", "output_type": "stream", "text": [ "SB-KERNEL:REDEFINITION-WITH-DEFUN: redefining MAXIMA::SIMP-UNIT-STEP in DEFUN\n", "SB-KERNEL:REDEFINITION-WITH-DEFUN: redefining MAXIMA::SIMP-POCHHAMMER in DEFUN\n" ] } ], "source": [ "F2:'integrate(t^(a-1)*(1-t)^(c-a-1)*(1-t*z)^(-b),t,0,1)='integrate(t^(a-1)*(1-t)^(c-a-1)*sum(pochhammer(b,n)/n!*(z*t)^n,n,0,inf),t,0,1);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "総和記号の外側の積の項を内側に移し、積分と総和を入れ替えます(この入れ替えには収束の議論が別途必要ですがそこは省略です)。" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{5}$}\\int_{0}^{1}{\\sum_{n=0}^{\\infty }{\\frac{\\left(b\\right)_{n}\\,\\left(1-t\\right)^{c-a-1}\\,t^{n+a-1}\\,z^{n}}{n!}}\\;dt}\\]" ], "text/plain": [ " 1 inf c - a - 1 n + a - 1 n\n", " / ==== (b) (1 - t) t z\n", " [ \\ n\n", "(%o5) I > ----------------------------------- dt\n", " ] / n!\n", " / ====\n", " 0 n = 0" ], "text/x-maxima": [ "'integrate('sum((pochhammer(b,n)*(1-t)^(c-a-1)*t^(n+a-1)*z^n)/n!,n,0,inf),t,0,\n", " 1)" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "F3:intosum(rhs(F2));" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{6}$}\\sum_{n=0}^{\\infty }{\\frac{\\left(b\\right)_{n}\\,\\left(\\int_{0}^{1}{\\left(1-t\\right)^{c-a-1}\\,t^{n+a-1}\\;dt}\\right)\\,z^{n}}{n!}}\\]" ], "text/plain": [ " 1\n", " /\n", " [ c - a - 1 n + a - 1 n\n", " (b) (I (1 - t) t dt) z\n", " inf n ]\n", " ==== /\n", " \\ 0\n", "(%o6) > -------------------------------------------\n", " / n!\n", " ====\n", " n = 0" ], "text/x-maxima": [ "'sum((pochhammer(b,n)*('integrate((1-t)^(c-a-1)*t^(n+a-1),t,0,1))*z^n)/n!,n,0,\n", " inf)" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "F4:sum('integrate(part(F3,1,1),t,0,1),n,0,inf);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "この積分はベータ関数になっていることがわかります。実際、ベータ関数の定義は\n", "$$\\beta (x,y)= \\int_0^1 {(1-t)^{x-1}\\,t^{y-1}}$$\n", "です。この積分をベータ関数に書き直せば、ベータ関数に関する恒等式を使えるようになります。そこでこの積分をベータ関数に書き直すルールを定義しましょう。" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{7}$}\\mathbf{done}\\]" ], "text/plain": [ "(%o7) done" ], "text/x-maxima": [ "done" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" }, { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{8}$}{\\it int\\_to\\_beta}:\\int_{0}^{1}{\\left(1-t\\right)^{{\\it exp}_{1}-1}\\,t^{{\\it exp}_{2}-1}\\;dt}\\rightarrow \\beta\\left({\\it exp}_{1} , {\\it exp}_{2}\\right)\\]" ], "text/plain": [ " 1\n", " /\n", " [ exp1 - 1 exp2 - 1\n", "(%o8) int_to_beta : I (1 - t) t dt -> beta(exp1, exp2)\n", " ]\n", " /\n", " 0" ], "text/x-maxima": [ "int_to_beta:marrow('integrate((1-t)^(exp1-1)*t^(exp2-1),t,0,1),\n", " beta(exp1,exp2))" ] }, "execution_count": 5, "metadata": {}, "output_type": "execute_result" } ], "source": [ "matchdeclare([exp1,exp2],true);\n", "defrule(int_to_beta,'integrate((1-t)^(exp1-1)*t^(exp2-1),t,0,1), beta(exp1,exp2));" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "%o6にこのルールを適用することで次式を得ます。" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{9}$}\\sum_{n=0}^{\\infty }{\\frac{\\left(b\\right)_{n}\\,\\beta\\left(c-a , n+a\\right)\\,z^{n}}{n!}}\\]" ], "text/plain": [ " inf n\n", " ==== (b) beta(c - a, n + a) z\n", " \\ n\n", "(%o9) > --------------------------\n", " / n!\n", " ====\n", " n = 0" ], "text/x-maxima": [ "'sum((pochhammer(b,n)*beta(c-a,n+a)*z^n)/n!,n,0,inf)" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "F5:apply1(F4,int_to_beta);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "この式にmakegamma関数を適用するとポッホハマー記号、ベータ関数、階乗が全てガンマ関数で表示されます。" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{10}$}\\frac{\\Gamma\\left(c-a\\right)\\,\\sum_{n=0}^{\\infty }{\\frac{\\Gamma\\left(n+a\\right)\\,\\Gamma\\left(n+b\\right)\\,z^{n}}{\\Gamma\\left(n+1\\right)\\,\\Gamma\\left(n+c\\right)}}}{\\Gamma\\left(b\\right)}\\]" ], "text/plain": [ " inf\n", " ==== n\n", " \\ gamma(n + a) gamma(n + b) z\n", " gamma(c - a) > ----------------------------\n", " / gamma(n + 1) gamma(n + c)\n", " ====\n", " n = 0\n", "(%o10) -----------------------------------------------\n", " gamma(b)" ], "text/x-maxima": [ "(gamma(c-a)*'sum((gamma(n+a)*gamma(n+b)*z^n)/(gamma(n+1)*gamma(n+c)),n,0,inf))\n", " /gamma(b)" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "F6:makegamma(F5);" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{11}$}\\sum_{n=0}^{\\infty }{\\frac{\\Gamma\\left(c-a\\right)\\,\\Gamma\\left(n+a\\right)\\,\\Gamma\\left(n+b\\right)\\,z^{n}}{\\Gamma\\left(b\\right)\\,\\Gamma\\left(n+1\\right)\\,\\Gamma\\left(n+c\\right)}}\\]" ], "text/plain": [ " inf\n", " ==== n\n", " \\ gamma(c - a) gamma(n + a) gamma(n + b) z\n", "(%o11) > -----------------------------------------\n", " / gamma(b) gamma(n + 1) gamma(n + c)\n", " ====\n", " n = 0" ], "text/x-maxima": [ "'sum((gamma(c-a)*gamma(n+a)*gamma(n+b)*z^n)/(gamma(b)*gamma(n+1)*gamma(n+c)),\n", " n,0,inf)" ] }, "execution_count": 8, "metadata": {}, "output_type": "execute_result" } ], "source": [ "F7:intosum(F6);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "あと一息です。(%o3)を振り返ってみると、右辺の積分が(%o11)と等しいことがわかりました。左辺を定義の級数の形で書き、右辺は積分のところを上記の総和で置き換えると、証明するべき式は次式であること、あるいはそれを少し変形した(%o13)であることがわかります。" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{12}$}\\sum_{n=0}^{\\infty }{\\frac{\\left(a\\right)_{n}\\,\\left(b\\right)_{n}\\,z^{n}}{\\left(c\\right)_{n}\\,n!}}=\\frac{\\Gamma\\left(c\\right)\\,\\sum_{n=0}^{\\infty }{\\frac{\\Gamma\\left(c-a\\right)\\,\\Gamma\\left(n+a\\right)\\,\\Gamma\\left(n+b\\right)\\,z^{n}}{\\Gamma\\left(b\\right)\\,\\Gamma\\left(n+1\\right)\\,\\Gamma\\left(n+c\\right)}}}{\\Gamma\\left(a\\right)\\,\\Gamma\\left(c-a\\right)}\\]" ], "text/plain": [ " inf n\n", " ==== (a) (b) z\n", " \\ n n\n", "(%o12) > ------------ = \n", " / (c) n!\n", " ==== n\n", " n = 0\n", " inf\n", " ==== n\n", " \\ gamma(c - a) gamma(n + a) gamma(n + b) z\n", " gamma(c) > -----------------------------------------\n", " / gamma(b) gamma(n + 1) gamma(n + c)\n", " ====\n", " n = 0\n", " --------------------------------------------------------\n", " gamma(a) gamma(c - a)" ], "text/x-maxima": [ "'sum((pochhammer(a,n)*pochhammer(b,n)*z^n)/(pochhammer(c,n)*n!),n,0,inf)\n", " = (gamma(c)*'sum((gamma(c-a)*gamma(n+a)*gamma(n+b)*z^n)\n", " /(gamma(b)*gamma(n+1)*gamma(n+c)),n,0,inf))\n", " /(gamma(a)*gamma(c-a))" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "F8:sum(pochhammer(a,n)*pochhammer(b,n)/pochhammer(c,n)*z^n/n!,n,0,inf)=gamma(c)/gamma(a)/gamma(c-a)*F7;" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{13}$}\\sum_{n=0}^{\\infty }{\\frac{\\left(a\\right)_{n}\\,\\left(b\\right)_{n}\\,z^{n}}{\\left(c\\right)_{n}\\,n!}}=\\sum_{n=0}^{\\infty }{\\frac{\\Gamma\\left(c\\right)\\,\\Gamma\\left(n+a\\right)\\,\\Gamma\\left(n+b\\right)\\,z^{n}}{\\Gamma\\left(a\\right)\\,\\Gamma\\left(b\\right)\\,\\Gamma\\left(n+1\\right)\\,\\Gamma\\left(n+c\\right)}}\\]" ], "text/plain": [ " inf n inf\n", " ==== (a) (b) z ==== n\n", " \\ n n \\ gamma(c) gamma(n + a) gamma(n + b) z\n", "(%o13) > ------------ = > -------------------------------------------\n", " / (c) n! / gamma(a) gamma(b) gamma(n + 1) gamma(n + c)\n", " ==== n ====\n", " n = 0 n = 0" ], "text/x-maxima": [ "'sum((pochhammer(a,n)*pochhammer(b,n)*z^n)/(pochhammer(c,n)*n!),n,0,inf)\n", " = 'sum((gamma(c)*gamma(n+a)*gamma(n+b)*z^n)\n", " /(gamma(a)*gamma(b)*gamma(n+1)*gamma(n+c)),n,0,inf)" ] }, "execution_count": 10, "metadata": {}, "output_type": "execute_result" } ], "source": [ "F9:lhs(F8)=intosum(rhs(F8));" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "収束条件を満たす任意の$z$について両辺が等しいためには、両辺の総和の各項の係数が全て等しいことが十分条件です。そこで係数の差を計算してみましょう。" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{14}$}\\frac{\\left(a\\right)_{n}\\,\\left(b\\right)_{n}}{\\left(c\\right)_{n}\\,n!}-\\frac{\\Gamma\\left(c\\right)\\,\\Gamma\\left(n+a\\right)\\,\\Gamma\\left(n+b\\right)}{\\Gamma\\left(a\\right)\\,\\Gamma\\left(b\\right)\\,\\Gamma\\left(n+1\\right)\\,\\Gamma\\left(n+c\\right)}\\]" ], "text/plain": [ " (a) (b)\n", " n n gamma(c) gamma(n + a) gamma(n + b)\n", "(%o14) --------- - -------------------------------------------\n", " (c) n! gamma(a) gamma(b) gamma(n + 1) gamma(n + c)\n", " n" ], "text/x-maxima": [ "(pochhammer(a,n)*pochhammer(b,n))/(pochhammer(c,n)*n!)\n", " -(gamma(c)*gamma(n+a)*gamma(n+b))/(gamma(a)*gamma(b)*gamma(n+1)*gamma(n+c))" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "F10:part(F9,1,1)/z^n-part(F9,2,1)/z^n;" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "この式のポッホハマー記号、階乗を全てガンマ関数に書き直して簡約してみます。" ] }, { "cell_type": "code", "execution_count": 12, "metadata": {}, "outputs": [ { "data": { "text/latex": [ "\\[\\tag{${\\it \\%o}_{15}$}0\\]" ], "text/plain": [ "(%o15) 0" ], "text/x-maxima": [ "0" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "makegamma(F10);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "というわけで(%o13)、従って\n", "$$F\\left( \\left. \\begin{array}{c}a,\\;b\\\\c\\end{array} \\right |,z\\right)=\\frac{\\Gamma\\left(c\\right)\\,\\int_{0}^{1}{\\frac{\\left(1-t\\right)^{c-a-1}\\,t^{a-1}}{\\left(1-t\\,z\\right)^{b}}\\;dt}}{\\Gamma\\left(a\\right)\\,\\Gamma\\left(c-a\\right)}$$\n", "が証明できました!" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Maxima", "language": "maxima", "name": "maxima" }, "language_info": { "codemirror_mode": "maxima", "file_extension": ".mac", "mimetype": "text/x-maxima", "name": "maxima", "pygments_lexer": "maxima", "version": "5.45.1" } }, "nbformat": 4, "nbformat_minor": 4 }