确定线的系数 [关闭]

Determine the coefficients of the line [closed]

提问人:Elijah Sokol 提问时间:7/17/2023 更新时间:7/17/2023 访问量:38

问:


想改进这个问题吗?通过编辑这篇文章添加详细信息并澄清问题。

4个月前关闭。

平面上有 N 个点。确定穿过第一个点和剩余点之一的线 y=kx+b 的系数,以便所有 N 个点都位于该线的同一侧,并且可能位于该线本身上。

我需要帮助,至少对问题的解决方案进行数学描述

Python 函数 数学

评论


答:

0赞 Michael Cao 7/17/2023 #1

计算第一个点与每隔一个点之间的角度。取形成最低或最高角度的点,并将该点用作线的第二个点。

-1赞 Red Rapious 7/17/2023 #2

正如Michael Cao所解释的那样,你需要考虑第一点和其他点之间的角度。假设所有点都有正坐标和坐标,则角度最高的点也将具有角度的最高点。这个正切可以很容易地计算出来:xytan

def tangent(x1, y1, x2, y2):
   return (y2-y1) / (x2-x1)

因此,您只需要找到切线最高的点:

def highest_point(points):
   x1, y1 = points[0] # coordinates of the first point
   maxi = (0, None)
   for x, y in points[1:]:
      if tangent(x1, y1, x, y) > maxi[0]:
         maxi = (tangent(x1, y1, x, y), (x, y))
   return maxi[1]

最后,只需计算通过第一个和最高点的线的系数:

def coefficients(points):
   x1, y1 = points[0]
   x2, y2 = highest_point(points)
   print("k =", (y2-y1) / (x2-x1)) # the coefficient is the tangent
   print("b =", y1 - (x1 * (y2-y1) / (x2-x1)))

(最后一个公式可以几何地验证:原点处的有序是 、 中的有序减去“斜率从 到bx1y10x1")

评论

0赞 Elijah Sokol 7/18/2023
好的,这是一个很好的解决方案,但是如果坐标可以是负数,它将如何工作?
0赞 Red Rapious 7/19/2023
我相信,这仍然适用于负坐标。