表达式未知的函数的数值积分

计算科学 时间积分
2021-12-03 00:42:39

我想计算一个函数的积分值。

然而,这个函数不是由公式给出的,比如,而是只能通过它在某些给定点上的值知道,比如 (是分散数据的名称吗?)f(x)x[0,1]f(kn)k{0,,n}

我该怎么做?我不想手动实现正交方法(我知道如何以基本方式实现)。参考科学图书馆的方法将是首选(例如 GSL)。

1个回答

我想计算一个函数的积分值。

然而,这个函数不是由公式给出的,比如,而是只能通过它在某些给定点上的值来知道,比如(是分散数据的名称吗?)f(x) x[0,1]f(k/n) k0,,n

一般来说,如果您将数据作为点的集合,那么通过这些点(有很多这样的曲线)整合“曲线”的绝对简单方法是假设线性相邻点之间的插值,它给你一个梯形规则。据我所知,梯形规则不在 GSL 中(或者至少,不在数值积分部分)。但是,某些库或软件包中有子程序可用; &在 MATLAB 中浮现在脑海中。在最坏的情况下,手动实现梯形规则不会很麻烦。(xk,f(xk)trapzcumtrapz

高阶方法假设高阶插值,并且由于龙格现象,通常也不对正交点进行等距,这是使用具有非等距点的方法的一个动机(例如,基于切比雪夫点的求积,或自适应求积方法) . 如果您有能力在任何地方查询您的函数(它不需要由公式给出,但它必须可以在您的积分区间内对任意输入进行计算),您应该使用其中一种方法。如果不是,那么我怀疑尝试使用高阶分段插值(例如样条)是否有很多优势,但我不是数值积分方面的专家。