2

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

我的超几何函数

我使用 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。

4

1 回答 1

0

我看不到您的代码中哪里有 Gamma 函数。您是否忘记了它们,或者您期望的价值是否已经弥补了它们的缺失?

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

编辑:还有一件事,根据这个函数的 Matlab 帮助页面,使用它可能会更好quadgk。请参阅以下引用(靠近页面底部):

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

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

于 2012-08-04T15:35:44.703 回答