winner245 发表于 2014-6-24 01:32:47

一个指数函数的积分

如何计算下列积分:\\dif x \]
其中, \(\epsilon > 0, \beta > 0\) 为常数

如果能得到解析解当然是最完美的解法,但上述积分很可能不存在解析解(个人猜测)。故退而求其次,欲寻找一个收敛速度很快的级数展开式。对于任意一组给定的 \(\epsilon,\beta\) 参数值,只需计算有限项级数和即可获得很高的精度。然而,级数展开的主要难点在于保障收敛速度对于任意参数值\(\epsilon>0,\beta>0\) 都必须很快

不知道大家有何高见?还望赐教!





winner245 发表于 2014-6-24 05:00:03

下面先给出我个人的一个级数展开式(见 (8) 或 (9) 式),该式子在 \(0<\beta<1\)时有很高的收敛速度。缺点是,当 \( \beta>1\) 时,收敛速度不够快。

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

根据级数展开:
\begin{align}
\exp\left(-\frac{\beta}{1+\epsilon x}\right)=\sum_{n=0}^\infty\frac{(-1)^n}{n!}\frac{\beta^n}{(1+\epsilon x)^n}
\end{align}
当\(0<\beta<1\) 时有:
\begin{align}
0<\frac{\beta}{(1+\epsilon x)}<1
\end{align}
后项 (第 n 项) 与前项(第 n-1 项)的比值为:
\begin{align}
\frac{\beta}{n(1+\epsilon x)}\to 0
\end{align}
故级数展开式 (1) 式在\(0<\beta<1\)有很高的收敛速度。于是,将 (1) 式代入原积分得到:
\begin{align}
I(\epsilon,\beta)&=\int_0^\infty\frac{1}{1+\epsilon x}\exp\left(-\frac{\beta}{1+\epsilon x}\right)\exp(-x)\dif x\\
&=\int_0^\infty \sum_{n=0}^\infty \frac{(-1)^n}{n!}\frac{\beta^n}{(1+\epsilon x)^{n+1}} \mathrm{e}^{-x}\dif x\\
&=\sum_{n=0}^\infty \frac{(-1)^n\beta^n}{n!}\int_0^\infty \frac{1}{(1+\epsilon x)^{n+1}} \mathrm{e}^{-x}\dif x\\
&=\frac{\mathrm{e}^{\frac{1}{\epsilon}}}{\epsilon}\sum_{n=0}^\infty \frac{(-1)^n\beta^n}{n!} \int_1^\infty\frac{1}{t^{n+1}}\mathrm{e}^{-\frac{t}{\epsilon}}\dif t~~~~~~\text{(变量替换 $t=1+\epsilon x $)} \\
&=\frac{\mathrm{e}^{\frac{1}{\epsilon}}}{\epsilon}\sum_{n=0}^\infty \frac{(-1)^n\beta^n}{n!} \mathrm{E}_{n+1}\left(\frac{1}{\epsilon}\right)\\
&=\frac{\mathrm{e}^{\frac{1}{\epsilon}}}{\epsilon}\sum_{n=0}^\infty \frac{(-1)^n\beta^n}{n!\epsilon^n} \Gamma\left(-n,\frac{1}{\epsilon}\right)
\end{align}
其中,(9) 式的根据是\(\mathrm{E}_n(x)=x^{n-1}\Gamma(1-n,x)\),这里, \(\mathrm{E}_n(x)=\int_1^\infty\frac{\mathrm{e}^{-xt}}{t^n}\dif t\) 表示 \(n\) 阶指数积分函数 (参考:http://en.wikipedia.org/wiki/Exponential_integral ), $\Gamma(\cdot,\cdot)$ 是 incomplete gamma function (参考:http://en.wikipedia.org/wiki/Incomplete_gamma_function)

可以看出 (8) 式在\(0<\beta<1\)时的收敛速度是很快的,因为级数展开项里,后项 (第 n 项) 与前项(第 n-1 项)的比值为:
\

(注:当 \(x>0,n>0\) 时 \(\mathrm{E}_n(x)\) 是关于 \(n\) 的减函数)

---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

后续存在的问题:(8) 或者 (9) 式虽然都是收敛级数,但其收敛速度仅在 \(0<\beta<1\) 才很快。而当 \(\beta > 1\) 时,级数展开式大约在第 \(n>\beta\) 项后是递减的,意味着当 \(\beta\) 很大时需要计算很多项才能达到较高的精度。所以,接下来希望解决的问题是如何找到一个级数在\(\beta > 1\)时有很快的收敛速度

wayne 发表于 2014-6-26 06:49:01

根据 http://mathworld.wolfram.com/En-Function.html 里的公式11),12),
或许我们可以得到一个关于 \( I(\epsilon,\beta) \)的微分方程,或者是 递推方程,朝这个方向 走几步看看。

其实得到 8),9)在数值计算的角度来看,已经基本解决问题了。
如果要提升部分区间的计算速度,渠道有很多的,不一定非要得到一个笼而统之的收敛很快的公式吧。
比如这里面的En是可以采用DP的思路计算的 等等。

===============================

winner245 发表于 2014-6-26 09:29:13

wayne 发表于 2014-6-26 06:49
根据 http://mathworld.wolfram.com/En-Function.html 里的公式11),12),
或许我们可以得到一个关于 \( ...

多谢您的建议!终于有人帮忙了!
我看过wolfram那个公式,通过(12)式的迭代关系,可以将 \(\mathrm{E}_n(x)\) 表示成\(\mathrm{E}_1(x)\) 加上有限项的和,也就是那个页面的(13)式。这样,我的(8)式里确实可以得到一个只含\(\mathrm{E}_1(x)\) 和一个有限项的和的表达式。不过这个表达式的收敛速度并没有改变。

另外,你说到得到一个微分方程的建议。wolfram页面里的(11)式确实给出了\(\mathrm{E}_n^\prime(x)=-\mathrm{E}_n(x)\)的微分关系,不过,这个微分是对n微分。而回到我的级数里,我的函数是关于\(\epsilon,\beta\)的函数,也就是说,表达式里并没有n。不清楚该如何得到微分方程

请问您最后提到的“DP的思路”是什么意思?我这里最主要的目的是用减少计算量来达到较高的数值精度,所以,我就一直在找快速收敛的级数展开式。
页: [1]
查看完整版本: 一个指数函数的积分