具有指数符号积分的数值积分

计算科学 数字 时间积分 一体化 符号计算 结石
2021-12-02 22:52:21

很多时候在傅里叶近似中,我们遇到积分,例如

01eγ0xu0(η)dηdx
其中,是一个常数,的数据作为离散采样向量提供。γu0

如何对这种数值积分进行积分?

2个回答

我要么对的样本进行插值,要么进行曲线拟合,以获得一个易于分析积分插值或拟合方法的选择取决于您对的了解。例如,如果它是一个带限信号,并且采样频率大于奈奎斯特速率,那么使用 sinc 函数进行插值将是理想的,尽管外部积分必须以数值方式完成。如果对,我将使用 1 阶或更多阶的样条曲线,具体取决于样本的平滑度。u0u0(η)u0(η)u0

例如,对于任何线性插值方法,您可以写成, 然后计算 其中 对于 1 阶样条,即分段线性近似,应该可以使用误差函数否则,您将需要一些正交规则,并且由于您可以选择正交节点,因此 Gauss-Kronrod 或 Clenshaw-Curtis 等规则可能是最佳选择。

u0(η)=iaiϕi(η),
I=01exp(γiaiψi(x))dx,
ψi(x)=0xϕi(η)dη.
I

我认为最简单的方法可能只是在外部积分上的外部循环,同时交互增加内部积分。所以你基本上对外部积分做了一个中点规则,并记住最后一步的内部积分的值。

伪代码:

double dx = 1e-12;
double inner_int =0.0;
double outer_int =0.0;

for(double x = 0.0; x<=1.0;x+=dx){
  inner_int += u_0(x)*dx;
  outer_int += exp(gamma*inner_int)*dx;
}

把它想象成在你的轴上从左到右扫描,记住最后一个内积分的值。可能会有更优雅的改进(梯形规则或类似规则)。这只是一个预感,所以请用一些测试用例来验证它:-)

您尚未发布功能绝对确保没有可用于内部积分的解析表达式。有很多用于积分表达式的表格,您可能很幸运能找到您的特定表格。(例如在 Bronstein/Semandjajew 或类似的收藏中)u0