c++ - 多维积分 - 耦合极限

标签 c++ numerical-methods integral

我需要计算 C++ 中高维积分的值。我发现许多库能够解决固定极限积分的此任务,

\int_{0}^{L} \int_{0}^{L} dx dy f(x,y) .

但是我正在研究的积分有可变的限制,

\int_{0}^{L} \int_{x}^{L} dx dy f(x,y) .

为了澄清我的意思,这里是一个简单的 2D 黎曼求和在 2D 中的实现,它返回所需的结果,

int steps = 100;
double integral = 0;
double dl = L/((double) steps);
double x[2] = {0};

for(int i = 0; i < steps; i ++){
    x[0] = dl*i;
    for(int j = i; j < steps; j ++){
        x[1] = dl*j;
        double val = f(x);
        integral += val*val*dl*dl;
    }
}

其中 f 是某个任意函数,L 是公共(public)积分上限。虽然这种实现有效,但速度很慢,因此对于更高的维度来说是不切实际的。

存在更高维度的有效算法,但据我所知,库实现(例如古巴)采用固定值 vector 作为限制参数,这使得它们对我的问题毫无用处。

这有什么原因和/或有什么技巧可以规避这个问题吗?

最佳答案

您的集成顺序错误,应该是dy dx


您正在对三角形进行积分

0 <= x <= y <= L

在正方形 [0,L]x[0,L] 内。这可以通过在整个正方形上积分来模拟,其中被积函数 f 在三角形外部定义为 0。在许多情况下,当 f 定义在整个正方形上时,可以通过将 f 与三角形指示函数的乘积作为新的被积函数来实现。

关于c++ - 多维积分 - 耦合极限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23950862/

相关文章:

c++ - STL 在 C++ 中的强大功能

r - 用 R 中的二重积分方程求解优化

python - 如何拟合包含具有可变极限的积分的函数?

matlab - 在 MATLAB 中使用双积分 (dblquad) 查找正态分布重叠。奇怪的行为

c++ - Direct Show graph - 如何获取当前的 fps?

c++ - 在 C++ 中包含头文件时的循环类依赖

python - 长 For 循环执行时间

matlab - 雅可比迭代没有结束

python - Python 中的重叠积分 - 将结果存储在数组中

c++ - 构建 C++ 文件 : . h 和 .cpp