A275332 Triangle read by rows: the major index statistic of the oscillating orbitals, also the q-analog of the oscillating orbitals A232500.
0, 0, 0, 0, 0, 1, 0, 1, 0, 1, 1, 2, 2, 2, 1, 1, 0, 1, 1, 1, 2, 2, 1, 1, 1, 0, 1, 2, 3, 5, 7, 8, 9, 9, 8, 7, 5, 3, 2, 1, 0, 1, 1, 2, 2, 4, 4, 5, 4, 5, 4, 4, 2, 2, 1, 1, 0, 1, 2, 4, 6, 10, 14, 19, 23, 28, 31, 34, 34, 34, 31, 28, 23, 19, 14, 10, 6, 4, 2, 1
Offset: 0
Examples
Some polynomials: [4] (q^2 + 1)*q [5] (q^4 + q^3 + q^2 + q + 1)*(q^2 + 1)*q [6] (q^4 + q^3 + q^2 + q + 1)*(q^2 - q + 1)*(q + 1)*q [7] (q^6 + q^5 + q^4 + q^3 + q^2 + q + 1)*(q^4 + q^3 + q^2 + q + 1)*(q^2 - q + 1)*(q + 1)*q [8] (q^6 + q^5 + q^4 + q^3 + q^2 + q + 1)*(q^4 + 1)*(q^2 + q + 1)*(q^2 - q + 1)*q [9] (q^6 + q^5 + q^4 + q^3 + q^2 + q + 1)*(q^6 + q^3 + 1)*(q^4 + 1)*(q^2 + q + 1)^2*(q^2 - q + 1)*q The triangle starts: [n] [k=0,1,2,...] [row sum] [0] [0] 0 [1] [0] 0 [2] [0] 0 [3] [0] 0 [4] [0, 1, 0, 1] 2 [5] [0, 1, 1, 2, 2, 2, 1, 1] 10 [6] [0, 1, 1, 1, 2, 2, 1, 1, 1] 10 [7] [0, 1, 2, 3, 5, 7, 8, 9, 9, 8, 7, 5, 3, 2, 1] 70 [8] [0, 1, 1, 2, 2, 4, 4, 5, 4, 5, 4, 4, 2, 2, 1, 1] 42 T(5,3) = 2 because A = [-1, 1, 1, -1, 0] and B = [1, 0, -1, -1, 1] are oscillating orbitals; A has downsteps at position 3 and B has downsteps at positions 1 and 2.
Links
- Peter Luschny, Orbitals
Crossrefs
Programs
-
Sage
from sage.combinat.q_analogues import q_factorial def osc_orbitals_coeffs(n): q = var('q') if n < 4: return [0] a = lambda n,q: sum(q^j for j in (0..n)) b = lambda n,q: sum(q^(2*j) for j in (0..n)) A = lambda n,q: q*a(n-2,q)/a(n,q) B = lambda n,q: q*b(n-1,q)/b(n,q) Q = A(n//2,q) if n%4 == 0 or n%4 == 1 else B(n//4,q) qSwing = lambda n,q: q_factorial(n,q)/q_factorial(n//2,q)^2 return ((Q*qSwing(n,q)).factor()).list() for n in (0..10): print([n], osc_orbitals_coeffs(n))
-
Sage
# uses[unit_orbitals from A274709] # Brute force counting def osc_orbitals_major_index(n): if n<4: return [0] S = [0]*(((n+1)//2)^2 - (n % 2)) for u in unit_orbitals(n): if all(x >= 0 for x in accumulate(u)): continue if all(x <= 0 for x in accumulate(u)): continue L = [i+1 if u[i+1] < u[i] else 0 for i in (0..n-2)] # i+1 because u is 0-based whereas convention assumes 1-base S[sum(L)] += 1 return S for n in (0..10): print(osc_orbitals_major_index(n))
Formula
Let A(n,q) = q*alpha(n-2,q)/alpha(n,q) with alpha(n,q) = Sum_{j=0..n} q^j and B(n,q) = q*beta(n-1,q)/beta(n,q) with beta(n,q) = Sum_{j=0..n} q^(2*j). Then QOscOrbitals(n,q) = qSwing(n,q)*C(n,q) with C(n,q) = A(floor(n/2),q) if n mod 4 in {0, 1} else C(n,q) = B(floor(n/4),q).
Comments