C++中的集成(数学)

Chr*_*son 7 c++ math calculus

我正在寻找一个库来找到C++(或C,但最好是C++)中给定的一组随机数据(而不是函数)的积分.还有一个问题关于C中的集成,但答案讨论了如何集成一个函数(我认为......).我知道这可以简单地通过计算从开始到结束的每对点之间的线段下面积来完成,但如果已经完成,我宁愿不重新发明轮子.如果这是重复,我会提前道歉; 我搜索得相当广泛无济于事.我的数学并不像我想的那么强,所以我完全有可能使用错误的术语.

在此先感谢您的帮助!

克里斯

编辑:如果有人感兴趣,我觉得自己像个白痴.即使添加一堆OO抽象来使我的其他代码更容易使用,这可能是30行代码.这距离任何类型的数学都将为你做3年...感谢所有的帮助!

And*_*and 13

这是微不足道的.如果这些点是(x0,y0),(x1,y1),...,(xN,yN),并且这些点是有序的,那么x0 <= x1 <= ... <= xN,那么积分是

  • y0*(x1 - x0)+ y1*(x2 - x1)+ ...

不使用插值(矩形的求和区域),和

  • (y0 + y1)/ 2*(x1 - x0)+(y1 + y2)/ 2*(x2 - x1)+ ...

使用线性插值(梯形的求和区域).

如果您的数据是y0,y1,...,yN,并且假设相应的x值为0,1,...,N,则问题尤为简单.然后,您将获得

  • y0 + y1 + ......

不使用插值(矩形的求和区域),和

  • (y0 + y1)/ 2 +(y1 + y2)/ 2 + ......

使用线性插值(梯形的求和区域).

当然,使用一些简单的代数,可以简化梯形公式.例如,在最后一种情况下,你会得到

  • y0/2 + y1 + y2 + ......


Ahm*_*otb 12

我今天刚刚进行了数学考试:)我有3个规则给你

梯形规则:

积分= h/2*(y0 + 2y1 + 2y2 + 2y3 ....... + yn)

中点规则:

积分= h*(y0.5 + y1.5 + y2.5 + .... y(n-0.5))

y0.5表示x0和x1之间的y值

辛普森一家规则:

积分= h/3*(y0 + 4y1 + 2y2 + 4y3 + 2y4 ....... + yn)

其中h是您采取的步骤,通常是小数(但不能太小,以避免舍入错误),n是您采取的周期数

那些很容易应用......你也可以阅读更多有关高斯正交的信息

参考:

  • 考试是否涵盖了哪些规则在哪些情况下最合适?重要.输入是:随机数据. (3认同)