数值积分

时间:2011-10-05 19:43:37

标签: numerical-integration

一般来说,当你在数字上进行评估和积分时,比如在MATLAB中,我只是选择一个大数字作为边界,还是有办法告诉MATLAB“采取限制?”

我假设您只使用大数字,因为不同的机器可以处理不同数量的数字。

我只是想知道他们是否是一种改进我的代码的方法。我通过蒙特卡罗进行了大量的期望值计算,并且经常使用梯形方法检查我自己的自由度是否足够小。

2 个答案:

答案 0 :(得分:2)

严格地说,不可能将数值积分评估为无穷大。在大多数情况下,如果所讨论的积分是有限的,则可以简单地在相当大的范围内进行积分。为了收敛到一个稳定的值,正常误差的积分必须小于10 sigma - 无论好坏,这个值是相等,因为你要评估相同的一直到无限的整体。

答案 1 :(得分:1)

这在很大程度上取决于您要集成的功能类型。如果它是“平滑的”(没有跳跃 - 最好也不是任何衍生物,但是逐渐变得不那么重要)并且有限,那么你有两个主要选择(限制自己采用最简单的方法): 1.如果它是周期性的,这里的意思是:你可以将左右两端放在一起,并且也没有值的跳跃(和衍生物......):在间隔上均匀分布你的点,然后只取样函数值得到估计的平均值,然后乘以间隔的长度来得到你的积分。 2.如果不是周期性的:使用Legendre-integration。

蒙特卡罗几乎总是一种糟糕的方法:它朝着(机器)精度进展非常缓慢:对于任何额外的有效数字,你需要应用100倍以上的分数! 上面的两种方法,对于周期性和非周期性的“漂亮”(平滑等)函数,只需很少的采样点即可得到公平的结果,然后以非常快的速度向更精确的方向发展:2个点中的1个通常会增加几个数字你的精确度!当你想要使用更多的样本点来应用下一个努力时,这远远超过你必须丢弃前一个结果的所有部分的负担:你用一个全新的替换前一组点,而在蒙特卡罗你可以只需简单地将点添加到现有集合中,然后细化结果。