计算超几何函数

时间:2012-08-04 10:44:08

标签: matlab integral

我需要计算由积分公式给出的两个变量的简并超几何函数:

my hypergeometric function

我使用Matlab进行数值积分:

l =  0.067;
h =  0.933;
n = 1.067;
o = 0.2942;
p = 0.633;
func_F=@(x)(x.^(l-1)).*((1-x).^(n-l-1)).*((1-x.*o).^(-h)).*exp(x.*p);
hyper= quadl(func_F,0,1,'AbsTol',1e-6); % i use 'AbsTol' to avoid warnings
disp(hyper);

我得到的结果是54.9085,我知道这个值是错的!所以请帮我计算上面积分的真值,奇点为0。

1 个答案:

答案 0 :(得分:0)

我没看到你的代码中有Gamma函数的位置。你有没有忘记它们,或者你所期望的价值是否已经弥补了它们的不足?

此外,也许你可以说明为什么“这个价值是错误的”。否则我们只是在猜测。

编辑:根据Matlab help page on this function,还有一件事情,使用quadgk可能会更好。请参阅以下引文(靠近页面底部):

  

quadgk函数将集成单数函数   如果奇点不是太强,则有限终点。例如,   它将集成在端点上运行的函数,如log | x-c |   或| x-c | p,p> = -1/2。如果函数在内部的点处是奇异的   (a,b),将积分写为子区间上的积分之和   将奇点作为端点,用quadgk计算它们,然后加上   结果。

底线是端点附近的奇点(当x接近0或1时)可能会导致一些问题。