【问题标题】:Calculate hypergeometric function计算超几何函数
【发布时间】:2012-08-04 10:44:08
【问题描述】:

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

我使用 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的积分的真值。

【问题讨论】:

    标签: matlab integral


    【解决方案1】:

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

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

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

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

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

    【讨论】:

    • 是的,我去掉了伽玛函数系数,我只是说主积分。我以级数形式展开积分,得到的值为16.0675,54.9085太大了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-05-21
    • 2017-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多