Matrix 几何矩阵共线性证明

Matrix 几何矩阵共线性证明,matrix,geometry,Matrix,Geometry,假设我有一个n=4,m=5的矩阵 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 假设我有一条从(1,2)点到(4,5)点的对角线。我有一个点P(3,4)。如何在算法中检查P是否在对角线上?TL;DR 与其说是n×m矩阵,不如把它想象成x-y网格。你可以在网格上得到一条直线的方程,一旦你得到了这个方程,你就把你感兴趣的点的x坐标放入你的方程中。如果从等式计算的y值与正在检查的点的y坐标匹配,则该点位于直线上 但是我怎么学

假设我有一个n=4,m=5的矩阵

 1  2  3  4  5
 6  7  8  9 10
11 12 13 14 15
16 17 18 19 20
假设我有一条从(1,2)点到(4,5)点的对角线。我有一个点P(3,4)。如何在算法中检查P是否在对角线上?

TL;DR

与其说是n×m矩阵,不如把它想象成x-y网格。你可以在网格上得到一条直线的方程,一旦你得到了这个方程,你就把你感兴趣的点的
x
坐标放入你的方程中。如果从等式计算的
y
值与正在检查的点的
y
坐标匹配,则该点位于直线上


但是我怎么学数学呢?

首先是一些快速的术语。在本例中,我们有3个关注点——定义直线的两点(或OP称之为“对角线”),以及我们要检查的一点。我将用数字
1
2
指定“对角线”点的坐标,我们要用字母
I
检查的点。另外,对于我们后面需要做的数学,我需要分别处理点的水平坐标和垂直坐标,我将使用n-by-m约定来进行处理。因此,当我在下面的等式中写入
n1
时,这是用于定义对角线的第一个点的
n
坐标(即您在示例中给出的点(1,2)的
1
部分)

我们要找的是网格上的直线方程。该方程的形式为
n=(斜率)*m+(截距)

好的,现在我们已经考虑了定义,我们可以写方程了。解决问题的第一步是找到直线的斜率。这将是垂直坐标的变化除以定义直线的两点之间的水平分量的变化(so
(n2-n1)/(m2-m1)
)。使用示例中的值,这将是
(4-1)/(5-2)=3/3=1
。请注意,由于您在这里进行除法运算,您的答案可能不是整数,因此在使用最终使用的任何编程语言声明变量时,请务必记住这一点-此步骤中的无意舍入可能会在以后将事情搞砸

一旦我们有了斜率,下一步就是计算截距。我们可以通过将斜率和
m
n
坐标插入到我们试图得到的直线的方程中来实现这一点。所以我们从方程开始
n1=(斜率)*m1+(截距)
。我们可以将这个方程重新排列为
(截距)=n1-(斜率)*m1
。插入示例中的值,我们得到
(intercept)=1-(1*2)=-1

现在我们有了直线的一般方程,对于我们的例子,它是
n=(1)*m+(-1)

现在我们有了
(斜率)
(截距)
,我们可以插入任何我们想要检查的点的坐标,看看这些数字是否匹配。我们的示例点有一个
m
坐标
4
,因此我们可以将其插入到方程中

n=(1)*(4)+(1)=3

由于我们使用方程计算的
n
坐标与我们示例中点的
n
坐标匹配,因此我们可以说样本点确实落在直线上。

假设我们还想检查点(2,5)是否也在直线上。当我们把那个点的
m
坐标插入我们的方程,我们得到

n=(1)*(5)+(1)=4


由于我们用等式(
4
)计算的
n
坐标与我们检查的点(
2
)的
n
坐标不匹配,我们知道该点不在直线上。

如何找到m和b?注意,这些计算只取决于网格的坐标,而不是网格坐标处的值(因此示例中的值如
16 17 18 19 20
从未用于任何此类计算)