Aller au contenu principal

Qu'est-ce que la fonction LNGAMMA.PRECIS ?

Définition
La fonction LNGAMMA.PRECIS calcule ln(Γ(x)), le logarithme naturel de la fonction gamma, avec une précision optimisée pour les valeurs très petites ou très grandes. Elle exige un argument strictement positif.

LNGAMMA.PRECIS (GAMMALN.PRECISE en anglais) te sert quand un calcul de factorielle ou de combinatoire produit un nombre trop grand pour Excel : en passant par le logarithme, tu additionnes des termes au lieu de les multiplier, et tu évites le débordement sans perdre en précision.

Concrètement, la fonction gamma croît à une vitesse folle : GAMMA(171) dépasse les capacités d'Excel et retourne une erreur. LNGAMMA.PRECIS(171) fonctionne sans problème et te donne 711,71. C'est elle qu'on retrouve en statistiques bayésiennes, dans les modèles de distribution beta, les calculs de combinatoires pour grands n, et partout où les factorielles explosent.

Syntaxe

=LNGAMMA.PRECIS(x)

Clique sur un argument pour aller à son explication.

LNGAMMA.PRECIS est disponible depuis Excel 2010. Pour les versions antérieures, utilise LNGAMMA qui donne des résultats identiques dans la plupart des cas. Les deux retournent une erreur #NOMBRE! si x est nul ou négatif.

Lucas, la mascotte du Dojo, inspecte les arguments de la fonction à la loupe

Comprendre chaque paramètre de la fonction LNGAMMA.PRECIS

1

x

: un nombre strictement positif pour lequel tu veux calculer ln(Γ(x)), où Γ est la fonction gamma d'Euler

C'est la généralisation de la factorielle aux nombres réels : pour un entier n, Γ(n) = (n - 1)!.

Tu peux passer une valeur directe comme 6, une référence de cellule comme A1, ou le résultat d'une formule. La valeur doit être strictement supérieure à 0.

Le conseil du pro
Attention au décalage : LNGAMMA.PRECIS(n) donne ln((n-1)!), pas ln(n!). Pour obtenir ln(n!), passe toujours l'argument n+1. Ainsi ln(5!) s'écrit LNGAMMA.PRECIS(6) et vaut 4,787.
Lucas, la mascotte du Dojo, fait une démonstration pas à pas de la fonction dans Excel

Exemples pratiques pas à pas

Exemple 1

Comment calculer le logarithme naturel de la fonction gamma avec la fonction LNGAMMA.PRECIS

Tu prépares des probabilités binomiales et de Poisson sur de très grands effectifs, et chaque terme fait apparaître une factorielle largement hors de portée d'un calcul direct. Tant que tu restes en logarithmes, ces termes se manipulent sans effort et se combinent par simples additions, alors que la moindre tentative de repasser en valeurs réelles ferait tout échouer. La fonction LNGAMMA.PRECIS te donne le logarithme de Γ pour chaque ligne, quelle que soit la taille de l'argument.

Les étapes
  1. 1
    Dans une cellule, écris =LNGAMMA.PRECIS(.
  2. 2
    En 1er argument : clique sur la cellule qui porte le nombre dont tu veux le logarithme de Γ, B2. Elle affiche 501 sur la première ligne. La valeur doit rester strictement positive, sinon 0 et les négatifs renvoient l'erreur #NOMBRE!.
  3. 3
    Ferme la parenthèse et appuie sur Entrée, puis recopie la formule vers le bas. Les arguments passent de 251 à 1000 sans que rien ne change pour la fonction, et la colonne reste comprise entre 1409 et 5905 là où les factorielles correspondantes seraient toutes illisibles.
Au final, ta formule devrait ressembler à ça :=LNGAMMA.PRECIS(B2)
Explication
La fonction LNGAMMA.PRECIS rend le logarithme de Γ sans jamais former Γ, ce qui est la seule façon de traiter ces lignes : 2611,33 est le logarithme de la factorielle de 500, un nombre de 1 135 chiffres qu'aucune cellule ne pourrait contenir. Le décalage habituel s'applique ici aussi, donc l'argument 501 vise bien la factorielle de 500 et non celle de 501.
Exemple 2

Comment éviter l'erreur #NOMBRE! de la fonction LNGAMMA.PRECIS sur zéro et les négatifs

Ta colonne de logarithmes de Γ se remplit de #NOMBRE! sur les lignes basses de ton jeu de données, et tu crois d'abord à un problème de taille alors que c'est un problème de signe. La règle est courte : tout ce qui est strictement positif passe, zéro et les négatifs sont refusés, y compris les décimaux négatifs que GAMMA acceptait pourtant très bien. SIERREUR te permet de neutraliser ces lignes sans perdre les autres.

Les étapes
  1. 1
    Dans une cellule, écris =SIERREUR(.
  2. 2
    En 1er argument : écris le calcul à surveiller et referme-le, LNGAMMA.PRECIS(B2). Le test à te poser sur B2 n'est pas « est-ce un entier » mais « est-ce strictement positif », ce qui laisse passer le décimal 0,5 et bloque 0 comme -0,5.
  3. 3
    En 2ᵉ argument : saisis le texte de repli affiché quand le calcul échoue, "Erreur #NOMBRE!". Évite de le remplacer par un 0, car la fonction LNGAMMA.PRECIS rend de vraies valeurs proches de zéro autour de l'argument 1, et un zéro de remplacement s'y confondrait avec un résultat légitime.
  4. 4
    Ferme la parenthèse et appuie sur Entrée. La parenthèse de la fonction LNGAMMA.PRECIS a déjà été refermée à l'intérieur du premier argument.
Voici la formule que tu obtiens à la fin :=SIERREUR(LNGAMMA.PRECIS(B2); "Erreur #NOMBRE!")
Explication
Le domaine de la fonction LNGAMMA.PRECIS est plus étroit qu'il n'y paraît : elle accepte n'importe quel positif, y compris le décimal 0,5 qui rend 0,57, mais elle rejette 0 et tous les négatifs sans exception. La nuance compte, parce que GAMMA accepte le décimal négatif -0,5 et rend -3,5449 : passer au logarithme, c'est perdre la moitié négative du domaine, puisque le logarithme d'un nombre négatif n'existe pas.
Exemple 3

Comment vérifier que la fonction LNGAMMA.PRECIS rend la même valeur que LNGAMMA

Tu hérites d'un classeur où les deux noms cohabitent, l'un dans les vieilles feuilles et l'autre dans les nouvelles, et la question tombe avant la revue : faut-il tout réécrire pour gagner en précision ? Une colonne de contrôle qui soustrait l'une à l'autre répond en une formule et t'évite une migration inutile. Le test vaut mieux que la réputation du nom, surtout sur un point aussi facile à vérifier.

Les étapes
  1. 1
    Dans une cellule, écris =LNGAMMA.PRECIS(.
  2. 2
    En 1er argument : clique sur la valeur à tester, B2. Choisis des arguments qui balaient tout le domaine plutôt que des valeurs voisines, du demi-entier 0,5 jusqu'à 1E+300, sans quoi le test ne prouverait rien.
  3. 3
    Ferme la parenthèse, complète par -LNGAMMA(B2), puis appuie sur Entrée. Ce second terme rappelle LNGAMMA sur exactement la même cellule et se retranche du premier, si bien que le moindre écart entre les deux fonctions ressortirait au lieu d'être masqué. Recopie vers le bas : les cinq lignes rendent 0, tu peux donc garder les deux écritures telles quelles.
Une fois les morceaux assemblés, ta formule donne ça :=LNGAMMA.PRECIS(B2)-LNGAMMA(B2)
Explication
L'écart est nul partout, et pas seulement « négligeable » : la soustraction rend exactement 0, y compris sur 1E+300. Le nom de la fonction LNGAMMA.PRECIS laisse croire à une précision supérieure à celle de LNGAMMA, mais aucun argument testé ne les sépare. Ce qui les distingue est leur âge (LNGAMMA.PRECIS est la version moderne du nom), pas leur résultat.
Le chiffre clé
GAMMA plafonne vite : =GAMMA(170) passe encore (7,26×10^306), mais =GAMMA(171) renvoie #NOMBRE!. Là où GAMMA déborde, =LNGAMMA.PRECIS(171) sort tranquillement 711,71.
Lucas, la mascotte du Dojo, l'air gêné face à une erreur Excel

Les erreurs fréquentes avec la fonction LNGAMMA.PRECIS

Les ratés avec LNGAMMA.PRECIS viennent presque tous du domaine de définition : la fonction n'existe que pour x strictement positif, donc un zéro ou un négatif te renvoie aussitôt #NOMBRE!. Vient ensuite le piège du décalage, parce que Γ(n) vaut (n-1)! et non n! : c'est l'oubli du +1 qui fausse tes factorielles. Et même quand le calcul passe, EXP peut déborder en repassant dans l'espace normal.

Passer un nombre négatif ou zéro

LNGAMMA.PRECIS n'accepte que les nombres strictement positifs. Γ(0) et Γ(nombres négatifs entiers) sont soit infinis soit indéfinis. Excel retourne #NOMBRE! pour tout x ≤ 0.

Solution : Vérifie que ta cellule contient une valeur strictement positive avant d'appeler la fonction. Utilise =SI(A1>0; LNGAMMA.PRECIS(A1); "Valeur invalide") pour sécuriser la formule.

Oublier le décalage d'un pour les factorielles

Γ(n) = (n - 1)!, pas n!. Pour calculer ln(n!), il faut donc appeler LNGAMMA.PRECIS(n+1). Par exemple, ln(5!) = LNGAMMA.PRECIS(6), et non LNGAMMA.PRECIS(5) qui retourne ln(4!) = ln(24).

Solution : Retiens la règle : pour ln(n!), utilise LNGAMMA.PRECIS(n+1). Pour un coefficient binomial C(n, k), la formule est =LNGAMMA.PRECIS(n+1) - LNGAMMA.PRECIS(k+1) - LNGAMMA.PRECIS(n-k+1).

EXP déborde même si LNGAMMA.PRECIS fonctionne

LNGAMMA.PRECIS peut retourner des valeurs comme 343,33, mais =EXP(343,33) dépasse les capacités d'Excel (~10^308 max). La conversion inverse avec EXP n'est donc possible que si le résultat reste dans cet intervalle.

Solution : Garde autant que possible tes calculs dans l'espace logarithmique. Additionne des logarithmes plutôt que de les exponentier à chaque étape, et n'utilise EXP que pour le résultat final si celui-ci est raisonnable.

FAQ

Questions fréquentes

LNGAMMA.PRECIS utilise un algorithme optimisé qui offre une précision supérieure, notamment pour les valeurs très petites (proches de 0) ou très grandes. Pour la plupart des usages courants, la différence est minime, mais en calcul scientifique de haute précision, LNGAMMA.PRECIS est préférable.

Ressources

Pour aller plus loin

Continue sur ta lancée après la fonction LNGAMMA.PRECIS : la leçon associée, un modèle prêt à l'emploi et le guide pour progresser.

Tout voir