使用Matlab中的向量评估超几何函数

时间:2017-06-19 14:48:35

标签: matlab function vector vectorization evaluate

我通过调用hypergeom(a,b,z)在Matlab中使用广义超几何函数。

此函数产生a = 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,以便获得与输入向量长度相同的输出向量长度?

修改 在这个特定的计算中,我正在评估所谓的汇合超几何函数(Kummer微分方程的解,参见:https://en.wikipedia.org/wiki/Confluent_hypergeometric_function)。这是1F1功能。这意味着长度(N)= 1且长度(D)= 1。

标准的内置函数hypergeom是广义超几何函数,它不允许以我想要的方式计算超标(1:2,2,5)。

Patrick Mousaw上传了他的Matlab代码,用于汇合超几何函数(https://nl.mathworks.com/matlabcentral/fileexchange/29766-confluent-hypergeometric-function),这是我正在使用的超几何函数的版本。稍微适应他的代码,允许元素乘法,返回我想要的。 :)

2 个答案:

答案 0 :(得分: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和D的广义超几何函数,使得长度(N)= 5且长度(D)= 2(即 <子>    )在矢量上 <子>    ,你将调用hypergeom(N,D,Z),你应该得到M个元素的输出向量,每个元素对应一个Z元素。

答案 1 :(得分:0)

在这个特定的计算中,我正在评估所谓的汇合超几何函数(Kummer微分方程的解,参见:https://en.wikipedia.org/wiki/Confluent_hypergeometric_function)。这是1F1功能。这意味着长度(N)= 1且长度(D)= 1。

标准的内置函数hypergeom是广义超几何函数,它不允许以我想要的方式计算超标(1:2,2,5)。

Patrick Mousaw上传了他的Matlab代码,用于汇合超几何函数(https://nl.mathworks.com/matlabcentral/fileexchange/29766-confluent-hypergeometric-function),这是我正在使用的超几何函数的版本。稍微适应他的代码,允许元素乘法,返回我想要的。 :)