js实现积分
在JavaScript中实现积分计算通常涉及数值积分方法,以下是几种常见的实现方式:
矩形法(矩形近似)
矩形法将积分区间划分为多个小矩形,通过累加矩形面积逼近积分值:

function rectangularIntegral(f, a, b, n) {
const dx = (b - a) / n;
let sum = 0;
for (let i = 0; i < n; i++) {
const x = a + i * dx;
sum += f(x) * dx;
}
return sum;
}
// 示例:计算x^2在[0,1]的积分
const result = rectangularIntegral(x => x * x, 0, 1, 1000);
console.log(result); // 接近0.333...
梯形法
梯形法通过连接相邻点的梯形面积提高精度:
function trapezoidalIntegral(f, a, b, n) {
const dx = (b - a) / n;
let sum = (f(a) + f(b)) / 2;
for (let i = 1; i < n; i++) {
const x = a + i * dx;
sum += f(x);
}
return sum * dx;
}
辛普森法(抛物线法)
辛普森法用二次多项式近似,精度更高:

function simpsonsIntegral(f, a, b, n) {
if (n % 2 !== 0) n++; // 确保n为偶数
const dx = (b - a) / n;
let sum = f(a) + f(b);
for (let i = 1; i < n; i++) {
const x = a + i * dx;
sum += (i % 2 === 0 ? 2 : 4) * f(x);
}
return sum * dx / 3;
}
蒙特卡洛方法
适用于高维积分,通过随机采样估算:
function monteCarloIntegral(f, a, b, samples) {
let sum = 0;
for (let i = 0; i < samples; i++) {
const x = a + Math.random() * (b - a);
sum += f(x);
}
return (b - a) * sum / samples;
}
使用数学库
对于复杂积分,可借助math.js等库:
const math = require('mathjs');
const integral = math.integral('x^2', 'x').evaluate({x: 1})
- math.integral('x^2', 'x').evaluate({x: 0});
注意事项
- 增大分割数
n可提高精度但会增加计算量 - 蒙特卡洛方法适合不规则区域积分
- 对于解析解存在的函数,优先使用符号计算
以上方法可根据具体需求选择,数值积分适用于大多数连续函数的定积分计算场景。






