3.4 Les fonctions génératrices exponentielles
Au chapitre précédent, nous avons eu l’occasion d’étudier plusieurs problèmes concernant des récurrences avec un seul paramètre. Ceci est particulièrement utile pour résoudre des problèmes où il y a des contraintes sur la position des objets. D’un autre côté, depuis le début du chapitre, nous avons étudié les fonctions génératrices. Ces dernières sont particulièrement utiles pour résoudre des problèmes où les contraintes portent sur les quantités. Il faut cependant faire attention, car les fonctions génératrices ordinaires ne tiennent pas compte (par défaut) de l’ordre des objets.
La méthode des fonctions génératrices exponentielles que nous allons introduire immédiatement nous permet à nouveau de traiter des problèmes avec des contraintes sur les quantités, mais cette fois en tenant compte de l’ordre des objets. Si est une suite, alors on définit la fonction génératrice exponentielle de cette suite comme étant:
L’intérêt des fonctions génératrices exponentielles vient du fait que le produit fonctionne différemment de celui des fonctions génératrices ordinaires. Pour mieux comprendre, regardons les deux produits suivants. Le premier correspond au produit de deux fonctions génératrices ordinaires, alors que le second correspond au produit de deux fonctions génératrices exponentielles.
Théorème 3.4.1:
Produit des fonctions génératrices.
La seule différence importante entre ces deux produits est la présence du coefficient binomial dans le cas de la fonction génératrice exponentielle. Bien que cette différence puisse sembler mineure, elle est en fait particulièrement importante. Elle sert à choisir la position des éléments provenant de notre première suite. Autrement dit, c’est ce coefficient binomial qui permet de compter le nombre de configurations en tenant compte de l’ordre, ce qui n’était pas le cas pour les fonctions génératrices ordinaires.
Dans le cas des fonctions génératrices ordinaires, la fonction génératrice de la suite joue un rôle particulièrement important et porte le nom de série géométrique. Nous allons maintenant considérer à nouveau cette même suite, mais cette fois dans le contexte des fonctions génératrices exponentielles. Nous allons donc poser:
En prenant la dérivée, on obtient donc:
Ce qui nous permet d’affirmer que , où est une constante que l’on peut trouver à partir d’une valeur initiale. Il n’est pas très difficile de voir que , ce qui nous donne le théorème suivant.
Théorème 3.4.2:
Série de la fonction exponentielle.
Ce théorème est la raison pour laquelle ces fonctions génératrices portent le nom d’exponentielle.
Exemple 3.4.1.
De combien de façons peut-on choisir un code d’accès de caractères qui doivent être choisi parmi les lettres et . Pour ce faire, remarquons que nous pouvons choisir autant de fois que nous le voulons chacune des trois lettres. Si on dénote par le nombre de code d’accès que l’on peut former avec caractères, alors la fonction génératrice est:
Il y a donc code d’accès possible de caractères. En particulier, nous avons codes de caractères. Ceci correspond à ce que nous aurions pu obtenir directement à l’aide du principe du produit.
Exemple 3.4.2.
De combien de façons peut-on choisir un code d’accès de caractères qui doivent être choisi parmi les lettres et , si le code doit contenir au moins un et un maximum de trois . Pour ce faire, nous allons procéder essentiellement de la même façon que dans l’exemple précédent, mais en ajustant le nombre de chaque lettre disponible.
avec caractères, on a donc un total de options qui satisfont les conditions. Pour trouver directement cette valeur, on peut utiliser le code Python suivant:
1 from sympy import *2 from pandas import *3 init_printing()45 x = Symbol(’x’)6 p1 = sum([x**i/factorial(i) for i in range(1,6)])7 p2 = sum([x**i/factorial(i) for i in range(0,4)])8 p3 = sum([x**i/factorial(i) for i in range(0,6)])9 expand(p1*p2*p3).coeff(x**5)*factorial(5)