我通过调用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),这是我正在使用的超几何函数的版本。稍微适应他的代码,允许元素乘法,返回我想要的。 :)
答案 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),这是我正在使用的超几何函数的版本。稍微适应他的代码,允许元素乘法,返回我想要的。 :)