伽瑪函數被描述為每個給定數字的階乘的擴展 數學。另一方面,階乘只能為實數定義,因此 gamma 函數超出了計算除 負整數。它由 -
表示$$\mathrm{\Gamma \left ( x \right )=\left ( x-1 \right )!}$$
伽瑪函數對於更高的值會快速增長;因此,對數應用對數 伽瑪會大大減慢它的速度。特定數字的自然對數 gamma 為 它的另一個名字。
在本文中,我們將了解如何計算給定的伽瑪函數的對數 在C 中輸入數字x。
C cmath 函式庫有一個 lgamma() 函數,它接受參數 x,然後執行 gamma(x) 並對該值套用自然對數。使用 lgamma() 的語法是 如下圖 -
#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 也為 gamma 和 log() 函數提供了 tgamma() 方法。我們可以用 他們來製定 lgamma()。讓我們看看演算法以獲得清晰的想法。
#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
在上一個範例中,我們看到了 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中文網其他相關文章!