slope js实现
斜率(Slope)的 JavaScript 实现
斜率的计算通常用于数学、数据分析和图形处理中。以下是几种常见的斜率计算场景及其 JavaScript 实现方法。
计算两点之间的斜率
给定两点 $(x_1, y_1)$ 和 $(x_2, y_2)$,斜率 $m$ 的计算公式为: $$ m = \frac{y_2 - y_1}{x_2 - x_1} $$
JavaScript 实现:

function calculateSlope(x1, y1, x2, y2) {
if (x2 - x1 === 0) {
return Infinity; // 垂直线,斜率为无穷大
}
return (y2 - y1) / (x2 - x1);
}
// 示例
const slope = calculateSlope(1, 2, 3, 4);
console.log(slope); // 输出 1
计算线性回归的斜率
线性回归的斜率可以通过最小二乘法计算。给定一组点 $(x_i, y_i)$,斜率 $m$ 的计算公式为: $$ m = \frac{n \sum(x_i y_i) - \sum x_i \sum y_i}{n \sum(x_i^2) - (\sum x_i)^2} $$
JavaScript 实现:

function linearRegressionSlope(points) {
const n = points.length;
let sumX = 0, sumY = 0, sumXY = 0, sumX2 = 0;
for (const point of points) {
sumX += point.x;
sumY += point.y;
sumXY += point.x * point.y;
sumX2 += point.x * point.x;
}
const numerator = n * sumXY - sumX * sumY;
const denominator = n * sumX2 - sumX * sumX;
return denominator === 0 ? 0 : numerator / denominator;
}
// 示例
const points = [
{ x: 1, y: 2 },
{ x: 2, y: 3 },
{ x: 3, y: 4 }
];
const slope = linearRegressionSlope(points);
console.log(slope); // 输出接近 1
计算数组数据的斜率
对于均匀间隔的数组数据(如时间序列),斜率可以通过差分计算:
function arraySlope(arr) {
const slopes = [];
for (let i = 1; i < arr.length; i++) {
slopes.push(arr[i] - arr[i - 1]);
}
return slopes;
}
// 示例
const data = [1, 3, 5, 7];
const slopes = arraySlope(data);
console.log(slopes); // 输出 [2, 2, 2]
处理垂直或水平线的特殊情况
垂直线($x_1 = x_2$)的斜率为无穷大,水平线($y_1 = y_2$)的斜率为 0:
function safeSlope(x1, y1, x2, y2) {
if (x1 === x2) {
return y1 === y2 ? NaN : Infinity; // 两点重合返回 NaN
}
if (y1 === y2) {
return 0;
}
return (y2 - y1) / (x2 - x1);
}
注意事项
- 斜率为
Infinity或-Infinity时表示垂直线。 - 斜率为
NaN时表示两点重合,无法计算斜率。 - 在图形渲染或数据分析中,可能需要根据斜率调整计算逻辑(如避免除以零)。






