假设我有一个以 (-) 无穷大为界的一个(或两个)末端的积分。AFAICT,我无法分析解决这个问题,它需要蛮力(例如使用左黎曼和)。我无法概括该算法,以便它设置适当的细分;我要么做太多的工作来计算一些微不足道的东西,要么做得不够,并且有巨大的混叠错误。
用任何语言回答都很酷,但也许有更好的 google-fu 的人可以很快结束这个。:)
我正在寻找的东西和试图测量英国海岸线一样不可能吗?
假设我有一个以 (-) 无穷大为界的一个(或两个)末端的积分。AFAICT,我无法分析解决这个问题,它需要蛮力(例如使用左黎曼和)。我无法概括该算法,以便它设置适当的细分;我要么做太多的工作来计算一些微不足道的东西,要么做得不够,并且有巨大的混叠错误。
用任何语言回答都很酷,但也许有更好的 google-fu 的人可以很快结束这个。:)
我正在寻找的东西和试图测量英国海岸线一样不可能吗?
有几种方法可以继续,其中大多数涉及尝试了解被积函数的行为。通常,有一个转换 x -> z(x) 具有有限的 z(infinity),因此您可以将无界积分转换为有界积分。
此外,通常情况下,您可以分析被积函数在 x 变为 + 和 - 无穷大时的“渐近”行为,因此您至少可以大致计算出 x>x+ 和 x< x- 的贡献,然后只需在 x- 和 x+ 之间做定积分。
有很多关于数值积分的好书。在物理科学中经常使用的一种是数字食谱。(虽然你应该很少直接使用代码!)
使用变量的变化。例如,x -> 1/x 并注意 f(x) dx 从 a 到 b 的积分等于 (1/x^2)f(1/x) 从 1/b 到 1/a 的积分) dx。另一个方便的是变量 x -> -log(x) 的变化,其中 f(x) dx 从 a 到无穷大的积分等于 f(-log( x))/x dx。
各种开源软件包都包含执行此类操作的例程。其他人将不得不推荐一个,因为当数学函数的开源不存在时,我编写了自己的。
C 书中的数字食谱可在线获得http://www.nrbook.com/a/bookcpdf.php 您也许可以从中拼凑出一些东西。您感兴趣的章节是第 4 章。请注意,数组索引是基于 1 而不是 0。一些算法可以改进,但我不会在这里讨论。
如果您正在寻找一个详尽的解决方案,您可能需要某种符号数学包。原因:
- 如果您确实在寻找不定积分的解决方案(根本没有边界,而不仅仅是有限的),那么除了做查找表或符号算法的数字等效项(比如知道x^n dx 的积分是 x^(n+1) / (n+1),加上一个不依赖于 x 的任意表达式。