Maison >développement back-end >C++ >Programme C++ pour calculer le log gamma d'un nombre donné
La fonction gamma est décrite comme le développement de la factorielle de chaque nombre donné mathématiques. D’un autre côté, la factorielle ne peut être définie que pour des nombres réels, donc La fonction gamma va au-delà de la division informatique Entier négatif. Il est représenté par -
$$mathrm{Gamma gauche ( x droite )=gauche ( x-1 droite ) !}$$
La fonction gamma croît rapidement pour des valeurs plus élevées, appliquez donc un logarithme ; Gamma le ralentira considérablement. Le logarithme naturel gamma d'un nombre particulier est Un autre nom pour cela.
Dans cet article, nous apprendrons comment calculer le logarithme d'une fonction gamma donnée Entrez le nombre x en C++.
La bibliothèque cmath C++ a une fonction lgamma(), qui accepte le paramètre x puis exécute gamma(x) et appliquez le logarithme népérien à la valeur. La syntaxe pour utiliser lgamma() est Comme indiqué ci-dessous -
#include < cmath > lgamma( <number> )
#include <iostream> #include <cmath> using namespace std; float solve( float x ){ float answer; answer = lgamma( x ); return answer; } int main(){ cout << "Logarithm Gamma for x = 10 is: " << solve( 10 ) << endl; cout << "Logarithm Gamma for 15! which is x = 16 is: " << solve( 16 ) << endl; cout << "Logarithm Gamma for x = -1.2 is: " << solve( -1.2 ) << endl; cout << "Logarithm Gamma for x = 3.1415 is: " << solve( 3.1415 ) << endl; }
Logarithm Gamma for x = 10 is: 12.8018 Logarithm Gamma for 15! which is x = 16 is: 27.8993 Logarithm Gamma for x = -1.2 is: 1.57918 Logarithm Gamma for x = 3.1415 is: 0.827604
C++ fournit également la méthode tgamma() pour les fonctions gamma et log(). nous pouvons utiliser Ils viennent formuler lgamma(). Regardons l'algorithme pour avoir une idée claire.
#include <iostream> #include <cmath> using namespace std; float solve( float x ){ float answer; float g = tgamma( x ); answer = log( g ); return answer; } int main(){ cout << "Logarithm Gamma for x = 10 is: " << solve( 10 ) << endl; cout << "Logarithm Gamma for 15! which is x = 16 is: " << solve( 16 ) << endl; cout << "Logarithm Gamma for x = -1.2 is: " << solve( -1.2 ) << endl; cout << "Logarithm Gamma for x = 3.1415 is: " << solve( 3.1415 ) << endl; }
Logarithm Gamma for x = 10 is: 12.8018 Logarithm Gamma for 15! which is x = 16 is: 27.8993 Logarithm Gamma for x = -1.2 is: 1.57918 Logarithm Gamma for x = 3.1415 is: 0.827604
Dans l'exemple précédent, nous avons vu l'utilisation des méthodes tgamma() et log(). nous pouvons Définissez notre fonction factorial(), mais n'acceptez que les nombres positifs. voyons algorithme pour une meilleure compréhension.
Définissez la fonction factorielle, qui nécessite n
Si n vaut 1, alors
Retour n
Sinon
Retour n * factoriel ( n - 1 )
Fin si
Dans la méthode principale, utilisez le nombre x pour trouver le log gamma de x
g := factorielle (x - 1)
res := Utilisez log( g ) pour trouver le logarithme népérien de g
Retour des résultats
#include <iostream> #include <cmath> using namespace std; long fact( int n ){ if( n == 1 ) { return n; } else { return n * fact( n - 1); } } float solve( float x ){ float answer; float g = fact( x - 1 ); answer = log( g ); return answer; } int main(){ cout << "Logarithm Gamma for x = 10 is: " << solve( 10 ) << endl; cout << "Logarithm Gamma for 15! which is x = 16 is: " << solve( 16 ) << endl; cout << "Logarithm Gamma for x = -1.2 is: " << solve( -1.2 ) << endl; }
Logarithm Gamma for x = 10 is: 12.8018 Logarithm Gamma for 15! which is x = 16 is: 27.8993 Segmentation fault (core dumped)
La méthode gamma est parfois appelée une extension de la méthode factorielle. Étant donné que la méthode gamma ou factorielle croît si rapidement, nous pouvons utiliser des logarithmes pour cela. dans ce Dans l'article nous avons vu quelques techniques pour effectuer un log gamma sur un nombre donné X. Dans un premier temps, nous utilisons la fonction par défaut, lgamma() de la bibliothèque cmath en C++. La deuxième méthode consiste à utiliser tgamma() et log() et enfin à définir notre méthode factorielle. Cependant, la méthode finale se limite aux nombres positifs. ça ne marche pas avec des nombres négatifs nombre. Et cela ne fonctionne bien qu'avec des nombres entiers.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!