2017-06-19 309 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.

的每个元素