login
A356656
Partition triangle read by rows. The coefficients of the incomplete Bell polynomials.
0
1, 0, 1, 0, 1, 1, 0, 1, 3, 1, 0, 1, 4, 3, 6, 1, 0, 1, 5, 10, 10, 15, 10, 1, 0, 1, 6, 15, 10, 15, 60, 15, 20, 45, 15, 1, 0, 1, 7, 21, 35, 21, 105, 70, 105, 35, 210, 105, 35, 105, 21, 1, 0, 1, 8, 28, 56, 35, 28, 168, 280, 210, 280, 56, 420, 280, 840, 105, 70, 560, 420, 56, 210, 28, 1
OFFSET
0,9
COMMENTS
We call a triangle a 'partition triangle' if the rows have length A000041 or A000041 + 1.
LINKS
E. T. Bell, Exponential polynomials, Ann. Math., 35 (1934), 258-277.
Peter Luschny, The Bell transform.
FORMULA
In row n the coefficients of IBell(n, k, Z_n) for k = 0..n are lined up. Z_n denotes the set of variables z[0], z[1], ... z[n] of the incomplete Bell polynomial IBell(n, k) of degree k.
EXAMPLE
The triangle starts:
[0] 1;
[1] 0, 1;
[2] 0, 1, 1;
[3] 0, 1, 3, 1;
[4] 0, 1, [4, 3], 6, 1;
[5] 0, 1, [5, 10], [10, 15], 10, 1;
[6] 0, 1, [6, 15, 10], [15, 60, 15], [20, 45], 15, 1;
[7] 0, 1, [7, 21, 35], [21, 105, 70, 105], [35, 210, 105], [35, 105], 21, 1;
Summing the bracketed terms reduces the triangle to A048993.
The first few polynomials are:
[0] 1;
[1] 0, z[0];
[2] 0, z[1], z[0]^2;
[3] 0, z[2], 3*z[0]*z[1], z[0]^3;
[4] 0, z[3], 4*z[0]*z[2]+3*z[1]^2, 6*z[0]^2*z[1], z[0]^4;
[5] 0, z[4], 5*z[0]*z[3]+10*z[1]*z[2], 10*z[0]^2*z[2]+15*z[0]*z[1]^2, 10*z[0]^3* z[1], z[0]^5;
It is noteworthy that the substitution z[n] -> n! for n >= 0 yields A132393. More examples are given in the authors blog post (see links).
MAPLE
aRow := n -> seq(coeffs(IncompleteBellB(n, k, seq(z[i], i = 0..n))), k = 0..n):
seq(aRow(n), n = 0..8);
PROG
(SageMath)
from functools import cache
@cache
def incomplete_bell_polynomial(n, k):
Z = var(["z_" + str(i) for i in range(n - k + 1)])
R = PolynomialRing(ZZ, Z, n - k + 1, order='lex')
if k == 0: return R(k^n)
return R(sum(binomial(n-1, j-1) * incomplete_bell_polynomial(n-j, k-1) * Z[j-1]
for j in range(n - k + 2)).expand())
def poly_row(n): return [incomplete_bell_polynomial(n, k) for k in range(n + 1)]
def coeff_row(n): return flatten([[0] if (c := p.coefficients()) == [] else c for p in poly_row(n)])
for n in range(8): print(coeff_row(n))
CROSSREFS
Variants: A036040, A080575, A178867. Row sums: A000110.
A048993 (reduced triangle), A052810 (length of rows), A132393 (factorial substituion).
Sequence in context: A099905 A268441 A264435 * A085391 A280880 A050143
KEYWORD
nonn,tabf
AUTHOR
Peter Luschny, Aug 28 2022
STATUS
approved