one_value.py

back to table · edit · history · where entries came from · files · download

950 bytes, as of the version from 2026-10-26 22:20 (current). Recorded here, not run.

import numberdb.sage
from math import factorial
from sage.rings.rational_field import QQ
from sage.rings.real_arb import RealBallField


def moment(n):
    """Raw moment of the unit-duration standard motion positive-part area."""
    if n < 1 or int(n) != n:
        raise ValueError('n must be a positive integer')
    n = int(n)
    alpha = [QQ(factorial(6*j))/(QQ(576)**j*factorial(3*j)*factorial(2*j))
             for j in range(n+1)]
    beta, ell = [QQ(1)], [QQ(1)]
    for j in range(1,n+1):
        beta.append(alpha[j]+QQ(3*(2*j-1))/4*beta[j-1])
        ell.append((alpha[j]+beta[j])/QQ(2)
                   + sum(alpha[k]*ell[j-k]/QQ(6*k-1) for k in range(1,j+1)))
    if n%2 == 0:
        return QQ(factorial(n))*ell[n]/(QQ(2)**(n//2)*factorial(3*n//2))
    field = RealBallField(513)
    return (field(factorial(n))*field(ell[n])
            / (field(2)**(QQ(n)/2)*field(QQ(3*n+2)/2).gamma()))

# For example, moment(1) gives the mean.