在 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 正是我想要的。 :)
我通过调用 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 的向量化函数,用于参数向量
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 正是我想要的。 :)