Maison  >  Article  >  développement back-end  >  Programme C++ pour calculer le log gamma d'un nombre donné

Programme C++ pour calculer le log gamma d'un nombre donné

WBOY
WBOYavant
2023-08-25 15:13:061736parcourir

Programme C++ pour calculer le log gamma dun 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++.

Utilisez la fonction lgamma() pour enregistrer Gamma

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 -

Grammaire

#include < cmath >
lgamma( <number> )

Algorithme

  • Lisez le numéro x
  • res := gamma logarithmique utilisant lgamma( x )
  • Retour des résultats

Exemple

#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;
}

Sortie

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

Utilisez les fonctions gamma() et log()

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.

Algorithme

  • Lisez le numéro x
  • g := Utilisez tgamma( x ) pour calculer gamma
  • res := gamma logarithmique utilisant log( g )
  • Retour des résultats

Exemple

#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;
}

Sortie

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

Utilisez les fonctions Factorial() et log()

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.

Algorithme

  • 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

Exemple

#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;
}

Sortie

Logarithm Gamma for x = 10 is: 12.8018
Logarithm Gamma for 15! which is x = 16 is: 27.8993
Segmentation fault (core dumped)

Conclusion

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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer