得到两点得到x截距

时间:2016-03-23 16:24:40

标签: javascript linear-regression

这可能是一个有点简单的问题,但我似乎无法让它发挥作用。

我想找到两个点的x截距。

让我们说我有以下两点: (5,3)和(3,4) 我想找到x截距。 目前这就是我所拥有的。哪个正确找到了y截距。在这种情况下5.5。

class PostTitle < Liquid::Tag
  def initialize(tag_name, post, tokens)
    super
    @orig_post = post.strip
    begin
      @post = Jekyll::Tags::PostComparer.new(@orig_post)
    rescue => e
      raise Jekyll::Errors::PostURLError, <<-eos
Could not parse name of post "#{@orig_post}" in tag 'post_title'.
Make sure the post exists and the name is correct.
#{e.class}: #{e.message}
eos
    end
  end

  def render(context)
    site = context.registers[:site]

    site.posts.docs.each do |p|
      return p.data.title if @post == p
    end

    raise Jekyll::Errors::PostURLError, <<-eos
Could not find post "#{@orig_post}" in tag 'post_title'.
Make sure the post exists and the name is correct.
eos
  end
end

Liquid::Template.register_tag('post_title', PostTitle)

3 个答案:

答案 0 :(得分:5)

给定一条直线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

enter image description here

答案 1 :(得分:3)

function xIntercept(a, m) {
    return a[0] - a[1] / m;
}

我建议您将点数表示为{x: 5, y: 3}而不是[5, 3],因为它会使代码的其余部分更加清晰。

答案 2 :(得分:0)

我将通过&#34; math&#34;来解释它。而不是代码,也许这有助于理解所有这些背后的内容:

直线的公式可以表示为:     y = kx + d

其中 k 是斜率, d 是该线的y相交。

因此,要计算x截距,您必须:

  1. 检查,如果它是一条直线(例如,如果斜率== 0)。如果是,则2个给定点的x坐标相等。如果它们是0,则x-intersect是整行。如果它们不为零,则没有x相交。
  2. 否则,您可以通过在上面的等式中将y设置为零来获得x-intersect的y值,如下所示:0 = k * x + d
  3. 然后我们继续:

       0 = k*x + d
       0 = (-0,5)*x + 5,5
    -5,5 = (-0,5)*x
      11 = x
    

    要找到x-intersect在