我选择在我的项目中使用Julia的主要原因之一是它的速度,尤其是计算积分方面。
我想要对一个定义在区间[a,b]上的一元函数f(x)进行积分。通常情况下,Julia的quadgk函数会是一个快速而准确的解决方案。然而,我没有f(x)的解析式,只有在[a,b]区间内一些离散点xi处的函数值f(xi),这些函数值存储在一个数组中。xi是均匀地分布在[a,b]区间上,我可以让它们之间的距离尽可能小。
一种朴素的方法是简单地定义一个函数f,该函数使用f(xi)的值进行插值,并将其提供给quadgk(并使间距尽可能小)。然而,这样做我将不知道误差大小,这很遗憾,因为QuadGK会告诉您其估计量的误差。
另一种解决方案是编写自己的函数来积分数组(例如使用梯形法则),但那样做将打败使用Julia的目的...
如何使用Julia最简单地准确地积分仅给出离散值的函数呢?
trapz
。它是否平滑?是否振荡?如果你实际上正在积分f(x)^2,Trapz会在振荡方面存在一些系统性问题。 - DNF