【发布时间】:2015-12-18 14:18:20
【问题描述】:
我正在努力寻找一种算法来找到两个线性方程的交集,例如:
f(x)=2x+4
g(x)=x+2
我想用你设置f(x)=g(x)的方法求解x,我想远离叉积。
有人对这样的算法的外观有什么建议吗?
【问题讨论】:
我正在努力寻找一种算法来找到两个线性方程的交集,例如:
f(x)=2x+4
g(x)=x+2
我想用你设置f(x)=g(x)的方法求解x,我想远离叉积。
有人对这样的算法的外观有什么建议吗?
【问题讨论】:
如果您的输入线采用斜率截距形式,那么算法就太过分了,因为有一个直接公式可以计算它们的交点。它在Wikipedia page 上给出,您可以按照下面的说明理解它。
给定线的方程:的 x 和 y 坐标 很容易找到两条非垂直线的交点 使用以下替换和重新排列。
假设两条线有方程 y = ax + c 和 y = bx + d 其中 a 和 b 是线的斜率(梯度),其中 c 和 d 是 线的 y 截距。在两条线的点 相交(如果他们这样做),两个 y 坐标将相同,因此 以下相等:
ax + c = bx + d。
我们可以重新排列这个表达式以提取 x的值,
ax - bx = d - c,等等,
x = (d-c)/(a-b)。
要找到 y 坐标,我们需要做的就是将 x 的值代入 > 两个直线方程中的任一个。比如进入第一个:
y=(a*(d-c)/(a-b))+c.
因此,交点是{(dc)/(ab), (a*(dc)/(ab))+c}
注意: 如果 a = b 则两条线平行。如果 c ≠ d 也是如此,则行 不同且没有交点,否则两条线是 完全相同。
【讨论】:
一般解决方案。让
f(x) = a1x + b1 ....... g(x) = a2x + b2
特殊情况:
a1 == a2 和 b1 == b2 :线条重合
a1 == a2 和 b1 != b2 :线是平行的,没有交叉点
一般情况:a1 != a2
X = (b2 - b1) / (a1 - a2) ....和... Y = (a1b2 - a2b1) / (a1 - a2)
【讨论】:
鉴于: ax + b = cx + d
ax = cx + d - b
ax - cx = d - b
x(a - c) = d - b
因此,x = (d - b) / (a - c)
在您的示例中,设 a = 2, b = 4, c = 1 d = 2
x = (2 - 4) / (2 - 1)
x = -2 / 1
x = -2
【讨论】:
a != c,否则你会被零除。
我不记得方程式上下文中的叉积是什么。
解决这些问题的一种方法是将它们设置为彼此相等,求解x,然后使用该值求解y:
2x + 4 = x + 2
2x + 2 = x
x = -2
y = f(x)
= g(x)
= x + 2
= -2 + 2
= 0
解决方案:(-2, 0)
【讨论】: