私は、MATLABを使用してかなり醜い積分を計算しようとしています。私が問題を抱えているのは、非常に大きな数字(> 10^300)に非常に小さな数字(< 10^-300)を乗算する部分です。 MATLABは、0〜0.0005の範囲内でなければならないのに、このために 'inf'を返します。これは私が持っているものである 多数の小さな数値での乗算
besselFunction = @(u)besseli(qb,2*sqrt(lambda*(theta + mu)).*u);
exponentFuncion = @(u)exp(-u.*(lambda + theta + mu));
QB = 5は、ラムダ= 12、シータ= 10、ムー= 3そして、私が見つけたいが、Uのすべての実数値に対して
besselFunction(u)*exponentFunction(u)
ある
。問題は、u> 28のときはいつでも 'inf'として評価されるということです。私は聞いたことがあり、MATLAB関数 'vpa'を使用しようとしましたが、関数を使用したいときにはうまく動作しないようです...この時点で、どんなヒントもありがとうございます!
これは実際にそれを行う最もスマートな方法です!ありがとう!私の必要性のために、より大きい数字を扱うことができる象徴的なエンジンを使用するのに十分であった。これは私のやり方です: besselFunction = @(u)besseli(qb、2 * sqrt(lambda *(theta + mu))。* sym(u)); exponentFuncion = @(u)exp(-sym(u)。*(lambda + theta + mu)); Then besselFunction(u)* exponentFunction(u) は記号値を返します。倍精度表現が必要な場合はdouble()を使用できます。 – Groot