首頁 >後端開發 >C++ >C++程式用於計算給定數字的對數伽瑪

C++程式用於計算給定數字的對數伽瑪

WBOY
WBOY轉載
2023-08-25 15:13:061756瀏覽

C++程式用於計算給定數字的對數伽瑪

伽瑪函數被描述為每個給定數字的階乘的擴展 數學。另一方面,階乘只能為實數定義,因此 gamma 函數超出了計算除 負整數。它由 -

表示

$$\mathrm{\Gamma \left ( x \right )=\left ( x-1 \right )!}$$

伽瑪函數對於更高的值會快速增長;因此,對數應用對數 伽瑪會大大減慢它的速度。特定數字的自然對數 gamma 為 它的另一個名字。

在本文中,我們將了解如何計算給定的伽瑪函數的對數 在C 中輸入數字x。

使用 lgamma() 函數對數 Gamma

C cmath 函式庫有一個 lgamma() 函數,它接受參數 x,然後執行 gamma(x) 並對該值套用自然對數。使用 lgamma() 的語法是 如下圖 -

文法

#include < cmath >
lgamma( <number> )

演算法

  • 讀取數字 x
  • res := 使用 lgamma( x ) 的對數 gamma
  • #回傳結果

範例

#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

使用 gamma() 和 log() 函數

C 也為 gamma 和 log() 函數提供了 tgamma() 方法。我們可以用 他們來製定 lgamma()。讓我們看看演算法以獲得清晰的想法。

演算法

  • 讀取數字 x
  • g := 使用 tgamma( x ) 計算 gamma
  • res := 使用 log( g ) 的對數 gamma
  • 回傳結果

範例

#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

使用 Factorial() 和 log() 函數

在上一個範例中,我們看到了 tgamma() 和 log() 方法的使用。我們可以 定義我們的階乘()函數,但這只接受正數。讓我們看看 算法以便更好地理解。

演算法

  • 定義階乘函數,需要 n

  • 如果 n 為 1,則

    • 返回n

  • #否則

    • 傳回 n * 階乘 ( n - 1 )

  • ##結束如果

  • 在 main 方法中,用數字 x 求 x 的 log gamma

  • #g := 階乘( x - 1)

  • #res := 用 log( g ) 求 g 的自然對數

  • #傳回結果

範例

#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)

結論

伽瑪方法有時被稱為階乘方法的擴展。 由於伽瑪或階乘方法增長得如此之快,我們可以對其使用對數。在這個 文章中,我們看到了一些對給定數字執行對數伽瑪的技術 X。最初,我們使用預設函數,即 cmath 庫中 C 中的 lgamma()。 第二種方法是使用 tgamma() 和 log(),最後定義我們的階乘方法。 然而,最終方法僅限於正數。它不適用於負數 數字。而且它只對整數表現良好。

以上是C++程式用於計算給定數字的對數伽瑪的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除