PolynomialTools
Real-rootedness, interlacing, log-concavity, Eulerian and h*-polynomials, recurrence finding, Hilbert functions.
Load with Needs["PolynomialTools`"].
Background on symmetricfunctions.com: Real-rooted and stable polynomials, Interlacing polynomials, Eulerian polynomials, Gamma-positive polynomials, Ehrhart theory.
Functions and symbols
BinomialEulerianPolynomial
BinomialEulerianPolynomial[n,t] returns the Binomial Eulerian polynomial, introduced by Athanasiadis.
CompleteHomogeneousPolynomial
CompleteHomogeneousPolynomial[d,{a,b},x] returns the degree-d complete homogeneous polynomial in variables x[a]…x[b].
DenominatorIndexDegree
DenominatorIndexDegree is an option for FindPolynomialRecurrence; its default is 0 and its value is a non-negative integer.
DenominatorVariableDegree
DenominatorVariableDegree is an option for FindPolynomialRecurrence; its default is 0 and its value is a non-negative integer.
DifferentialDegree
DifferentialDegree is an option for FindPolynomialRecurrence; its default is 0 and its value is a non-negative integer.
ElementarySymmetricPolynomial
ElementarySymmetricPolynomial[d,{a,b},x] returns the degree-d elementary symmetric polynomial in variables x[a]…x[b].
EulerianA
EulerianA[n,m] returns the Eulerian number counting permutations of n with m descents.
Background: Eulerian polynomials
EulerianAPolynomial
EulerianAPolynomial[n,t] returns Sum[EulerianA[n,m] t^m,{m,n}] as a polynomial in t.
Background: Eulerian polynomials
FindPolynomialRecurrence
FindPolynomialRecurrence[{p1,p2,…,pk},{t,n}] returns
a linear recursion involving the polynomials (in t) and their derivatives, and coefficients in
t and n. Options are used to specify maximal length of recursion, maximal degree of differentiation,
and maximal degree in t and degree in n.
FindStablePolynomialCounterExample
FindStablePolynomialCounterExample[poly] uses FindInstance to look for a counterexample to stability.
GammaPolynomial
GammaPolynomial[poly,x] expands a palindromic polynomial in the gamma-basis. See Athanasiadis for background.
Background: Gamma-positive polynomials
HilbertFunctionValues
HilbertFunctionValues[polyIdeal,vars,d] returns the Hilbert function values through degree d for an ideal generated by polyIdeal in vars.
Homogeneous
Homogeneous is an option for FindPolynomialRecurrence; its default is True and its value is True or False.
HStarPolynomial
HStarPolynomial[pol] returns the h*-polynomial using the first variable of pol.
HStarPolynomial[pol,x] returns the h*-polynomial in the specified variable x.
Background: Ehrhart theory
HStarVectorToEhrhart
HStarVectorToEhrhart[vec,t] returns the Ehrhart polynomial associated with the h-vector.
Background: Ehrhart theory
HVector
HVector[poly, x] returns the h-vector associated with the polynomial poly in x, with trailing zero entries retained through the degree of poly.
Background: Ehrhart theory
HVectorInequalitiesQ
HVectorInequalitiesQ[{1,h1,h2,…,hd}] returns True if the vector satisfies several necessary inequalities for an h*-vector; the conditions are not sufficient.
Background: Ehrhart theory
IndexDegree
IndexDegree is an option for FindPolynomialRecurrence; its default is 1 and its value is a non-negative integer.
Interleaving2x2MinorQ
Interleaving2x2MinorQ[m,t] returns true if the 2x2-matrix m (in t) preserves interlacing. See Bränden’s work.
InterleavingRootsQ
InterleavingRootsQ[P,Q,t] returns True if the real roots of P and Q weakly interleave, with the largest root of Q at least the largest root of P.
InterleavingRootsQ[{p1,p2,…},t] returns True if every pair of polynomials in the list weakly interleaves. The WorkingPrecision option defaults to 30.
IsLorentzianQ
IsLorentzianQ[polynomial] returns true if the polynomial is Lorentzian (in all variables). Set second argument to true if check for Normalized Lorentzian.
LogConcaveQ
LogConcaveQ[poly,t] returns true if coefficients form a log-concave sequence.
RealRootedQ
RealRootedQ[poly] returns True if poly is a real-rooted univariate polynomial in its single variable, or a constant.
RealRootedQ[poly,t] returns True if poly is a real-rooted univariate polynomial in t, or a constant.
Background: Real-rooted and stable polynomials
RecurrenceLength
RecurrenceLength is an option for FindPolynomialRecurrence; its default is 2 and its value is a non-negative integer.
RefinedEulerian
RefinedEulerian[n,j,t] returns the descent-generating polynomial for permutations in S_n with pi(1)=j.
RefinedEulerianCoefficients
RefinedEulerianCoefficients[poly,t] returns the coefficients in the refined Eulerian basis.
RulesList
RulesList is an option for FindPolynomialRecurrence; its default is False, and True returns the recurrence coefficients as rules.
SamePhaseStableQ
SamePhaseStableQ[poly, [samples] ] randomly checks some stuff.
SequenceToPolynomial
SequenceToPolynomial[f, x] returns a polynomial in x interpolating the sequence f[1], f[2], …; it samples one value beyond the candidate degree. SequenceToPolynomial[f, x, maxDegree] limits the search to degree maxDegree (default 30).
SEulerianPolynomial
SEulerianPolynomial[s,t] returns the s-Eulerian polynomial associated with positive vector s.
StablePolynomialQ
StablePolynomialQ[poly, [samples] ] randomly checks some stuff.
SturmSequenceQ
SturmSequenceQ[polys,x] returns true if the sequence forms a Sturm sequence.
SymmetricDecomposition
SymmetricDecomposition[p,x] returns two palindromic polynomials, a,b, such that p=a+xb
UltraLogConcaveQ
UltraLogConcaveQ[poly,t] returns true if coefficients form an ultra log-concave sequence.
VariableDegree
VariableDegree is an option for FindPolynomialRecurrence; its default is 1 and its value is a non-negative integer.