Skip to content

Instantly share code, notes, and snippets.

@qpliu
Last active July 30, 2024 01:14
Show Gist options
  • Save qpliu/41adeedcace52ae4263f50a9b9dda278 to your computer and use it in GitHub Desktop.
Save qpliu/41adeedcace52ae4263f50a9b9dda278 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "markdown",
"id": "d6443754-9c79-456a-86c2-7212967e5305",
"metadata": {},
"source": [
"[2024-07-26 Fiddler](https://thefiddler.substack.com/p/can-you-even-the-odds)\n",
"====================\n",
"Let $w$ be your probability of winning when it's your turn to roll. Consider the AB|AB|AB order of play."
]
},
{
"cell_type": "markdown",
"id": "1fee46ad-a881-4f4f-949a-da9129350f49",
"metadata": {},
"source": [
"Let $p = 1/6$ be the probability of winning a roll."
]
},
{
"cell_type": "code",
"execution_count": 1,
"id": "704218d8-1e74-49bc-bd72-2fa203819914",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<html>\\(\\displaystyle w = {\\left(p - 1\\right)} {\\left(w - 1\\right)} + p\\)</html>"
],
"text/latex": [
"$\\displaystyle w = {\\left(p - 1\\right)} {\\left(w - 1\\right)} + p$"
],
"text/plain": [
"w == (p - 1)*(w - 1) + p"
]
},
"execution_count": 1,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"%display latex\n",
"w, p = var('w p')\n",
"eqn1 = w == p + (1-p)*(1-w)\n",
"eqn1"
]
},
{
"cell_type": "code",
"execution_count": 2,
"id": "f149836e-16d1-4f0b-8e1c-b618915586cc",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<html>\\(\\displaystyle \\left[w = -\\frac{1}{p - 2}\\right]\\)</html>"
],
"text/latex": [
"$\\displaystyle \\left[w = -\\frac{1}{p - 2}\\right]$"
],
"text/plain": [
"[w == -1/(p - 2)]"
]
},
"execution_count": 2,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"solve(eqn1, w)"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "ea4c802e-2079-4206-a5f6-c3abfd446629",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<html>\\(\\displaystyle 0.545454545454545\\)</html>"
],
"text/latex": [
"$\\displaystyle 0.545454545454545$"
],
"text/plain": [
"0.545454545454545"
]
},
"execution_count": 3,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"numerical_approx(solve(eqn1,w)[0].rhs()(p=1/6))"
]
},
{
"cell_type": "markdown",
"id": "42f4665c-d945-43ba-834e-d06670d5479e",
"metadata": {},
"source": [
"So player A will win approximately 54.55% of the time.\n",
"\n",
"Now consider the AB|BA|AB order of play. Consider what happens if the first roll does not win."
]
},
{
"cell_type": "code",
"execution_count": 4,
"id": "f05f052e-9c7d-4068-8503-219b12a0d7b6",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<html>\\(\\displaystyle w = -{\\left({\\left(p - 1\\right)} {\\left(w - 1\\right)} + p\\right)} {\\left(p - 1\\right)} + p\\)</html>"
],
"text/latex": [
"$\\displaystyle w = -{\\left({\\left(p - 1\\right)} {\\left(w - 1\\right)} + p\\right)} {\\left(p - 1\\right)} + p$"
],
"text/plain": [
"w == -((p - 1)*(w - 1) + p)*(p - 1) + p"
]
},
"execution_count": 4,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"eqn2 = w == p + (1-p)*(p + (1-p)*(1-w))\n",
"eqn2"
]
},
{
"cell_type": "code",
"execution_count": 5,
"id": "79ce80d8-e7b8-4d7f-865d-de6b4d08c9d9",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<html>\\(\\displaystyle \\left[w = \\frac{1}{p^{2} - 2 \\, p + 2}\\right]\\)</html>"
],
"text/latex": [
"$\\displaystyle \\left[w = \\frac{1}{p^{2} - 2 \\, p + 2}\\right]$"
],
"text/plain": [
"[w == (1/(p^2 - 2*p + 2))]"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"solve(eqn2, w)"
]
},
{
"cell_type": "markdown",
"id": "2158723c-6f5b-4f97-a790-c67cffc7cc1e",
"metadata": {},
"source": [
"Now, add in the first roll."
]
},
{
"cell_type": "code",
"execution_count": 6,
"id": "86b17ed5-960d-465a-8ef5-4b257a6408de",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<html>\\(\\displaystyle \\frac{p^{2} - p + 1}{p^{2} - 2 \\, p + 2}\\)</html>"
],
"text/latex": [
"$\\displaystyle \\frac{p^{2} - p + 1}{p^{2} - 2 \\, p + 2}$"
],
"text/plain": [
"(p^2 - p + 1)/(p^2 - 2*p + 2)"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"w_after_first_roll = solve(eqn2, w)[0].rhs()\n",
"w_abba = p + (1-p)*(1-w_after_first_roll)\n",
"w_abba.simplify_full()"
]
},
{
"cell_type": "code",
"execution_count": 7,
"id": "f17f366e-0855-479f-983f-04ef0fd85f59",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<html>\\(\\displaystyle 0.508196721311475\\)</html>"
],
"text/latex": [
"$\\displaystyle 0.508196721311475$"
],
"text/plain": [
"0.508196721311475"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"numerical_approx(w_abba(p=1/6))"
]
},
{
"cell_type": "markdown",
"id": "068d2881-1fc3-4d25-9c91-62fbcd60a84d",
"metadata": {},
"source": [
"So player A will win approximately 50.82% of the time, which is fairer than AB|AB|AB."
]
},
{
"cell_type": "markdown",
"id": "a69623eb-8d34-40b8-8bdf-5a5986b1a832",
"metadata": {},
"source": [
"[Simulations](20240726.go) agree:\n",
"\n",
" $ go run 20240726.go\n",
" AB 5454278/10000000 0.545428\n",
" ABBA 5083593/10000000 0.508359\n",
" Thue-Morse 5016187/10000000 0.501619\n",
" Round 1: A\n",
" Round 2: B\n",
" Round 3: BA\n",
" Round 4: BAAB\n",
" Round 5: BAABABBA\n",
" Round 6: BAABABBAABBABAAB"
]
},
{
"cell_type": "markdown",
"id": "dddedca5-e41a-4d6e-b28a-c2023db318e4",
"metadata": {},
"source": [
"Extra credit\n",
"------------"
]
},
{
"cell_type": "markdown",
"id": "3a1ebb79-3c46-4617-891e-cf1db99de52c",
"metadata": {},
"source": [
"Let $q = 1-p = 5/6$."
]
},
{
"cell_type": "code",
"execution_count": 8,
"id": "70d5e62d-bea4-42ab-a9e1-762766dff698",
"metadata": {},
"outputs": [],
"source": [
"q = var('q')"
]
},
{
"cell_type": "markdown",
"id": "386e5970-94ae-4a6f-af72-316ab945ff0b",
"metadata": {},
"source": [
"Let $A(n)$ be player A's probability of winning by round $n$, and $W(n)$ be player A's probability of winning in round $n$.\n",
"\n",
"Let round 0 be A, round 1 be B, round 2 be BA, etc. The number of rolls in round $n$ where $n > 0$ is $2^{n-1}$, so the\n",
"probability that neither player wins in the round is $q^{2^{n-1}}$, and the probability of getting to round $n$ without\n",
"a winner is $q^{2^{n-1}}$.\n",
"\n",
"$$ A(n) = W(0) + \\sum_{l=1}^n q^{2^{l-1}}W(l) $$\n",
"\n",
"And $A(\\infty)$ is player A's total probability of winning.\n",
"For $n > 1$, the first half of the round is the previous round and the second half of the round is previous round\n",
"reversed. So in the second half, the probability of winning is the probability of losing in the previous round.\n",
"$$\n",
"\\begin{aligned}\n",
" W(0) &= p \\\\\n",
" &= 1-q \\\\\n",
" W(1) &= 0 \\\\\n",
" W(n+1) &= W(n) + q^{2^{n-1}}(1 - q^{2^{n-1}} - W(n)) \\\\\n",
" &= (1 - q^{2^{n-1}})W(n) + q^{2^{n-1}} - q^{2^n} \\\\\n",
"\\end{aligned}\n",
"$$"
]
},
{
"cell_type": "code",
"execution_count": 9,
"id": "3292daf9-504e-446c-af7b-8baa64247fc2",
"metadata": {},
"outputs": [],
"source": [
"def Wrecur(n):\n",
" if n == 0:\n",
" return 1-q\n",
" elif n == 1:\n",
" return 0\n",
" else:\n",
" return (1-q^(2^(n-2)))*Wrecur(n-1) + q^(2^(n-2)) - q^(2^(n-1))\n",
"def Arecur(n):\n",
" a = Wrecur(0)\n",
" for l in [1..n]:\n",
" a += q^(2^(l-1))*Wrecur(l)\n",
" return a"
]
},
{
"cell_type": "code",
"execution_count": 10,
"id": "cea3c385-ea65-4f94-83a0-b4b2e16a2860",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<html>\\(\\displaystyle -q + 1\\)</html>"
],
"text/latex": [
"$\\displaystyle -q + 1$"
],
"text/plain": [
"-q + 1"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<html>\\(\\displaystyle -q + 1\\)</html>"
],
"text/latex": [
"$\\displaystyle -q + 1$"
],
"text/plain": [
"-q + 1"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<html>\\(\\displaystyle -q^{4} + q^{3} - q + 1\\)</html>"
],
"text/latex": [
"$\\displaystyle -q^{4} + q^{3} - q + 1$"
],
"text/plain": [
"-q^4 + q^3 - q + 1"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<html>\\(\\displaystyle -q^{7} + q^{5} - q^{4} + q^{3} - q + 1\\)</html>"
],
"text/latex": [
"$\\displaystyle -q^{7} + q^{5} - q^{4} + q^{3} - q + 1$"
],
"text/plain": [
"-q^7 + q^5 - q^4 + q^3 - q + 1"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<html>\\(\\displaystyle -q^{16} + q^{15} - q^{13} + q^{12} - q^{11} + q^{9} - q^{7} + q^{5} - q^{4} + q^{3} - q + 1\\)</html>"
],
"text/latex": [
"$\\displaystyle -q^{16} + q^{15} - q^{13} + q^{12} - q^{11} + q^{9} - q^{7} + q^{5} - q^{4} + q^{3} - q + 1$"
],
"text/plain": [
"-q^16 + q^15 - q^13 + q^12 - q^11 + q^9 - q^7 + q^5 - q^4 + q^3 - q + 1"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<html>\\(\\displaystyle -q^{31} + q^{29} - q^{28} + q^{27} - q^{25} + q^{23} - q^{21} + q^{20} - q^{19} + q^{17} - q^{16} + q^{15} - q^{13} + q^{12} - q^{11} + q^{9} - q^{7} + q^{5} - q^{4} + q^{3} - q + 1\\)</html>"
],
"text/latex": [
"$\\displaystyle -q^{31} + q^{29} - q^{28} + q^{27} - q^{25} + q^{23} - q^{21} + q^{20} - q^{19} + q^{17} - q^{16} + q^{15} - q^{13} + q^{12} - q^{11} + q^{9} - q^{7} + q^{5} - q^{4} + q^{3} - q + 1$"
],
"text/plain": [
"-q^31 + q^29 - q^28 + q^27 - q^25 + q^23 - q^21 + q^20 - q^19 + q^17 - q^16 + q^15 - q^13 + q^12 - q^11 + q^9 - q^7 + q^5 - q^4 + q^3 - q + 1"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<html>\\(\\displaystyle \\left[\\frac{1}{6}, \\frac{1}{6}, \\frac{341}{1296}, \\frac{108031}{279936}, \\frac{1339018029701}{2821109907456}, \\frac{663397206470899569501151}{1326443518324400147398656}, \\frac{31770605684172649673767341248855588372799862163141}{63340286662973277706162286946811886609896461828096}\\right]\\)</html>"
],
"text/latex": [
"$\\displaystyle \\left[\\frac{1}{6}, \\frac{1}{6}, \\frac{341}{1296}, \\frac{108031}{279936}, \\frac{1339018029701}{2821109907456}, \\frac{663397206470899569501151}{1326443518324400147398656}, \\frac{31770605684172649673767341248855588372799862163141}{63340286662973277706162286946811886609896461828096}\\right]$"
],
"text/plain": [
"[1/6,\n",
" 1/6,\n",
" 341/1296,\n",
" 108031/279936,\n",
" 1339018029701/2821109907456,\n",
" 663397206470899569501151/1326443518324400147398656,\n",
" 31770605684172649673767341248855588372799862163141/63340286662973277706162286946811886609896461828096]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<html>\\(\\displaystyle \\left[0.501586073539903, 0.501590339167761, 0.501590339204269, 0.501590339204269, 0.501590339204269\\right]\\)</html>"
],
"text/latex": [
"$\\displaystyle \\left[0.501586073539903, 0.501590339167761, 0.501590339204269, 0.501590339204269, 0.501590339204269\\right]$"
],
"text/plain": [
"[0.501586073539903,\n",
" 0.501590339167761,\n",
" 0.501590339204269,\n",
" 0.501590339204269,\n",
" 0.501590339204269]"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"for i in [0..5]:\n",
" show(Arecur(i).expand())\n",
"show([Arecur(i)(q=5/6) for i in [0..6]])\n",
"show([numerical_approx(Arecur(i)(q=5/6)) for i in [6..10]])"
]
},
{
"cell_type": "markdown",
"id": "21687f04-51e2-4c4e-8e9f-16f68f9a8fd0",
"metadata": {},
"source": [
"The probability that player A wins is a power series in $q$ and seems to converge\n",
"to approximately 50.159%.\n",
"\n",
"Next, try solving the recurrence relation"
]
},
{
"cell_type": "code",
"execution_count": 11,
"id": "2cd09dbd-d43e-46e7-8042-d8bdae32c586",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<html>\\(\\displaystyle W_{n}=\\sum_{{\\it j}=1}^{n-1}{\\left(-1\\right)^{n-{\\it j}-1}\\, \\left(q^{2^{{\\it j}-1}}-q^{2^{{\\it j}}}\\right)\\,\\prod_{ {\\it j}_{1}=1}^{n-{\\it j}-1}{\\left(q^{2^{{\\it j}_{1}+{\\it j} -1}}-1\\right)}}\\)</html>"
],
"text/latex": [
"$\\displaystyle W_{n}=\\sum_{{\\it j}=1}^{n-1}{\\left(-1\\right)^{n-{\\it j}-1}\\, \\left(q^{2^{{\\it j}-1}}-q^{2^{{\\it j}}}\\right)\\,\\prod_{ {\\it j}_{1}=1}^{n-{\\it j}-1}{\\left(q^{2^{{\\it j}_{1}+{\\it j} -1}}-1\\right)}}$"
],
"text/plain": [
"W[n] = 'sum((-1)^(n-%j-1)*(q^2^(%j-1)-q^2^%j) *'product(q^2^(%j1+%j-1)-1,%j1,1,n-%j-1),%j,1, n-1)"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"maxima('load(\"solve_rec\")')\n",
"maxima('solve_rec(W[n+1]-(1-q^(2^(n-1)))*W[n]-q^(2^(n-1))+q^(2^n)=0,W[n],W[1]=0)')"
]
},
{
"cell_type": "code",
"execution_count": 12,
"id": "d987d2cf-2f33-4dd8-8cef-03b4956b708d",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<html>\\(\\displaystyle n \\ {\\mapsto}\\ {\\sum_{j=1}^{n - 1} -{\\left(\\left(-1\\right)^{j + n} q^{\\left(2^{j - 1}\\right)} - \\left(-1\\right)^{j + n} q^{\\left(2^{j}\\right)}\\right)} {\\prod_{k=1}^{-j + n - 1} q^{\\left(2^{j + k - 1}\\right)} - 1}}\\)</html>"
],
"text/latex": [
"$\\displaystyle n \\ {\\mapsto}\\ {\\sum_{j=1}^{n - 1} -{\\left(\\left(-1\\right)^{j + n} q^{\\left(2^{j - 1}\\right)} - \\left(-1\\right)^{j + n} q^{\\left(2^{j}\\right)}\\right)} {\\prod_{k=1}^{-j + n - 1} q^{\\left(2^{j + k - 1}\\right)} - 1}}$"
],
"text/plain": [
"n |--> sum(-((-1)^(j + n)*q^(2^(j - 1)) - (-1)^(j + n)*q^(2^j))*product(q^(2^(j + k - 1)) - 1, k, 1, -j + n - 1), j, 1, n - 1)"
]
},
"execution_count": 12,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"n,j,k = var('n j k')\n",
"W(n) = sum((-1)^(n-j-1)*(q^(2^(j-1))-q^(2^j))*product(q^(2^(k+j-1))-1,k,1,n-j-1),j,1,n-1)\n",
"W"
]
},
{
"cell_type": "code",
"execution_count": 13,
"id": "78a43b75-d495-461d-b29d-6ae58b29831b",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<html>\\(\\displaystyle \\left[0, 0, 0, 0, 0, 0, 0, 0\\right]\\)</html>"
],
"text/latex": [
"$\\displaystyle \\left[0, 0, 0, 0, 0, 0, 0, 0\\right]$"
],
"text/plain": [
"[0, 0, 0, 0, 0, 0, 0, 0]"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"[(W(i) - Wrecur(i)).simplify_full() for i in [1..8]]"
]
},
{
"cell_type": "code",
"execution_count": 14,
"id": "939b3eb4-5aeb-433b-88f6-cb6271592d91",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<html>\\(\\displaystyle n \\ {\\mapsto}\\ -q - {\\sum_{l=1}^{n} q^{\\left(2^{l - 1}\\right)} {\\sum_{j=1}^{l - 1} {\\left(\\left(-1\\right)^{j + l} q^{\\left(2^{j - 1}\\right)} - \\left(-1\\right)^{j + l} q^{\\left(2^{j}\\right)}\\right)} {\\prod_{k=1}^{-j + l - 1} q^{\\left(2^{j + k - 1}\\right)} - 1}}} + 1\\)</html>"
],
"text/latex": [
"$\\displaystyle n \\ {\\mapsto}\\ -q - {\\sum_{l=1}^{n} q^{\\left(2^{l - 1}\\right)} {\\sum_{j=1}^{l - 1} {\\left(\\left(-1\\right)^{j + l} q^{\\left(2^{j - 1}\\right)} - \\left(-1\\right)^{j + l} q^{\\left(2^{j}\\right)}\\right)} {\\prod_{k=1}^{-j + l - 1} q^{\\left(2^{j + k - 1}\\right)} - 1}}} + 1$"
],
"text/plain": [
"n |--> -q - sum(q^(2^(l - 1))*sum(((-1)^(j + l)*q^(2^(j - 1)) - (-1)^(j + l)*q^(2^j))*product(q^(2^(j + k - 1)) - 1, k, 1, -j + l - 1), j, 1, l - 1), l, 1, n) + 1"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"l = var('l')\n",
"A(n) = 1-q + sum(q^(2^(l-1))*W(l),l,1,n)\n",
"A"
]
},
{
"cell_type": "code",
"execution_count": 15,
"id": "e903b3c4-7621-4d69-a80b-4b0e3c22e6e0",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<html>\\(\\displaystyle \\left[0, 0, 0, 0, 0, 0, 0, 0\\right]\\)</html>"
],
"text/latex": [
"$\\displaystyle \\left[0, 0, 0, 0, 0, 0, 0, 0\\right]$"
],
"text/plain": [
"[0, 0, 0, 0, 0, 0, 0, 0]"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"[(A(i) - Arecur(i)).simplify_full() for i in [1..8]]"
]
},
{
"cell_type": "code",
"execution_count": 16,
"id": "5f0152b5-7a18-41ad-a7c6-bdc52fa7ae9b",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<html>\\(\\displaystyle -q + 1\\)</html>"
],
"text/latex": [
"$\\displaystyle -q + 1$"
],
"text/plain": [
"-q + 1"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<html>\\(\\displaystyle -q^{4} + q^{3} - q + 1\\)</html>"
],
"text/latex": [
"$\\displaystyle -q^{4} + q^{3} - q + 1$"
],
"text/plain": [
"-q^4 + q^3 - q + 1"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<html>\\(\\displaystyle -q^{7} + q^{5} - q^{4} + q^{3} - q + 1\\)</html>"
],
"text/latex": [
"$\\displaystyle -q^{7} + q^{5} - q^{4} + q^{3} - q + 1$"
],
"text/plain": [
"-q^7 + q^5 - q^4 + q^3 - q + 1"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<html>\\(\\displaystyle -q^{16} + q^{15} - q^{13} + q^{12} - q^{11} + q^{9} - q^{7} + q^{5} - q^{4} + q^{3} - q + 1\\)</html>"
],
"text/latex": [
"$\\displaystyle -q^{16} + q^{15} - q^{13} + q^{12} - q^{11} + q^{9} - q^{7} + q^{5} - q^{4} + q^{3} - q + 1$"
],
"text/plain": [
"-q^16 + q^15 - q^13 + q^12 - q^11 + q^9 - q^7 + q^5 - q^4 + q^3 - q + 1"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<html>\\(\\displaystyle -q^{31} + q^{29} - q^{28} + q^{27} - q^{25} + q^{23} - q^{21} + q^{20} - q^{19} + q^{17} - q^{16} + q^{15} - q^{13} + q^{12} - q^{11} + q^{9} - q^{7} + q^{5} - q^{4} + q^{3} - q + 1\\)</html>"
],
"text/latex": [
"$\\displaystyle -q^{31} + q^{29} - q^{28} + q^{27} - q^{25} + q^{23} - q^{21} + q^{20} - q^{19} + q^{17} - q^{16} + q^{15} - q^{13} + q^{12} - q^{11} + q^{9} - q^{7} + q^{5} - q^{4} + q^{3} - q + 1$"
],
"text/plain": [
"-q^31 + q^29 - q^28 + q^27 - q^25 + q^23 - q^21 + q^20 - q^19 + q^17 - q^16 + q^15 - q^13 + q^12 - q^11 + q^9 - q^7 + q^5 - q^4 + q^3 - q + 1"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<html>\\(\\displaystyle \\left[\\frac{1}{6}, \\frac{341}{1296}, \\frac{108031}{279936}, \\frac{1339018029701}{2821109907456}, \\frac{663397206470899569501151}{1326443518324400147398656}, \\frac{31770605684172649673767341248855588372799862163141}{63340286662973277706162286946811886609896461828096}\\right]\\)</html>"
],
"text/latex": [
"$\\displaystyle \\left[\\frac{1}{6}, \\frac{341}{1296}, \\frac{108031}{279936}, \\frac{1339018029701}{2821109907456}, \\frac{663397206470899569501151}{1326443518324400147398656}, \\frac{31770605684172649673767341248855588372799862163141}{63340286662973277706162286946811886609896461828096}\\right]$"
],
"text/plain": [
"[1/6,\n",
" 341/1296,\n",
" 108031/279936,\n",
" 1339018029701/2821109907456,\n",
" 663397206470899569501151/1326443518324400147398656,\n",
" 31770605684172649673767341248855588372799862163141/63340286662973277706162286946811886609896461828096]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<html>\\(\\displaystyle \\left[0.501586073539903, 0.501590339167761, 0.501590339204269, 0.501590339204269, 0.501590339204269\\right]\\)</html>"
],
"text/latex": [
"$\\displaystyle \\left[0.501586073539903, 0.501590339167761, 0.501590339204269, 0.501590339204269, 0.501590339204269\\right]$"
],
"text/plain": [
"[0.501586073539903,\n",
" 0.501590339167761,\n",
" 0.501590339204269,\n",
" 0.501590339204269,\n",
" 0.501590339204269]"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"for i in [1..5]:\n",
" show(A(i).simplify().expand())\n",
"show([A(i)(q=5/6).simplify() for i in [1..6]])\n",
"show([numerical_approx(A(i)(q=5/6).simplify()) for i in [6..10]])"
]
},
{
"cell_type": "markdown",
"id": "8943c38a-f8f9-4bf3-a29c-318a92f0ff40",
"metadata": {},
"source": [
"And now we can get an exact expression for the probability that player A wins. Based on the\n",
"infinite sum, I believe it's irrational."
]
},
{
"cell_type": "code",
"execution_count": 17,
"id": "17e1e69d-b869-4ddb-8e53-30e79b6ec4f5",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<html>\\(\\displaystyle -{\\sum_{l=1}^{+\\infty} \\left(\\frac{5}{6}\\right)^{\\left(2^{l - 1}\\right)} {\\sum_{j=1}^{l - 1} {\\left(\\left(\\frac{5}{6}\\right)^{\\left(2^{j - 1}\\right)} \\left(-1\\right)^{j + l} - \\left(\\frac{5}{6}\\right)^{\\left(2^{j}\\right)} \\left(-1\\right)^{j + l}\\right)} {\\prod_{k=1}^{-j + l - 1} \\left(\\frac{5}{6}\\right)^{\\left(2^{j + k - 1}\\right)} - 1}}} + \\frac{1}{6}\\)</html>"
],
"text/latex": [
"$\\displaystyle -{\\sum_{l=1}^{+\\infty} \\left(\\frac{5}{6}\\right)^{\\left(2^{l - 1}\\right)} {\\sum_{j=1}^{l - 1} {\\left(\\left(\\frac{5}{6}\\right)^{\\left(2^{j - 1}\\right)} \\left(-1\\right)^{j + l} - \\left(\\frac{5}{6}\\right)^{\\left(2^{j}\\right)} \\left(-1\\right)^{j + l}\\right)} {\\prod_{k=1}^{-j + l - 1} \\left(\\frac{5}{6}\\right)^{\\left(2^{j + k - 1}\\right)} - 1}}} + \\frac{1}{6}$"
],
"text/plain": [
"-sum((5/6)^(2^(l - 1))*sum(((5/6)^(2^(j - 1))*(-1)^(j + l) - (5/6)^(2^j)*(-1)^(j + l))*product((5/6)^(2^(j + k - 1)) - 1, k, 1, -j + l - 1), j, 1, l - 1), l, 1, +Infinity) + 1/6"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"A(oo)(q=5/6)"
]
},
{
"cell_type": "markdown",
"id": "e940503a-817c-4acf-87a0-eb83a7afaec2",
"metadata": {},
"source": [
"Further thoughts\n",
"----------------\n",
"It might be interesting to see what a graph of $A(q)$ looks like."
]
},
{
"cell_type": "code",
"execution_count": 18,
"id": "cbfc1a3e-f3c6-4a4a-b586-2aea34bc6d47",
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAnIAAAHUCAYAAAC+g8X7AAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjguMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy81sbWrAAAACXBIWXMAAA9hAAAPYQGoP6dpAACDT0lEQVR4nOzdd3hUZeL28e+UTEmZSW/0TgLSQYqAIiCo2AUrYldYXfV1Lau7dv3p2lZFXRVUFBXFrlhApYN0KaFDCIGE9Ez6ZMr7R0gkhhZISAL3x2suyJznnPPMTExunmrw+/1+RERERKTJMTZ0BURERETk2CjIiYiIiDRRCnIiIiIiTZSCnIiIiEgTpSAnIiIi0kQpyImIiIg0UQpyIiIiIk1Ukwhyfr8fl8uFlrwTERER+VOTCHIFBQU4nU4KCgoauioiIiIijUaTCHIiIiIiUpOCnIiIiEgTpSAnIiIi0kQpyImIiIg0UbUOcvPnz2fMmDHEx8djMBj46quvjnjOvHnz6N27NzabjbZt2/Lmm28eS11FRERE5ADm2p5QVFRE9+7duf7667n00kuPWH7nzp2ce+653HzzzXz44YcsWrSIiRMnEhUVdVTni4iISP1zu914PJ6GrsYpx2w2Y7FYjv382p4wevRoRo8efdTl33zzTVq2bMnLL78MQEJCAitWrOD5558/6iA3c9aM2lZTREREjpLb7WbDhg34fL6Grsopx2g00qVLl2MOc7UOcrW1ZMkSRo4cWe25c845hylTplBeXk5AQECNc8rKyigrKwMg35VPSMm/APh69pdce+l19V1lERGRU4rH48Hn89G6dWvsdntDV+eUUVJSQnJyMh6Pp/EGufT0dGJiYqo9FxMTg8fjISsri7i4uBrnPPPMMzz22GNVX599/iBgH1GFt/PM68t44PbXMBgM9V11ERGRU4rdbicwMLChq3HKyc/Pp7S0FKvVSlBQUK3OPSGzVv8auiq32jpUGHvwwQfJz8+verz3xicAbCroxsio13n13bPZtmtn/VZaRERE5AT47rvvmDZtGjNmzKCoqKhW59Z7kIuNjSU9Pb3acxkZGZjNZiIiIg56jtVqxeFwVHsAjL9qFr+m30Cv4CWsX3om73z2Tn1XX0RERKReBQUFYbFYcLlcVUPLjla9B7kBAwYwe/bsas/9/PPP9OnT56Dj4w7HbDbzjzumsM/2Nj6viUQm8fgbN1BWXl6XVRYRERE5YaxWK1ar9ZjOrXWQKywsZM2aNaxZswaoWF5kzZo1pKSkABXdouPHj68qf9ttt7Fr1y7uueceNm7cyNSpU5kyZQr33nvvMVUY4NILrmHgWQtZnT2I8yLfZeonQ1metPaYryciIiLSFNU6yK1YsYKePXvSs2dPAO655x569uzJv//9bwDS0tKqQh1AmzZtmDVrFnPnzqVHjx488cQTvPLKK8e9hlxsXDyTbvuVhel/I8G6joz15/D8hy8d1zVFREREmhKDv3LmQSPmcrlwOp3k5+dXjZc70C9zviE77T5a2bbxY+447r72HRyaPi0iInJUiouL2bhxIwkJCZq1egJVvu/Jycnk5eVRUFDA+PHjCQ8PP+prnBR7rZ49/ALOvfB3lqefzflhH/Hpl4P5ZunChq6WiIiINEFHuwVpY3BSBDmAYIeTv93xEyuzH6CNaTu23Rfy4PtP4W38DY4iIiInjT179nDNNdcQERFBYGAgPXr0YOXKlQ1drZPWSRPkKt1y2zOEt/mavPxYLgn8F498eCWbsnIauloiIiInvdzcXAYNGkRAQAA//PADSUlJvPDCC4SGhh71Ncq1EkWtnHRBDqBnvyFcOH4la5JHc4F1Jkt/O5PnZs+iCQwHFBERabKeffZZWrRowbvvvku/fv1o3bo1Z599Nu3atTvkOY8++ig9evRg6tSptG3bFqvVit/vJyUlhQsvvJDg4GAcDgdjx45l3759VedNmDCBiy66qNq17rrrLs4888yqr88880zuvPNO7rvvPsLDw4mNjeXRRx+tds7WrVsZMmQINpuNxMTEGkumud1u/va3vxEXF4fNZqN169Y888wzx/we1bWTMsgBWC02bv7H96QUPkZzdxp9867glumPku32NHTVRERETkrffPMNffr04fLLLyc6OpqePXvy9ttvH/G8bdu28emnn/L5559XLW920UUXkZOTw7x585g9ezbbt29n3Lhxta7T+++/T1BQEL///jvPPfccjz/+eFVY8/l8XHLJJZhMJpYuXcqbb77J/fffX+38V155hW+++YZPP/2UzZs38+GHH9K6deta16O+1Pteqw3tshseYnvSGNbMuYrb4h7n5S/X0bPXi1zSoXVDV01ERKTRKi72sWlT6WHLdO5sIzDwzzahHTt28MYb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RJqEiIiKIFc54cGEJjuIiIiINAnh4Sbgzxa5iq7Vim5WrSMnIiIi0ohVdq3m5PzZteptTGPkXn/9ddq0aYPNZqN3794sWLDgkGW/+OILRowYQVRUFA6HgwEDBvDTTz8dc4VFREREGrOQECNm859dq41qi64ZM2Zw11138dBDD7F69WoGDx7M6NGjSUlJOWj5+fPnM2LECGbNmsXKlSs566yzGDNmDKtXrz7uyouIiIg0NgaDodpachWTHRpJi9yLL77IjTfeyE033URCQgIvv/wyLVq04I033jho+Zdffpn77ruPvn370qFDB55++mk6dOjAt99+e9yVFxEREWmMwsPNVV2rZkMAXn/FGDl/Q64j53a7WblyJSNHjqz2/MiRI1m8ePFRXcPn81FQUEB4ePghy5SVleFyuao9RERERJqKiAhT9RY5g69e7lOrIJeVlYXX6yUmJqba8zExMaSnpx/VNV544QWKiooYO3bsIcs888wzOJ3OqkeLFi1qU00RERGRBlXRIvfnGLn6ckyTHQwGQ7Wv/X5/jecO5uOPP+bRRx9lxowZREdHH7Lcgw8+SH5+ftVj9+7dx1JNERERkQZRuU0XVLTI1ZdaXTkyMhKTyVSj9S0jI6NGK91fzZgxgxtvvJHPPvuM4cOHH7as1WrFarXWpmoiIiIijUZ4+AFdqwfGrYZcR85isdC7d29mz55d7fnZs2czcODAQ5738ccfM2HCBD766CPOO++8Y6upiIiISBNRo2vVUMcJbr9at/Xdc889XHvttfTp04cBAwbw1ltvkZKSwm233QZUdIvu2bOHadOmARUhbvz48fz3v/+lf//+Va15drsdp9NZhy9FREREpHGo7Fr1+/2Np2sVYNy4cWRnZ/P444+TlpZG165dmTVrFq1atQIgLS2t2ppy//vf//B4PEyaNIlJkyZVPX/dddfx3nvvHf8rEBEREWlkwsNNeL3gcvnqdbLDMUXEiRMnMnHixIMe+2s4mzt37rHcQkRERKTJqtymKzvbgynywDFyDbiOnIiIiIgcWViYCYD8fC8mQwD+Iy/ucUwU5ERERETqmNNZEeTy8rz1OkZOQU5ERESkjoWGVoS3vDyPgpyIiIhIU1LZIpef760+2aEh15ETERERkSMLCDAQGGis6FrFXG/ryCnIiYiIiNSD0FATeXnexrfXqoiIiIgcXmioaf+sVY2RExEREWlSnM6DtMhpHTkRERGRxq+ya9VkMNf1HIcqCnIiIiIi9aCya1Vj5ERERESamIquVa0jJyIiItLkhIaaa+zsUMdD5BTkREREROpDta5V7bUqIiIi0nRUzlo1+k31do9GHeQmT55MYmIiffv2beiqiIiIiNRKaKgJnw9KiuovbjXqIDdp0iSSkpJYvnx5Q1dFREREpFZCQyta4gpcfgyVfataR05ERESk8XM6K4JcXp4Xg7F+IpeCnIiIiEg9qGyRy8vzYqinyKUgJyIiIlIPQkMrlh3Jz/diUpATERERaTr+7Fr1YDTUz8xVBTkRERGRemC3GwgIMFTvWtWCwCIiIiKNn8FgqFoUWJMdRERERJqYqkWBUdeqiIiISJPicJhwubwYNdlBREREpGlxOIwUFPgwGirHyGlBYBEREZEmISSkokXOYFCLnIiIiEiT4nCYKCjwavkRERERkaYmJMRY0SKnMXIiIiIiTUtFi5zvz50dtI6ciIiISNNQNUbOqK5VERERkSblzzFy6loVERERaVJCQoyUlPg1Rk5ERESkqXE49nepeisil1/ryImIiIg0DSEhFUHO5zfUy/UV5ERERETqicOxP2r5TsHJDpMnTyYxMZG+ffs2dFVEREREaq2qRc53CrbITZo0iaSkJJYvX97QVRERERGptcoxcn6v9loVERERaVJCQiqils+nWasiIiIiTUpV16rnFOxaFREREWnKTCYDgYFGvB61yImIiIg0OQ6HEZ9Xe62KiIiINDkhISa8nvq5toKciIiISD1yOEzqWhURERFpikJCjHjKNdlBREREpMlxOEx4y7WOnIiIiEiTExJiwqPlR0RERESaHofDRLm6VkVERESanuBgI163gpyIiIhIkxMcbKTcrXXkRERERJqcoCCNkRMRERFpkipa5BTkRERERJqc4GAjfq8WBBYRERFpcoKCTPh9FZHLr3XkRERERJqO4GBjVZCrawpyIiIiIvUoONgIp2KQmzx5MomJifTt27ehqyIiIiJyTIKCTPj9p2CQmzRpEklJSSxfvryhqyIiIiJyTCq6VvfPWtU6ciIiIiJNh8bIiYiIiDRRQUEm8Jnq5doKciIiIiL1yG43gE8LAouIiIg0OQaDAbN5f4uc1pETERERaVrMJnWtioiIiDRJAWYzoJ0dRERERJoci7kicvnw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",
"text/plain": [
"Graphics object consisting of 6 graphics primitives"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"plot([A(i).simplify() for i in [6,8,12]]+[solve(eqn1,w)[0].rhs()(p=1-q),w_abba(p=1-q)],q,0,1,legend_label=[\"6 rounds\",\"8 rounds\",\"12 rounds\",\"AB\",\"ABBA\"]) + plot(0.5,x,0,1,color=\"gray\",linestyle=\"dashed\",legend_label=\"0.5\")"
]
},
{
"cell_type": "markdown",
"id": "3c02f32d-6e3d-4a56-952c-c8b87608c608",
"metadata": {},
"source": [
"So as the chance of winning on a given roll goes down, as when the number of sides of the die goes up,\n",
"the chance that player A wins approaches 1/2 from above, and it takes more rounds before one player wins.\n",
"Player A has a greater advantage when the die has fewer sides."
]
},
{
"cell_type": "code",
"execution_count": 19,
"id": "dc44d181-5d02-4255-8624-87e67ca8c6d8",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<html>\\(\\displaystyle \\left[\\left(1, 1.00000000000000\\right), \\left(2, 0.587545966359892\\right), \\left(3, 0.523764883162973\\right), \\left(4, 0.508325222149083\\right), \\left(5, 0.503435397140515\\right), \\left(6, 0.501590339204269\\right)\\right]\\)</html>"
],
"text/latex": [
"$\\displaystyle \\left[\\left(1, 1.00000000000000\\right), \\left(2, 0.587545966359892\\right), \\left(3, 0.523764883162973\\right), \\left(4, 0.508325222149083\\right), \\left(5, 0.503435397140515\\right), \\left(6, 0.501590339204269\\right)\\right]$"
],
"text/plain": [
"[(1, 1.00000000000000),\n",
" (2, 0.587545966359892),\n",
" (3, 0.523764883162973),\n",
" (4, 0.508325222149083),\n",
" (5, 0.503435397140515),\n",
" (6, 0.501590339204269)]"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"[(i,numerical_approx(A(10)(q=(i-1)/i).simplify())) for i in [1..6]]"
]
},
{
"cell_type": "markdown",
"id": "4c4c1a7e-5151-4c3c-8473-318664a4120a",
"metadata": {},
"source": [
"### Cleaner looking expression\n",
"Trying to make the exact solution cleaner with explicit manipulations.\n",
"I don't know why I can't keep it from putting the stupid minus signs where it\n",
"keeps giving $-\\sum -x$ instead of $+\\sum x$ and trying to fix it undoes my other\n",
"substitutions."
]
},
{
"cell_type": "code",
"execution_count": 20,
"id": "1cf4f923-6d25-42c9-afe5-85ff9aa525be",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<html>\\(\\displaystyle n \\ {\\mapsto}\\ -q - {\\sum_{i=1}^{n} -\\left(-1\\right)^{i} q^{\\left(2^{i - 1}\\right)} {\\sum_{j=1}^{i - 1} \\left(-1\\right)^{j} {\\left(q^{\\left(2^{j - 1}\\right)} - 1\\right)} q^{\\left(2^{j - 1}\\right)} {\\prod_{k=1}^{i - j - 1} q^{\\left(2^{j + k - 1}\\right)} - 1}}} + 1\\)</html>"
],
"text/latex": [
"$\\displaystyle n \\ {\\mapsto}\\ -q - {\\sum_{i=1}^{n} -\\left(-1\\right)^{i} q^{\\left(2^{i - 1}\\right)} {\\sum_{j=1}^{i - 1} \\left(-1\\right)^{j} {\\left(q^{\\left(2^{j - 1}\\right)} - 1\\right)} q^{\\left(2^{j - 1}\\right)} {\\prod_{k=1}^{i - j - 1} q^{\\left(2^{j + k - 1}\\right)} - 1}}} + 1$"
],
"text/plain": [
"n |--> -q - sum(-(-1)^i*q^(2^(i - 1))*sum((-1)^j*(q^(2^(j - 1)) - 1)*q^(2^(j - 1))*product(q^(2^(j + k - 1)) - 1, k, 1, i - j - 1), j, 1, i - 1), i, 1, n) + 1"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"i = var('i')\n",
"pfactor = product(q^(2^(j+k-1))-1,k,1,-j+l-1)\n",
"term = (-1)^j*q^(2^(j-1))*(1-q^(2^(j-1)))\n",
"substTo = q^(2^(l-1))*(-1)^l*sum(term*pfactor,j,1,l-1)\n",
"substFrom = q^(2^(l-1))*sum((((-1)^(j+l)*q^(2^(j-1))-(-1)^(j+l)*q^(2^j)))*pfactor,j,1,l-1)\n",
"AA = A.substitute(substFrom == substTo).substitute(term.simplify_full() == term).substitute(l == i)\n",
"AA"
]
},
{
"cell_type": "code",
"execution_count": 21,
"id": "25e9142b-b984-46ad-b128-2f4e11a96d22",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<html>\\(\\displaystyle -q + 1\\)</html>"
],
"text/latex": [
"$\\displaystyle -q + 1$"
],
"text/plain": [
"-q + 1"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<html>\\(\\displaystyle -q^{4} + q^{3} - q + 1\\)</html>"
],
"text/latex": [
"$\\displaystyle -q^{4} + q^{3} - q + 1$"
],
"text/plain": [
"-q^4 + q^3 - q + 1"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<html>\\(\\displaystyle -q^{7} + q^{5} - q^{4} + q^{3} - q + 1\\)</html>"
],
"text/latex": [
"$\\displaystyle -q^{7} + q^{5} - q^{4} + q^{3} - q + 1$"
],
"text/plain": [
"-q^7 + q^5 - q^4 + q^3 - q + 1"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<html>\\(\\displaystyle -q^{16} + q^{15} - q^{13} + q^{12} - q^{11} + q^{9} - q^{7} + q^{5} - q^{4} + q^{3} - q + 1\\)</html>"
],
"text/latex": [
"$\\displaystyle -q^{16} + q^{15} - q^{13} + q^{12} - q^{11} + q^{9} - q^{7} + q^{5} - q^{4} + q^{3} - q + 1$"
],
"text/plain": [
"-q^16 + q^15 - q^13 + q^12 - q^11 + q^9 - q^7 + q^5 - q^4 + q^3 - q + 1"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<html>\\(\\displaystyle -q^{31} + q^{29} - q^{28} + q^{27} - q^{25} + q^{23} - q^{21} + q^{20} - q^{19} + q^{17} - q^{16} + q^{15} - q^{13} + q^{12} - q^{11} + q^{9} - q^{7} + q^{5} - q^{4} + q^{3} - q + 1\\)</html>"
],
"text/latex": [
"$\\displaystyle -q^{31} + q^{29} - q^{28} + q^{27} - q^{25} + q^{23} - q^{21} + q^{20} - q^{19} + q^{17} - q^{16} + q^{15} - q^{13} + q^{12} - q^{11} + q^{9} - q^{7} + q^{5} - q^{4} + q^{3} - q + 1$"
],
"text/plain": [
"-q^31 + q^29 - q^28 + q^27 - q^25 + q^23 - q^21 + q^20 - q^19 + q^17 - q^16 + q^15 - q^13 + q^12 - q^11 + q^9 - q^7 + q^5 - q^4 + q^3 - q + 1"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<html>\\(\\displaystyle \\left[\\frac{1}{6}, \\frac{341}{1296}, \\frac{108031}{279936}, \\frac{1339018029701}{2821109907456}, \\frac{663397206470899569501151}{1326443518324400147398656}, \\frac{31770605684172649673767341248855588372799862163141}{63340286662973277706162286946811886609896461828096}\\right]\\)</html>"
],
"text/latex": [
"$\\displaystyle \\left[\\frac{1}{6}, \\frac{341}{1296}, \\frac{108031}{279936}, \\frac{1339018029701}{2821109907456}, \\frac{663397206470899569501151}{1326443518324400147398656}, \\frac{31770605684172649673767341248855588372799862163141}{63340286662973277706162286946811886609896461828096}\\right]$"
],
"text/plain": [
"[1/6,\n",
" 341/1296,\n",
" 108031/279936,\n",
" 1339018029701/2821109907456,\n",
" 663397206470899569501151/1326443518324400147398656,\n",
" 31770605684172649673767341248855588372799862163141/63340286662973277706162286946811886609896461828096]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"<html>\\(\\displaystyle \\left[0.501586073539903, 0.501590339167761, 0.501590339204269, 0.501590339204269, 0.501590339204269\\right]\\)</html>"
],
"text/latex": [
"$\\displaystyle \\left[0.501586073539903, 0.501590339167761, 0.501590339204269, 0.501590339204269, 0.501590339204269\\right]$"
],
"text/plain": [
"[0.501586073539903,\n",
" 0.501590339167761,\n",
" 0.501590339204269,\n",
" 0.501590339204269,\n",
" 0.501590339204269]"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"for i in [1..5]:\n",
" show(AA(i).simplify().expand())\n",
"show([AA(i)(q=5/6).simplify() for i in [1..6]])\n",
"show([numerical_approx(AA(i)(q=5/6).simplify()) for i in [6..10]])"
]
},
{
"cell_type": "code",
"execution_count": 22,
"id": "a229cf06-76af-4d05-86b7-7b722e9c3cc9",
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"<html>\\(\\displaystyle -{\\sum_{i=1}^{+\\infty} -\\left(\\frac{5}{6}\\right)^{\\left(2^{i - 1}\\right)} \\left(-1\\right)^{i} {\\sum_{j=1}^{i - 1} {\\left(\\left(\\frac{5}{6}\\right)^{\\left(2^{j - 1}\\right)} - 1\\right)} \\left(\\frac{5}{6}\\right)^{\\left(2^{j - 1}\\right)} \\left(-1\\right)^{j} {\\prod_{k=1}^{i - j - 1} \\left(\\frac{5}{6}\\right)^{\\left(2^{j + k - 1}\\right)} - 1}}} + \\frac{1}{6}\\)</html>"
],
"text/latex": [
"$\\displaystyle -{\\sum_{i=1}^{+\\infty} -\\left(\\frac{5}{6}\\right)^{\\left(2^{i - 1}\\right)} \\left(-1\\right)^{i} {\\sum_{j=1}^{i - 1} {\\left(\\left(\\frac{5}{6}\\right)^{\\left(2^{j - 1}\\right)} - 1\\right)} \\left(\\frac{5}{6}\\right)^{\\left(2^{j - 1}\\right)} \\left(-1\\right)^{j} {\\prod_{k=1}^{i - j - 1} \\left(\\frac{5}{6}\\right)^{\\left(2^{j + k - 1}\\right)} - 1}}} + \\frac{1}{6}$"
],
"text/plain": [
"-sum(-(5/6)^(2^(i - 1))*(-1)^i*sum(((5/6)^(2^(j - 1)) - 1)*(5/6)^(2^(j - 1))*(-1)^j*product((5/6)^(2^(j + k - 1)) - 1, k, 1, i - j - 1), j, 1, i - 1), i, 1, +Infinity) + 1/6"
]
},
"execution_count": 22,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"AA(oo)(q=5/6)"
]
},
{
"cell_type": "markdown",
"id": "905204f0-bb6c-4bed-bf72-53985419c7f3",
"metadata": {},
"source": [
"More parentheses would help. The rightmost -1 is inside the product, which is inside the inner sum.\n",
"The 1/6 is outside of the outer sum."
]
}
],
"metadata": {
"kernelspec": {
"display_name": "SageMath 10.3",
"language": "sage",
"name": "sagemath-10.3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.11.8"
}
},
"nbformat": 4,
"nbformat_minor": 5
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment