{
"cells": [
{
"cell_type": "markdown",
"id": "f85c94f9-b8c8-4fbe-8c29-765917ee2ea6",
"metadata": {},
"source": [
"#### B.C.Berndt: Number Theory in the Spirit of Ramanujanより\n",
"\n",
"$0\\lt x \\lt 1$の範囲で関数$F(x)$を\n",
"$$F(x)=exp\\left(-\\pi\\,\\frac{{}_2 F_1\\left(\\frac{1}{2},\\frac{1}{2};1;1-x\\right)}{{}_2 F_1\\left(\\frac{1}{2},\\frac{1}{2};1;x\\right)}\\right)$$\n",
"と定義しました(超幾何関数もFですが、引数の形が異なるので区別できると思います)。\n",
"
\n",
"
\n",
"**Chapter 5 Theorem 5.2.5**
\n",
"$$F\\left(1-\\frac{\\varphi\\left(-q\\right)^4}{\\varphi\\left(q\\right)^4}\\right)=q$$\n",
"\n",
"これはまた美しい式ですね。ラマヌジャンのテータ関数$\\varphi(q)$の式$1-\\frac{\\varphi\\left(-q\\right)^4}{\\varphi\\left(q\\right)^4}$と超幾何関数の式$F(x)=exp\\left(-\\pi\\,\\frac{{}_2 F_1\\left(\\frac{1}{2},\\frac{1}{2};1;1-x\\right)}{{}_2 F_1\\left(\\frac{1}{2},\\frac{1}{2};1;x\\right)}\\right)$が逆関数の関係にあるということです。\n",
"\n",
"これはグラフを描いて本当にそうなっていることを確認したいです。このような一見複雑な式もMaximaを使えばほぼそのまま数値計算できますからやってみましょう。まず$F(x), \\varphi(x)$、そして$g(q)=F\\left(1-\\frac{\\varphi\\left(-q\\right)^4}{\\varphi\\left(q\\right)^4}\\right)$をMaximaで定義します。"
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "3711c2d2-6062-41d7-8031-9b38301acee4",
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"\\[\\tag{${\\it \\%o}_{0}$}F\\left(x\\right):=\\exp \\left(\\frac{-\\pi\\,{\\it hypergeometric}\\left(\\left[ \\frac{1}{2} , \\frac{1}{2} \\right] , \\left[ 1 \\right] , 1-x\\right)}{{\\it hypergeometric}\\left(\\left[ \\frac{1}{2} , \\frac{1}{2} \\right] , \\left[ 1 \\right] , x\\right)}\\right)\\]"
],
"text/plain": [
" 1 1\n",
" - %pi hypergeometric([-, -], [1], 1 - x)\n",
" 2 2\n",
"(%o0) F(x) := exp(----------------------------------------)\n",
" 1 1\n",
" hypergeometric([-, -], [1], x)\n",
" 2 2"
],
"text/x-maxima": [
"F(x):=exp(\n",
" (-%pi*hypergeometric([1/2,1/2],[1],1-x))/hypergeometric([1/2,1/2],[1],x))"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"F(x):=exp(-%pi*hypergeometric([1/2,1/2],[1],1-x)/hypergeometric([1/2,1/2],[1],x));"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "416562e2-bac8-42b1-843f-1b0de437940a",
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"\\[\\tag{${\\it \\%o}_{1}$}\\varphi\\left(x\\right):={\\it sum}\\left(x^{n^2} , n , -10 , 10\\right)\\]"
],
"text/plain": [
" 2\n",
" n\n",
"(%o1) phi(x) := sum(x , n, - 10, 10)"
],
"text/x-maxima": [
"phi(x):=sum(x^n^2,n,-10,10)"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"phi(x):=sum(x^(n^2),n,-10,10);"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "285b5da2-5a07-4a9f-89d0-f1f79932341c",
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"\\[\\tag{${\\it \\%o}_{2}$}g\\left(q\\right):=F\\left(1-\\frac{\\varphi\\left(-q\\right)^4}{\\varphi\\left(q\\right)^4}\\right)\\]"
],
"text/plain": [
" 4\n",
" phi (- q)\n",
"(%o2) g(q) := F(1 - ---------)\n",
" 4\n",
" phi (q)"
],
"text/x-maxima": [
"g(q):=F(1-phi(-q)^4/phi(q)^4)"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"g(q):=F(1-phi(-q)^4/phi(q)^4);"
]
},
{
"cell_type": "markdown",
"id": "c54a5100-1c02-490a-bdec-dc2318f9bd7a",
"metadata": {},
"source": [
"$F(x)$は$0 \\le x \\le 1$で定義されますが、Maximaの超幾何関数の数値計算アルゴリズムの制約を受けてしまい、実際には$0.011\\le x \\le 0.99$くらいでしか計算できません。その区間でグラフを描くと以下のようになります。"
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "edc9df1d-c124-4d28-b5c4-e12929df7371",
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"\n",
"\n",
"\n"
],
"text/plain": [
"~/.maxplot.svg"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/latex": [
"\\[\\tag{${\\it \\%o}_{3}$}\\left[ \\mbox{ /var/folders/3n/jp9c5wkw8xjgmy006s6t\\_pt80000gn/T/maxout34260.gnuplot } , \\mbox{ ~/.maxplot.svg } \\right] \\]"
],
"text/plain": [
"(%o3) [/var/folders/3n/jp9c5wkw8xjgmy006s6t_pt80000gn/T/maxout34260.gnuplot, \n",
" ~/.maxplot.svg]"
],
"text/x-maxima": [
"[\"/var/folders/3n/jp9c5wkw8xjgmy006s6t_pt80000gn/T/maxout34260.gnuplot\",\n",
" \"~/.maxplot.svg\"]"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
},
{
"name": "stdout",
"output_type": "stream",
"text": [
"SB-KERNEL:REDEFINITION-WITH-DEFUN: redefining MAXIMA::SIMP-HYPERGEOMETRIC in DEFUN\n"
]
}
],
"source": [
"plot2d(F(x),[x,0.011,0.99]);"
]
},
{
"cell_type": "markdown",
"id": "971f56f4-3281-454a-97d5-63092dfacbca",
"metadata": {},
"source": [
"そのため$0.011\\le 1-\\frac{\\varphi\\left(-q\\right)^4}{\\varphi\\left(q\\right)^4} \\le 0.99$となるように$q$を選ぶ必要があります。そこでこの式のグラフを見てみましょう。"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "be83a9e1-9b2d-4bc8-984c-ed32a4865738",
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"\n",
"\n",
"\n"
],
"text/plain": [
"~/.maxplot.svg"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/latex": [
"\\[\\tag{${\\it \\%o}_{4}$}\\left[ \\mbox{ /var/folders/3n/jp9c5wkw8xjgmy006s6t\\_pt80000gn/T/maxout34260.gnuplot } , \\mbox{ ~/.maxplot.svg } \\right] \\]"
],
"text/plain": [
"(%o4) [/var/folders/3n/jp9c5wkw8xjgmy006s6t_pt80000gn/T/maxout34260.gnuplot, \n",
" ~/.maxplot.svg]"
],
"text/x-maxima": [
"[\"/var/folders/3n/jp9c5wkw8xjgmy006s6t_pt80000gn/T/maxout34260.gnuplot\",\n",
" \"~/.maxplot.svg\"]"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"plot2d(1-phi(-q)^4/phi(q)^4,[q,0.0,0.99]);"
]
},
{
"cell_type": "markdown",
"id": "9afb209d-7b06-414e-a6e6-b7bee3ebdb68",
"metadata": {},
"source": [
"$0.4\\lt q$では式の値は1に張り付いています。$0\\lt q\\lt0.3$の範囲は$g(q)$を計算できるかなと思ったのですが、やってみると$0.001\\lt q \\lt 0.26$の範囲が限界でした。その範囲で計算した$g(q)$をプロットしてみます。"
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "d60b460b-1a95-49a6-ac6c-29c6b977c5c8",
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"\n",
"\n",
"\n"
],
"text/plain": [
"~/.maxplot.svg"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/latex": [
"\\[\\tag{${\\it \\%o}_{5}$}\\left[ \\mbox{ /var/folders/3n/jp9c5wkw8xjgmy006s6t\\_pt80000gn/T/maxout34260.gnuplot } , \\mbox{ ~/.maxplot.svg } \\right] \\]"
],
"text/plain": [
"(%o5) [/var/folders/3n/jp9c5wkw8xjgmy006s6t_pt80000gn/T/maxout34260.gnuplot, \n",
" ~/.maxplot.svg]"
],
"text/x-maxima": [
"[\"/var/folders/3n/jp9c5wkw8xjgmy006s6t_pt80000gn/T/maxout34260.gnuplot\",\n",
" \"~/.maxplot.svg\"]"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"plot2d(g(x),[x,0.001,0.26]);"
]
},
{
"cell_type": "markdown",
"id": "522a0abf-92cd-4970-8962-c5682b25d57b",
"metadata": {},
"source": [
"これはほぼ直線になっています。狭い範囲ではありますが、所望のグラフが得られました。\n",
"最後に念の為いくつかの実際の数値で$g(q)$を確認してみましょう。"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "8a231445-9769-4752-b51f-9b19ff4437ef",
"metadata": {},
"outputs": [
{
"data": {
"text/latex": [
"\\[\\tag{${\\it \\%o}_{6}$}\\left[ \\right] \\]"
],
"text/plain": [
"(%o6) []"
],
"text/x-maxima": [
"[]"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"text/latex": [
"\\[\\tag{${\\it \\%o}_{8}$}\\left[ 0.1230000000000001 , 0.2215000000000012 , 0.243000000000002 \\right] \\]"
],
"text/plain": [
"(%o8) [0.1230000000000001, 0.2215000000000012, 0.243000000000002]"
],
"text/x-maxima": [
"[0.1230000000000001,0.2215000000000012,0.243000000000002]"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"res:[];\n",
"for q in [0.123, 0.2215, 0.243] do push(ev(g(q),numer),res)$\n",
"reverse(res);"
]
}
],
"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.44.0"
}
},
"nbformat": 4,
"nbformat_minor": 5
}