2

積分式で与えられる 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

コードのどこにガンマ関数があるかわかりません。それらを忘れましたか、それとも期待していた値がそれらの不足をすでに補っていますか?

また、「この値が間違っている」理由を説明できるかもしれません。そうでなければ、私たちはただ推測しています。

編集:もう1つ、この関数に関するMatlabのヘルプページによると、 を使用する方が良いかもしれませんquadgk。次の引用を参照してください (ページの下部近く)。

quadgk 関数は、特異点が強すぎない場合、有限の端点で特異な関数を統合します。たとえば、log|xc| のようにエンドポイント c で動作する関数を統合します。または |xc|p for p >= -1/2。関数が (a,b) 内の点で特異である場合、特異点を終点とする部分区間の積分の和として積分を書き、quadgk でそれらを計算し、結果を加算します。

要するに、エンドポイント付近の特異点 ( x0 または 1 に近づくと) が問題を引き起こす可能性があるということです。

于 2012-08-04T15:35:44.703 に答える