我想找到两条线的交点。
我对第一行有两点:
A(x1,y1) B(x2,y2)
对第二行有另外两点:
C(x3,y3) D(x4,y4)
。
是否有一个 Excel 公式可以用来查找两条线的交点(连接第一条线与第二条线的点)?
我试图找到一个数学公式,但它有点大,所以我想避免这种方法。
答案1
我记得你这个问题是几十年前在代数课上遇到的。它叫做“求解两个变量的方程”。
您需要将直线转换为“y = mx + b”格式的公式,其中 m 是直线的斜率,m 是 y 截距。此方面在以下位置解决数学网,以下信息复制自:
每条直线都可以用一个方程表示:y = mx + b。如果将直线上每个点的坐标代入 x 和 y 的方程中,就可以解出该方程。
这条线的斜率 m(即陡度或倾斜度)可以按以下方式计算:m = y 值变化/x 值变化
任何直线的方程称为线性方程,可以写成:y = mx + b,其中 m 是直线的斜率,b 是 y 轴截距。
该直线的 y 截距是该直线与 y 轴相交点处的 y 值。
当你将这些行转换为这种格式时,mathplanet.com有以下步骤:
使用代换法求解方程组
y=2x+4
y=3x+2
我们用第二个方程的表达式代替上面方程中的 y:
2x+4 = 3x+2
4-2 = 3x-2x
2 = x
为了确定 y 值,我们可以将 x 值插入任意方程中。我们选择第一个方程:
y=2x+4
我们代入 x=2 得到
y=2⋅2+4=8
我认为除了数学公式或公式组合之外,你找不到任何其他东西。我不确定“有点大”在这种情况下是什么意思,但解决这个问题不能避免使用数学。
如果线条平行,则可能会出现除以零的错误。如果线条太短而无法相交,则会得到“延长”的交点,就好像线条无限长一样。
“数学很有趣!”
答案2
好的,最后一篇帖子。
如果您只使用基本算术运算来计算,我会同情您。Excel 确实有两个函数可以大大缩短您的公式,但……仍然不是“A1+V3”……并且让您的公式在一年后看起来更容易理解。更容易理解!
他们是:
1)斜率()
2)截距()
我不会详细讲解数学,只是介绍我将使用的公式。为此,我假设您将第一行的两个点放在 A1 和 A2 中作为 X(A1:A2),将 B1 和 B2 作为 Y(B1:B2),然后使用 A4:A5 和 B4:B5 对第二行执行类似操作。我将它们交点的 X 值的公式放在 D1 中,将它们交点的 Y 值的公式放在 E1 中。
X 值(D1)的公式为:
=IF(SLOPE(B1:B2,A1:A2)=SLOPE(B4:B5,A4:A5), IF(INTERCEPT(B1:B2,A1:A2)=INTERCEPT(B4:B5,A4:A5),"Same line","Parallel lines"), (INTERCEPT(B1:B2,A1:A2)-INTERCEPT(B4:B5,A4:A5))/(SLOPE(B4:B5,A4:A5)-SLOPE(B1:B2,A1:A2)))
(我用一些空格将它稍微分开了一点(这样很好,但你也可以删除它们)。第一部分检查斜率是否相同。如果相同,则这些线要么是同一条线,要么是平行线。第二部分对此进行测试并告诉你。如果斜率不相同,第三部分将计算它们交点的 X 值。)
Y 值(E1)的公式为:
=IF(T(D1)="", ((INTERCEPT(B1:B2,A1:A2)-INTERCEPT(B4:B5,A4:A5))/(SLOPE(B4:B5,A4:A5)-SLOPE(B1:B2,A1:A2)))*SLOPE(B1:B2,A1:A2)+INTERCEPT(B1:B2,A1:A2), D1)
(空格也是一样。)这个使用 T() 来查看 D1 中是否没有文本。如果 D1 中没有文本,第二部分将计算它们的交点的 Y 值。如果 D1 中确实有文本,最后一小段只是重复与 D1 相同的文本。您可以用任何您想要的不同内容替换它(末尾的最后一个小 D1)。如果 D1 显示“同一条线”或“平行线”,也许您更希望它是空白的,所以您可以将 D1 替换为“”。
我没有安排任何四舍五入或其他显示问题。
(如果您愿意使用命名范围,您可以进一步缩短公式。但是一年后要理解它就需要挖掘出它们并检查它们的公式,这也可能很令人讨厌,所以有时六个一个,六个另一个。我自己,我喜欢命名范围。)
答案3
我必须这么做。我使用的是工作表中的单元格号码。
用你的点数据填充这些单元格:
B12 = X1
C12 = Y1
B13 = X2
C13 = Y2
B14 = X3
C14 = Y3
B15 = X4
C15 = Y4
D12=SLOPE(C12:C13,B12:B13)
E12=INTERCEPT(C12:C13,B12:B13)
D14=SLOPE(C14:C15,B14:B15)
E14=INTERCEPT(C14:C15,B14:B15)
B18=(E14-E12)/(D12-D14) [Intersection X ]
C18=D12*B18+E12 [Intersection Y]