cp's OEIS Frontend

This is a front-end for the Online Encyclopedia of Integer Sequences, made by Christian Perfect. The idea is to provide OEIS entries in non-ancient HTML, and then to think about how they're presented visually. The source code is on GitHub.

A356656 Partition triangle read by rows. The coefficients of the incomplete Bell polynomials.

Original entry on oeis.org

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

Views

Author

Peter Luschny, Aug 28 2022

Keywords

Comments

We call a triangle a 'partition triangle' if the rows have length A000041 or A000041 + 1.

Examples

			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).
		

Crossrefs

Variants: A036040, A080575, A178867. Row sums: A000110.
A048993 (reduced triangle), A052810 (length of rows), A132393 (factorial substituion).

Programs

  • Maple
    aRow := n -> seq(coeffs(IncompleteBellB(n, k, seq(z[i], i = 0..n))), k = 0..n):
    seq(aRow(n), n = 0..8);
  • 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))

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.