私は次の積分を評価しようとしています:
次の多項式の面積は次のように見つけることができます。
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
次のようになります。次のコードは、ガンマ関数を使用して上記の式の合計を評価します。
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変換を使用してこの分布からサンプルを取得できるようにするため、このネストされたループを取り除くことができるかどうかです。(累積分布関数を作成するためにgammainc
、代わりに不完全ガンマ関数を使用しますgamma
)
多項式係数が異なる可能性のある密度からサンプリングする必要があり、速度が問題になります。私はすでにモンテカルロ法を使用してそのような密度からサンプリングすることができますが、スピードアップするために密度からの正確なサンプリングを使用できるかどうかを確認したいと思います。事前にどうもありがとうございました。