我正在尝试评估以下积分:
我可以找到以下多项式的区域,如下所示:
pn =
-0.0250 0.0667 0.2500 -0.6000 0
首先使用辛普森规则积分
fn=@(x) exp(polyval(pn,x));
area=quad(fn,-10,10);
fprintf('area evaluated by Simpsons rule : %f \n',area)
结果是area evaluated by Simpsons rule : 11.483072
Then 使用以下代码使用 gamma 函数评估上述公式中的总和
a=pn(1);b=pn(2);c=pn(3);d=pn(4);f=pn(5);
area=0;
result=0;
for n=0:40;
for m=0:40;
for p=0:40;
if(rem(n+p,2)==0)
result=result+ (b^n * c^m * d^p) / ( factorial(n)*factorial(m)*factorial(p) ) *...
gamma( (3*n+2*m+p+1)/4 ) / (-a)^( (3*n+2*m+p+1)/4 );
end
end
end
end
result=result*1/2*exp(f)
这将返回 11.4831。quad
该函数的结果或多或少相同。现在我的问题是我是否有可能摆脱这个嵌套循环,因为我将构建累积分布函数,以便我可以使用逆 CDF 变换从这个分布中获取样本。(为了构建 cdf,我将使用gammainc
不完整的 gamma 函数而不是gamma
)
我需要从可能具有不同多项式系数的密度中进行采样,并且速度是我关心的问题。我已经可以使用蒙特卡洛方法从这样的密度中采样,但我想看看我是否可以使用密度中的精确采样来加快速度。非常感谢您提前。