在Matlab中用向量求超几何函数

在Matlab中用向量求超几何函数,matlab,function,vector,vectorization,evaluate,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 现在,我想计算a值向量上的超几何。因此,如果我输入hypergeom(1:2,2,5),我希望输出: [29.4826318205153, 148.413159102577] 但是,当我在Matlab中

我通过调用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
现在,我想计算a值向量上的超几何。因此,如果我输入hypergeom(1:2,2,5),我希望输出:

[29.4826318205153, 148.413159102577]
但是,当我在Matlab中输入该值时,我得到:

>>hypergeom(1:2,2,5)
-0.25
因此,对于a的输入值向量,返回一个值。如何在Matlab中正确调用hypergeom,以便获得与a的输入向量长度相同的输出向量长度

编辑: 在这个特定的计算中,我正在评估所谓的汇合超几何函数(Kummer微分方程的解,请参见:)。这是1F1函数。这意味着长度(N)=1,长度(D)=1

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


Patrick Mousaw上传了汇合超几何函数()的Matlab代码,这是我正在使用的超几何函数的版本。对他的代码稍加修改,允许元素乘法,返回的正是我想要的结果。:)

我对广义超几何函数并不完全熟悉,但在我看来,函数的参数是另一种形式,即什么是“参数”(在数学意义上)什么是“输入”。从文件中:

超几何(N,D,Z)是广义超几何函数F(N,D,Z), 也称为巴恩斯扩展超几何函数,表示为 其中j=长度(N),k=长度(D)。对于标量a、b和c, 超几何([a,b],c,z)是高斯超几何函数2F1(a,b;c;z)

从维基百科上,我看到的公式是:

据我所知,这个函数是数组Z的向量化函数,对于参数向量 和 . 即,评估适当参数向量N和D的广义超几何函数,使得长度(N)=5,长度(D)=2(即。 )在向量上
,你将调用超几何(N,D,Z),你应该得到M个元素的输出向量,Z的每个元素一个。

在这个特定的计算中,我正在评估所谓的汇合超几何函数(Kummer微分方程的解,见:)。这是1F1函数。这意味着长度(N)=1,长度(D)=1

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


Patrick Mousaw上传了汇合超几何函数()的Matlab代码,这是我正在使用的超几何函数的版本。对他的代码稍加修改,允许元素乘法,返回的正是我想要的结果。:)

hypergeom
仅对第三个参数进行矢量化。要使用第一个参数的多个值,必须使用循环