如何高速计算这个积分# Computation - 科学计算m*n2003-06-14 07:061 楼Integrate[Exp[-a^2*x^2]*Sin[x]^2/(x-n Pi)/(x-m Pi), {x,-Infinity,Infinity}]m,n是整数。a= 10^(-4)-10^(-3)
h*o2003-06-14 07:062 楼有个想法,有待验证。把Sin[x]^2/(x-n Pi)/(x-m Pi)在x=0泰勒展开成Sigma[a_k*x^k]k 是奇数的项不用管(奇函数,-Infinity to Infinity integration = 0)k 是偶数的项和Exp[-a^2*x^2]相乘积分可以表达为gamma函数(Gamma[p+1/2]的形式)。××××如果这个积分序列是收敛的,就可以用这种方法快速的算这个积分的数值解。××××幸好这是数值计算,不需要严格证明,所以验证还是不难的。至于泰勒展开,可以用mathematica。【在 m****n 的大作中提到】: Integrate[Exp[-a^2*x^2]*Sin[x]^2/(x-n Pi)/(x-m Pi), {x,-Infinity,Infinity}]: m,n是整数。: a= 10^(-4)-10^(-3)
m*n2003-06-14 07:063 楼这样处理,本积分(a= 10^(-4)-10^(-3)) 收敛太慢了。如果a>>1,可以这么处理。{x,-Infinity,Infinity}]【在 h***o 的大作中提到】: 有个想法,有待验证。: 把Sin[x]^2/(x-n Pi)/(x-m Pi)在x=0泰勒展开成Sigma[a_k*x^k]: k 是奇数的项不用管(奇函数,-Infinity to Infinity integration = 0): k 是偶数的项和Exp[-a^2*x^2]相乘积分可以表达为gamma函数(Gamma[p+1/2]: 的形式)。: ××××如果这个积分序列是收敛的,就可以用这种方法快速的算这个积分: 的数值解。××××: 幸好这是数值计算,不需要严格证明,所以验证还是不难的。: 至于泰勒展开,可以用mathematica。
m*n2003-06-14 07:064 楼This one gives the conditions for the method by hanzo, thus it should bemarked.【在 m****n 的大作中提到】: 这样处理,本积分(a= 10^(-4)-10^(-3)) 收敛太慢了。: 如果a>>1,可以这么处理。: : : {x,-Infinity,Infinity}]
c*e2003-06-14 07:065 楼这个为什么是奇函数呢?看不懂,呵呵【在 h***o 的大作中提到】: 有个想法,有待验证。: 把Sin[x]^2/(x-n Pi)/(x-m Pi)在x=0泰勒展开成Sigma[a_k*x^k]: k 是奇数的项不用管(奇函数,-Infinity to Infinity integration = 0): k 是偶数的项和Exp[-a^2*x^2]相乘积分可以表达为gamma函数(Gamma[p+1/2]: 的形式)。: ××××如果这个积分序列是收敛的,就可以用这种方法快速的算这个积分: 的数值解。××××: 幸好这是数值计算,不需要严格证明,所以验证还是不难的。: 至于泰勒展开,可以用mathematica。
h*o2003-06-14 07:066 楼首先,还是那句话,我没实际做,只是凭空想的,可能想的和实际上的差别很大。有个问题是,你这里的收敛慢是指每个gamma函数积出来的时候都会除以一个a^k, 而a很小,所以最后连加的每项都很大,所以趋进于0很慢,是吗?我是在想,也许泰勒展开项的符号是正负交错的,如果把几项合并,也许可以正负抵消一些,导致他们的和会比较快的趋近于0。这仍然是我的一个空想,现实往往不会这么完美。这个问题我估摸着很象解ODE里面的stiff问题,你可以查一查这个方面的东东。如果实在不行了,不妨试试我这个方法,毕竟是一些四则混合运算,比普通的硬积还是要快些的吧。【在 m****n 的大作中提到】: 这样处理,本积分(a= 10^(-4)-10^(-3)) 收敛太慢了。: 如果a>>1,可以这么处理。: : : {x,-Infinity,Infinity}]
m*n2003-06-14 07:068 楼对于本积分,这样处理有两个问题1。Gamma函数值很大,这样计算累计误差很大。2。收敛慢,是由于三角函数的Taylor展开对大综量慢收敛。对于本积分,由于a很小,导致积分区间很大,所以,级数展开效率不开。如果a远大于1,有效积分区间[-1,1],三角展开收敛较快,但是实际计算时,仍然要使用计算正负交错级数的Euler公式。这个积分可以转化到[0,Pi]区间计算,工作量大一些,但是我现在不考虑它了,反正累得是计算机。【在 h***o 的大作中提到】: 首先,还是那句话,我没实际做,只是凭空想的,可能想的和实际上的差别很大。: 有个问题是,你这里的收敛慢是指每个gamma函数积出来的时候都会除以一个: a^k, 而a很小,所以最后连加的每项都很大,所以趋进于0很慢,是吗?: 我是在想,也许泰勒展开项的符号是正负交错的,如果把几项合并,也许: 可以正负抵消一些,导致他们的和会比较快的趋近于0。: 这仍然是我的一个空想,现实往往不会这么完美。这个问题我估摸着很象解ODE: 里面的stiff问题,你可以查一查这个方面的东东。如果实在不行了,不妨试试: 我这个方法,毕竟是一些四则混合运算,比普通的硬积还是要快些的吧。