Javascript 得到给定两点的x截距
这可能是一个有点简单的问题,但我似乎无法让它工作 我想找到给定两点的x截距 假设我有以下两点: (5,3)和(3,4) 我想找到x截距。 目前这就是我所拥有的。它正确地找到了y截距。在本例中为5.5Javascript 得到给定两点的x截距,javascript,linear-regression,Javascript,Linear Regression,这可能是一个有点简单的问题,但我似乎无法让它工作 我想找到给定两点的x截距 假设我有以下两点: (5,3)和(3,4) 我想找到x截距。 目前这就是我所拥有的。它正确地找到了y截距。在本例中为5.5 var A = [5, 3]; var B = [3, 4]; function slope(a, b) { if (a[0] == b[0]) { return null; } return (b[1] - a[1]) / (b[0] - a[0]);
var A = [5, 3];
var B = [3, 4];
function slope(a, b) {
if (a[0] == b[0]) {
return null;
}
return (b[1] - a[1]) / (b[0] - a[0]);
}
function intercept(point, slope) {
if (slope === null) {
// vertical line
return point[0];
}
return point[1] - slope * point[0];
}
var m = slope(A, B);
console.log(m);
var b = intercept(A, m);
console.log('intercept: ' + b);
我建议您将点表示为
{x:5,y:3}
,而不是[5,3]
,因为它使代码的其余部分更加清晰。给定一条直线y=mx+n
,当y=0
时,它会截取x轴
0 = xm + n --> x = -n/m
因此,x截距将为-n/m
给定两个点(x_1,y_1),(x_2,y_2)
,可以找到斜率和y截距,如下所示:
m = (y_2-y_1)/(x_2-x_1)
n = -x_1*(y_2-y_1)/(x_2-x_1) + y_1
然后,x截距将为
x_1 - y_1*(x_2-x_1)/(y_2-y_1)
在JavaScript中
function x_intercept(a, b) {
return a[0] - a[1]*(b[0]-a[0])/(b[1]-a[1]);
}
x_intercept([5, 3], [3, 4]); // 11
我将用“数学”而不是代码来解释,也许这有助于理解这一切背后的原因:
直线的通用方程可以表示为:
y=kx+d
其中,k是斜率,d是直线的y交点
因此,要计算x截距,您必须:
0 = k*x + d
0 = (-0,5)*x + 5,5
-5,5 = (-0,5)*x
11 = x
要确定x交叉点位于是。就这么简单。谢谢。奖金:如何将y指定为0以外的值?例如,如果我想要y=20的x截距,请记住m可以是零。在这种情况下,请检查[0],如果[0]==0,则该线的每个点都位于x轴上。如果没有,就没有x相交
0 = k*x + d
0 = (-0,5)*x + 5,5
-5,5 = (-0,5)*x
11 = x