计算两个函数的重叠区域

时间:2015-12-30 06:46:52

标签: c++ numerical-methods calculus

我有两个功能。我只给出了基本结构,因为它们有相当多的参数来调整它们的确切形状。

例如,y = sin(.1*pi*x)^2y = e^-(x-5)^2

问题是e函数捕获了多少正弦区域:

3 个答案:

答案 0 :(得分:2)

我试图聪明并递归地找到交叉点,但事实证明这比必要的要多得多。

作为n.m. pointed out,您需要从ab的{​​{1}}的积分。由于您通过近似进行积分,因此您已经逐步完成了间隔,这意味着您可以在每个步骤检查哪个函数更大并计算当前梯形的面积。

在C 中的简单实现:

min(f, g)

答案 1 :(得分:1)

如果您正在寻找真的,非常简单的事情,为什么不做Monte Carlo Integration

使用这些功能很容易计算以抽取大量点数。对于每个点,检查它是否在曲线的0,1或2之下。

您可能需要一些小小的工具来查找采样的边界,但此方法适用于各种曲线。

https://en.wikipedia.org/wiki/Monte_Carlo_integration

答案 2 :(得分:0)

我猜你的指数实际上是e ^ - (x-5)^ 2的形式,所以指数在正/负无穷大处衰减为零。

鉴于此,您的积分将通过名为Gaussian quadrature的东西最快速准确地计算出来。存在一些类型的公共积分,其具有使用不同多项式的非常简单的解(Hermite,Legendre等)。您的具体看起来可以使用Gauss-Hermite quadrature来解决。

希望这有帮助。