Can we compute this sum explicitly? \[\sum_{n_2=0...
Criado em: 3 de novembro de 2025
Respondido usando GPT-5 Thinking por Chat01
Criado em: 3 de novembro de 2025
Respondido usando GPT-5 Thinking por Chat01
Can we compute this sum explicitly?
pythonimport sympy as sp n1, n2, k = sp.symbols('n1 n2 k', integer=True, nonnegative=True) x1, x2, rho = sp.symbols('x1 x2 rho') # test identity for k=1 numerically for small n1,n2 sums def partial_sum(kval=1, maxn=4, rho_val=sp.Rational(1,3), x1_val=sp.Rational(1,5), x2_val=sp.Rational(1,7)): s = 0 for N1 in range(0, maxn+1): for N2 in range(0, maxn+1): M = sp.gamma(N1+N2+kval)/ (sp.gamma(N1+1)*sp.gamma(N2+1)*sp.gamma(kval)) hf = sp.hyper([N1, N2],[N1+N2+kval-1], rho_val) # careful: c = n1+n2+k-1 # Wait: for k=1, c = n1+n2 s += (x1_val**N1)*(x2_val**N2)*M*hf return sp.N(s), sp
pythonprint(partial_sum(1,6))
pythonprint(partial_sum(1,6, sp.Rational(1,5), sp.Rational(1,20), sp.Rational(3,100)))
pythonprint(partial_sum(1,10, sp.Rational(1,5), sp.Rational(1,20), sp.Rational(3,100)))
pythondef partial_sum2(kval=2, maxn=5, rho_val=sp.Rational(1,5), x1_val=sp.Rational(1,20), x2_val=sp.Rational(3,100)): s = 0 for N1 in range(0, maxn+1): for N2 in range(0, maxn+1): M = sp.gamma(N1+N2+kval)/ (sp.gamma(N1+1)*sp.gamma(N2+1)*sp.gamma(kval)) hf = sp.hyper([N1, N2],[N1+N2+kval-1], rho_val) s += (x1_val**N1)*(x2_val**N2)*M*hf return float(s), float((1 - x1_val - x2_val - rho_val*x1_val*x2_val)**(-kval)) print(partial_sum2(2,5))
pythonimport mpmath as mp def sum_single(n1,k,x1,x2,rho, Nmax=60): s=mp.mpf('0') for n2 in range(0,Nmax+1): M = mp.gamma(n1+n2+k)/(mp.gamma(n1+1)*mp.gamma(n2+1)*mp.gamma(k)) # 2F1 parameters: a=n1, b=n2, c=n1+n2+k-1 hf = mp.hyper([n1, n2],[n1+n2+k-1], rho) s += (x1**n1)*(x2**n2)*M*hf return (1 - x1 - x2 - rho*x1*x2)**k * s for x1 in [0.1,0.2]: for x2 in [0.05,0.1]: val = sum_single(2,3,x1,x2,0.2, Nmax=40) print(x1,x2,val)
pythonimport sympy as sp n1=sp.symbols('n1', integer=True, positive=True) k=sp.symbols('k', integer=True, positive=True) n2=sp.symbols('n2', integer=True, nonnegative=True) x2, rho = sp.symbols('x2 rho') # Let's try specific n1,k to guess def T_series(n1_val, k_val, order=6): # Return series coefficients up to x2^order coeffs = [] for N in range(0, order+1): # coefficient of x2^N equals summand with n2=N n2v = N M = sp.rf(k_val, n1_val+n2v) / (sp.factorial(n1_val)*sp.factorial(n2v)) # (k)_{n1+n2}/(n1! n2!) hf = sp.hyper([n1_val, n2v],[n1_val+n2v
pythonimport mpmath as mp def T_sum(n1,k,x2,rho,Nmax=60): s=mp.mpf('0') for n2 in range(0,Nmax+1): M = mp.nprod(lambda j: (k + j), [0, n1 + n2 -1])/ (mp.factorial(n1)*mp.factorial(n2)) if n1+n2>0 else 1/(mp.factorial(n1)*mp.factorial(n2)) # (k)_{n1+n2} # better compute via gamma to be safe M = mp.gamma(k+n1+n2)/ (mp.gamma(k) * mp.factorial(n1)*mp.factorial(n2)) hf = mp.hyper([n1, n2],[n1+n2+k-1], rho) s += M * hf * (x2**n2) return s def T_guess(n1,k,x2,rho): return (1 - x2)**(-k) * mp.hyper([n1, k],[n1+k], (rho*x2)/(1 - x2)) for params in [(1,2,0.1,0.2),(2,3,0.1,0.3),(3,2,0.2,0.4)]: n1,k,x2,rho = params S = T_sum(n1,k,x2,rho, Nmax=80) G = T_guess(n1,k,x2,rho) print(params, S, G, S/G)
pythondef T_guess2(n1,k,x2,rho): return (1 - x2)**(-k-n1) * mp.hyper([n1, n1],[n1+k], (rho*x2)/(1 - x2)) for params in [(1,2,0.1,0.2),(2,3,0.1,0.3),(3,2,0.2,0.4)]: n1,k,x2,rho = params S = T_sum(n1,k,x2,rho, Nmax=200) G = T_guess2(n1,k,x2,rho) print(params, S, G, S/G)
pythondef fit_exponents(n1,k,rho): import numpy as np xs = [0.02, 0.05, 0.08, 0.1] # Try grids of a,b small integers between 0..5 best=None for a in range(0,7): for b in range(0,7): vals=[] for x2 in xs: T=T_sum(n1,k,x2,rho, Nmax=120) vals.append(T * (1 - x2)**a * (1 - rho*x2)**b) # Check if vals approximately constant (low variance relative to mean) mean = sum(vals)/len(vals) var = sum((v-mean)**2 for v in vals)/len(vals) if best is None or var < best[0]: best=(var, a,b,mean,vals) return best print(fit
pythonprint(fit_exponents(1,2,0.2))
pythondef S0_sum(n1,k,x2,rho, Nmax=120): beta = n1 + k - 1 s=mp.mpf('0') for n in range(0,Nmax+1): term = mp.nprod(lambda j: (beta + j), [0, n-1]) if n>0 else 1 # (beta)_n term = mp.gamma(beta+n)/mp.gamma(beta) term = term / mp.factorial(n) * (x2**n) * mp.hyper([n1, n], [beta + n], rho) s += term return s def S0_closed(n1,k,x2,rho): beta = n1 + k - 1 return (1 - x2)**(n1 - beta) * (1 - (1+rho)*x2)**(-n1) for params in [(1,2,0.1,0.2),(2,3,0.1,0.3),(3,2,0.2,0.4)]: n1,k,x2,rho = params S = S0_sum(n1,k,x2,rho, Nmax=200) G = S0_closed(n1,k,x2,rho) print
pythonfor params in [(1,2,0.1,0.2),(2,3,0.1,0.3),(3,2,0.2,0.4)]: n1,k,x2,rho = params S = S0_sum(n1,k,x2,rho, Nmax=500) G = S0_closed(n1,k,x2,rho) print(params, S, G, float(S/G))
pythona_val=2 beta_val=4 rho_val=sp.Rational(1,3) z_val=sp.Rational(1,20) series_sum = 0 for n in range(0,50): term = sp.rf(beta_val, n)/sp.factorial(n) * (z_val**n) * sp.hyper([a_val, n],[beta_val + n], rho_val) series_sum += sp.simplify(term) series_sum = sp.N(series_sum) closed = (1 - z_val)**(a_val - beta_val) * (1 - (1+rho_val)*z_val)**(-a_val) float(series_sum), float(closed), float(series_sum/closed)
pythonimport mpmath as mp def S0_sum_float(n1,beta,x2,rho,Nmax=100): s=mp.mpf('0') for n in range(0,Nmax+1): term = mp.gamma(beta+n)/mp.gamma(beta) / mp.factorial(n) * (x2**n) * mp.hyper([n1, n],[beta + n], rho) s += term return s def S0_closed_float(n1,beta,x2,rho): return (1 - x2)**(n1 - beta) * (1 - (1+rho)*x2)**(-n1) for params in [(1,4,0.05,0.33),(2,5,0.1,0.3),(3,4,0.08,0.2)]: n1,beta,x2,rho = params S = S0_sum_float(n1,beta,x2,rho, Nmax=200) G = S0_closed_float(n1,beta,x2,rho) print(params, S, G, S/G)
Yes—if you (very naturally) sum over both indices , the whole thing collapses to a constant:
(under the convergence condition ).
Inside the integral you get, after a routine simplification,
Multiplying by the outside factor leaves .
If instead you literally intend to keep fixed and sum only over , there isn’t a comparable elementary closed form; the result can be expressed compactly in (multi)hypergeometric terms, but it doesn’t simplify to a rational/power expression. If you want that one-variable closed form, say the word and I’ll write it out in the hypergeometric notation you prefer.