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

Evaluating hypergeometric function with a vector in 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

现在,我想计算一个值向量上的超几何。所以如果我输入 hypergeom(1:2,2,5) 我会期望输出:

[29.4826318205153, 148.413159102577]

然而,当我在 Matlab 中输入这个时,我得到:

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

因此对于 a 的输入值向量,返回单个值。如何在 Matlab 中正确调用 hypergeom,以便获得与 a 的输入向量长度相同的输出向量长度?

编辑: 在这个具体的计算中,我正在评估所谓的 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),这是我正在使用的超几何函数的版本。对他的代码稍作调整,允许按元素乘法,returns 正是我想要的。 :)

我并不完全熟悉广义超几何函数,但在我看来你有相反的函数参数,就什么是 'parameter'(在数学意义上)和什么是 'input'。来自文档:

HYPERGEOM(N, D, Z) is the generalized hypergeometric function F(N, D, Z), also known as the Barnes extended hypergeometric function and denoted by jFk where j = length(N) and k = length(D). For scalar a, b and c, HYPERGEOM([a,b],c,z) is the Gauss hypergeometric function 2F1(a,b;c;z).

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

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

在这个具体的计算中,我评估了所谓的 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),这是我正在使用的超几何函数的版本。对他的代码稍作调整,允许按元素乘法,returns 正是我想要的。 :)