Définition d'une série formelle en Sage
25 septembre 2012 | Catégories: sage | View CommentsQuestion :
Comment fait-on en sage pour avoir le terme général d'une serie formelle en \(x\) comme \(1/(1-q^2x)\) par exemple, où \(q\) est un paramètre (il faudrait obtenir \(q^{2k} x^k\) ) ?
Quelques exemples se trouvent dans la documentation sur les espèces en Sage, mais il faut faire quand même quelques essais et combiner quelques idées pour y parvenir. Une façon de procéder est définir une espèce récursive en assignant un poids pour le paramètre (voir Weighted Species).
Sous une forme récursive, la série s'écrit :
\[ L = 1 + q^2 \cdot x \cdot L \]
Alors, en sage, on écrira:
sage: q = QQ['q'].gen() sage: E = species.EmptySetSpecies() sage: X = species.SingletonSpecies(weight=q^2) sage: L = CombinatorialSpecies() sage: L.define(E+X*L) sage: L.generating_series().coefficients(10) [1, q^2, q^4, q^6, q^8, q^10, q^12, q^14, q^16, q^18]
Aussi:
sage: X.generating_series().coefficients(5) [0, q^2, 0, 0, 0] sage: E.generating_series().coefficients(5) [1, 0, 0, 0, 0]
On peut faire le produit de deux espèces:
sage: A = X * X sage: A.generating_series().coefficients(5) [0, 0, q^4, 0, 0]
On peut faire la somme de deux espèces:
sage: B = X + X sage: B.generating_series().coefficients(5) [0, 2*q^2, 0, 0, 0]
mais pas la différence:
sage: E - X Traceback (most recent call last) : ... TypeError: unsupported operand type(s) for -: 'EmptySetSpecies_class' and 'SingletonSpecies_class'
ni le quotient:
sage: E / X Traceback (most recent call last): ... TypeError: unsupported operand type(s) for /: 'EmptySetSpecies_class' and 'SingletonSpecies_class'
Encore moins une combinaison des deux:
sage: E/(E-X) Traceback (most recent call last) : ... TypeError: unsupported operand type(s) for -: 'EmptySetSpecies_class' and 'SingletonSpecies_class'
et je ne sais pas pourquoi...