diff --git a/surface_integral/include/quadrature.hpp b/surface_integral/include/quadrature.hpp index 243f815..ba69ae6 100644 --- a/surface_integral/include/quadrature.hpp +++ b/surface_integral/include/quadrature.hpp @@ -3,25 +3,27 @@ #include "GL_integrator.hpp" #include "TS_integrator.hpp" -// 高斯-勒让德一维积分:积分区间 [a, b] +// Gauss-Legendre quadrature for 1D integral over interval [a, b] template double gauss_integrate_1D(double a, double b, Func&& func, int q) { double sum = 0.0; + double length = b - a; for (int i = 0; i < q; ++i) { - double x = GLIntegrator::x(q, i, a, b); - double w = GLIntegrator::w(q, i, a, b); + double x = a + length * GLIntegrator::x(q, i); + double w = length * GLIntegrator::w(q, i); sum += w * func(x); } return sum; } -// tanh-sinh 一维积分:积分区间 [a, b] +// Tanh-sinh quadrature for 1D integral over [a, b] template double tanh_sinh_integrate_1D(double a, double b, Func&& func, int q) { double result = 0.0; + double length = b - a; for (int i = 0; i < q; ++i) { - double x = TSIntegrator::x(q, i, a, b); - double w = TSIntegrator::w(q, i, a, b); + double x = a + length * TSIntegrator::x(q, i, a, b); + double w = length * TSIntegrator::w(q, i, a, b); result += w * func(x); } return result;