2017-06-19 305 views
0

我在Matlab中調用hypergeom(a,b,z)使用廣義超幾何函數。用Matlab中的矢量評估超幾何函數

該函數產生用於α= 1和a = 2,B = 2和z = 5:

>>hypergeom(1,2,5) 
29.4826318205153 

>>hypergeom(2,2,5) 
148.413159102577 

現在,我想在一個值的向量來評估超幾何。所以,如果我進入hypergeom(1:2,2,5),我期望的輸出:

[29.4826318205153, 148.413159102577] 

然而,當我在Matlab中輸入驗證我得到:

>>hypergeom(1:2,2,5) 
-0.25 

因此單個值返回,爲a的輸入值的向量。如何在Matlab中正確調用hypergeom,以便獲得與輸入向量長度相同的輸出向量長度?

編輯: 在這個特定的計算,我估計所謂的超幾何函數(解決庫默爾的微分方程,請參閱:https://en.wikipedia.org/wiki/Confluent_hypergeometric_function)。這是1F1功能。這意味着長度(N)= 1且長度(D)= 1。

標準內置函數hypergeom是廣義超幾何函數,它不允許計算hypergeom(1:2,2,5 )以我想要的方式。

Patrick Mousaw上傳了他用於匯合超幾何函數的Matlab代碼(https://nl.mathworks.com/matlabcentral/fileexchange/29766-confluent-hypergeometric-function),這是我使用的超幾何函數的版本。稍微適應他的代碼,允許元素乘法,正是我想要的。 :)

+1

'hypergeom'只能通過第三個參數進行矢量化。要使用第一個參數的多個值,您必須使用循環 –

回答

0

在這個具體的計算我正在評估所謂的Confluent超幾何函數(解決Kummer的微分方程,請參閱:https://en.wikipedia.org/wiki/Confluent_hypergeometric_function)。這是1F1功能。這意味着長度(N)= 1且長度(D)= 1。

標準內置函數hypergeom是廣義超幾何函數,它不允許計算hypergeom(1:2,2,5 )以我想要的方式。

Patrick Mousaw上傳了他用於匯合超幾何函數的Matlab代碼(https://nl.mathworks.com/matlabcentral/fileexchange/29766-confluent-hypergeometric-function),這是我使用的超幾何函數的版本。稍微適應他的代碼,允許元素乘法,正是我想要的。 :)

0

我對廣義超幾何函數並不完全熟悉,但在我看來,對於什麼是「參數」(在數學意義上)以及什麼是函數參數是'輸入'。從文檔:

HYPERGEOM(N,d,Z)是廣義超幾何函數F(N,d,Z), 又稱巴恩斯擴展超幾何函數和由 JFK其中j =長度表示(N)和k =長度(D)。對於標量a,b和c, HYPERGEOM([a,b],c,z)是高斯超几几函數2F1(a,b; c; z)。

維基百科,我看到的計算公式爲:

                     

所以,據我瞭解,這個功能是向量化功能陣列Z的參數矢量 。即(N)= 5和長度(D)= 2(即,長度(N)= 2)來評估適當的參數矢量N和D的廣義超幾
何函數。 上的矢量 ),即可打電話hypergeom(N,D,Z),你應該得到M個元素的輸出矢量時,一個用於Z.

的每個元素