\(q\)-Numbers

Note

These are the quantum group \(q\)-analogs, not the usual \(q\)-analogs typically used in combinatorics (see sage.combinat.q_analogues).

sage.algebras.quantum_groups.q_numbers.q_binomial(n, k, q=None)[source]

Return the \(q\)-binomial coefficient.

Let \([n]_q!\) denote the \(q\)-factorial of \(n\) given by sage.algebras.quantum_groups.q_numbers.q_factorial(). The \(q\)-binomial coefficient is defined by

\[\begin{split}\begin{bmatrix} n \\ k \end{bmatrix}_q = \frac{[n]_q!}{[n-k]_q! \cdot [k]_q!}.\end{split}\]

INPUT:

  • n, k – the nonnegative integers \(n\) and \(k\) defined above

  • q – (default: \(q \in \ZZ[q, q^{-1}]\)) the parameter \(q\) (should be invertible)

If q is unspecified, then it is taken to be the generator \(q\) for a Laurent polynomial ring over the integers.

Note

This is not the “usual” \(q\)-binomial but a variant useful for quantum groups. For the version used in combinatorics, see sage.combinat.q_analogues.

Warning

This method uses division by \(q\)-factorials. If \([k]_q!\) or \([n-k]_q!\) are zero-divisors, or division is not implemented in the ring containing \(q\), then it will not work.

EXAMPLES:

sage: from sage.algebras.quantum_groups.q_numbers import q_binomial
sage: q_binomial(2, 1)
q^-1 + q
sage: q_binomial(2, 0)
1
sage: q_binomial(4, 1)
q^-3 + q^-1 + q + q^3
sage: q_binomial(4, 3)
q^-3 + q^-1 + q + q^3
>>> from sage.all import *
>>> from sage.algebras.quantum_groups.q_numbers import q_binomial
>>> q_binomial(Integer(2), Integer(1))
q^-1 + q
>>> q_binomial(Integer(2), Integer(0))
1
>>> q_binomial(Integer(4), Integer(1))
q^-3 + q^-1 + q + q^3
>>> q_binomial(Integer(4), Integer(3))
q^-3 + q^-1 + q + q^3
sage.algebras.quantum_groups.q_numbers.q_factorial(n, q=None)[source]

Return the \(q\)-analog of the factorial \(n!\).

The \(q\)-factorial is defined by:

\[[n]_q! = [n]_q \cdot [n-1]_q \cdots [2]_q \cdot [1]_q,\]

where \([n]_q\) denotes the \(q\)-integer defined in sage.algebras.quantum_groups.q_numbers.q_int().

INPUT:

  • n – the nonnegative integer \(n\) defined above

  • q – (default: \(q \in \ZZ[q, q^{-1}]\)) the parameter \(q\) (should be invertible)

If q is unspecified, then it defaults to using the generator \(q\) for a Laurent polynomial ring over the integers.

Note

This is not the “usual” \(q\)-factorial but a variant useful for quantum groups. For the version used in combinatorics, see sage.combinat.q_analogues.

EXAMPLES:

sage: from sage.algebras.quantum_groups.q_numbers import q_factorial
sage: q_factorial(3)
q^-3 + 2*q^-1 + 2*q + q^3
sage: p = LaurentPolynomialRing(QQ, 'q').gen()
sage: q_factorial(3, p)
q^-3 + 2*q^-1 + 2*q + q^3
sage: p = ZZ['p'].gen()
sage: q_factorial(3, p)
(p^6 + 2*p^4 + 2*p^2 + 1)/p^3
>>> from sage.all import *
>>> from sage.algebras.quantum_groups.q_numbers import q_factorial
>>> q_factorial(Integer(3))
q^-3 + 2*q^-1 + 2*q + q^3
>>> p = LaurentPolynomialRing(QQ, 'q').gen()
>>> q_factorial(Integer(3), p)
q^-3 + 2*q^-1 + 2*q + q^3
>>> p = ZZ['p'].gen()
>>> q_factorial(Integer(3), p)
(p^6 + 2*p^4 + 2*p^2 + 1)/p^3

The \(q\)-analog of \(n!\) is only defined for \(n\) a nonnegative integer (Issue #11411):

sage: q_factorial(-2)
Traceback (most recent call last):
...
ValueError: argument (-2) must be a nonnegative integer
>>> from sage.all import *
>>> q_factorial(-Integer(2))
Traceback (most recent call last):
...
ValueError: argument (-2) must be a nonnegative integer
sage.algebras.quantum_groups.q_numbers.q_int(n, q=None)[source]

Return the \(q\)-analog of the nonnegative integer \(n\).

The \(q\)-analog of the nonnegative integer \(n\) is given by

\[[n]_q = \frac{q^n - q^{-n}}{q - q^{-1}} = q^{n-1} + q^{n-3} + \cdots + q^{-n+3} + q^{-n+1}.\]

INPUT:

  • n – the nonnegative integer \(n\) defined above

  • q – (default: \(q \in \ZZ[q, q^{-1}]\)) the parameter \(q\) (should be invertible)

If q is unspecified, then it defaults to using the generator \(q\) for a Laurent polynomial ring over the integers.

Note

This is not the “usual” \(q\)-analog of \(n\) (or \(q\)-integer) but a variant useful for quantum groups. For the version used in combinatorics, see sage.combinat.q_analogues.

EXAMPLES:

sage: from sage.algebras.quantum_groups.q_numbers import q_int
sage: q_int(2)
q^-1 + q
sage: q_int(3)
q^-2 + 1 + q^2
sage: q_int(5)
q^-4 + q^-2 + 1 + q^2 + q^4
sage: q_int(5, 1)
5
>>> from sage.all import *
>>> from sage.algebras.quantum_groups.q_numbers import q_int
>>> q_int(Integer(2))
q^-1 + q
>>> q_int(Integer(3))
q^-2 + 1 + q^2
>>> q_int(Integer(5))
q^-4 + q^-2 + 1 + q^2 + q^4
>>> q_int(Integer(5), Integer(1))
5