图纸有问题,就找公差联盟!
网站首页 符号查询 文章观点 视频学习 图样解析 设计流程 GDT培训
官网小程序
加入群聊

最小二乘直线,平面和圆是如何拟合出来的?

吴德辉老师 360 阅读 0 评论 1 点赞

各位小伙伴,2025年新年好!好久没有更新公众号文章了。今天我们要讨论的话题是,最小二乘直线,平面,还有圆,是如何拟合出来的?

最小二乘法是高斯提出来,用处非常广泛,高斯大神曾经就用最小二乘法推算过谷神星的运动轨迹。

在GD&T的知识领域,ISO标准中,孔位置度的被测要素,就是每一层截面的最小二乘圆圆心的集合; 圆度的评价,除了采用切比雪夫法以外,也可以采用最小二乘法来评价(根据设计需求)。

今天的内容,我们就来仔细探讨一下这个最小二乘法。我们分三个部分来讨论:

1.     最小二乘直线的拟合

2.     最小二乘平面的拟合

3.     最小二乘圆的拟合

本期内容的数学味道比较重,对大家的数学基础,尤其是线性代数有一定要求,有兴趣的小伙伴需要耐心看完。

实在没有耐心,但工作中又要使用最小二乘法的小伙伴,也没有关系,可以直接跳过内容,在本文最后扫码,索要本文案例中提到的最小二乘法拟合的Excel表格,方便在工作中直接使用。

*****************

  1. 1.     最小二乘直线的拟合

    *1.1理论部分*

    本期理论部分有点枯燥,但是会对最小二乘法的公式做严谨的推导。对数学实在有心理阴影的小伙伴,可以直接跳到第1.2部分,看实际操作。

本公众号往期的文章中,我们曾介绍过最小二乘法的公式(最后有链接)。本讲,我们以直线为案例,来看一下最小二乘法的基本逻辑和其公式的推导过程。

在一个平面上,假设我们知道4个离散点P1(x1, y1), P2(x2, y2), P3(x3, y3), P4(x4, y4), 我们想将它们拟合成一条直线,采用最小二乘法,该如何做呢?见图1:

图片

图1 4个离散的点

假设我们将4个离散的点已经拟合成一条最小二乘直线l1, 它的方程是y=kx+b, 其中k代表斜率,b代表截距,那么4个离散的点和这个直线l1之间,具备什么样的关系呢?

最小二乘法的特点,用数学的术语,叫“残差的平方和最小”。

我们还是说人话,见下图中的关系:

图片

图2 最小二乘直线和残差

图2中,绿色的线l1就是最小二乘直线, P1(x1, y1)点中的是y1, 我们叫“观察值”(也就是测量值),我们将x1带入直线方程l1, 便得到新的点P1’ (x1’,y1’), 其中y1’,我们叫“估计值“。

图2中的绿色直线,是我们估计的直线,我们以为,所有的这些点,都“本来应该”分布在这条直线上,因为种种原因,实际上出现了偏差,这个偏差就是d1,这个d1也就是P1点对应的“残差”。

显然d1=y1-y1’, 又因为y1’=kx1+b, 所以有:

d1=y1-kx1-b      (1)

同样,p2, p3, p4,也对应有同样的残差d2, d3, d4, 见下图:

图片

图3 4个残差

在图3中,我们假设:

J=d12+ d22+ d32+ d42 (这个就是残差的平方和)

如果图3中的绿色直线l1就是最小二乘直线,那么只有直线l1才能使得J的值是最小的!

注意哦,图3中的直线l1:y=kx+b, 其中k和b是未知的,它事实上有无数个可能性。如何找到合适的k和b,才能使得J最小呢?

这个时候,我们需要作数学处理。

所以,最小二乘法拟合的本质是:我们在寻找一个合适的直线,也就是寻求两个合适的参数:k和b,使得J最小。见动画1:

图片

动画1 寻求一个合适的直线l1

注意,动画1中,k和b如果取不同的值,则直线的姿态和位置就会发生变化,对应的残差d1 d2, d3,d4也会发生变化,那么对应的残差平方和, 也就是J的值,也会发生变化哦。

而我们的目的,就是求得一个k, b值,使得J最小。

所以我们需要进行数学推导,推导如下:

根据公式(1)有:d1=y1-kx1-b

因为有4个测量点,就有4个残差,分别为:

d1=y1-kx1-b

d2=y2-kx2-b

d3=y3-kx3-b               (2)

d4=y4-kx4-b

接下来稍微做一个矩阵构建,设D=(d1,d2,d3,d4)T(右上标T表示转置), D又叫残差向量,它是由4个残差组成的一个向量。

因为对于公式(2),我们想用矩阵来表达,所以先定义三个矩阵,X,Y,p:

令:

图片

其中,p中的元素(k,b)就是我们要求的未知数。

把等式组(2)中的4个等式,可以用矩阵来表达:

D=Y-Xp             (3)

即:

图片      (4)

注意,上面的矩阵(4)和等式组(2)和是完全等价的。

因为我们的目的是使得残差的平方和最小,则需要先表达出残差的平方和来,所以有:

J=d12+ d22+ d32+ d42=DTD     (5)

注意,(5)式中 J是标量,它一个数值,D是一个nx1的矩阵,也就是残差向量,DTD相当于1xn的矩阵乘nx1的矩阵,结果是1x1的矩阵,也就是一个数值。

这就是转置矩阵的妙用之一。再表达一下:

J= DTD

图片

把式(3)中的等式D=Y-Xp,带入等式(5), 则有:

J=DTD =(Y-Xp)T(Y-Xp)     (6)

公式(6)中,Y是已知的观察值(由离散点的y坐标构成),X也是已知的观察值(由离散点的x坐标和1构成),p是需要求的,所以(6)式可以写成函数的表达式:

J(p)=(Y-Xp)T(Y-Xp)     (7)

式(7)中,J(p)实际上是关于向量p的函数,又叫代价函数。注意,p是一个向量,它包含两个元素k和b.

p=

图片

现在的我们的任务是,求得p值,使得式(7)中的J(p)最小。

尽管J(p)是关于p的向量函数,但是它的很多性质与我们普通函数类似,即自变量和因变量的性质一样。

比如,要求J(p)的极值,需要对p求导数。

先把公式(7)括号打开:

图片 (8)

在上面打开的过程中会遇到关于转置的公式,比如(A-B)T=AT -BT ,  (AB)T=BTAT这样的基本定理,大家在研究的时候要注意。

公式(8)中,YTXp和pTXTY都是1x1矩阵,而且互为转置,所以两者相等,整理(8)得:

图片(9)

在公式(9)中,对向量p求导(求极值都得求导):

图片

注意,式(10)中,对向量求导的结果,又要用到矩阵论里边的一些知识点:

图片

公式(10)中,因为偏导为零,才是J(p)的极值点(或驻点),所以令:

图片

进一步得出:

图片

等式两边左乘(XTX)-1, 可以得出:

图片     (11)

公式(11)就是最小二乘法的数学公式的推导结果,这是一个经典的公式,希望大家记住。

当然,严谨起见,还需要对公式(10)再对p求导,即对J(p)求二阶导:

图片

即海森(Hessian)矩阵H=2XTX, 因为X列肯定满秩(不可能4个点的x坐标都相同), 所以海森矩阵H肯定正定。

讲到这里,可能有的小伙伴有点头晕,这里类似我们要知道一个函数的极值,首先要求一阶导为0,这可能是一个极值点,但是我们怎么知道它是极大值点,极小值点,还是只是一个驻点? 

所以通常还要求二阶导,二阶导如果大于0,那么一阶导为0的这个点,肯定是函数的最小值。

而在向量函数里边,海森矩阵正定,相当于二阶导大于0, 所以公式(11),也意味着当一阶导等于0时,推算出来的p值, 对应的是代价函数J(p)的最小值。

而代价函数J(p)表达的正是残差的平方和:

J=d12+ d22+ d32+ d42=DTD

所以公式(11)中的p值, 所对应的就是残差的平方和最小哦。我再把前边的图片放到下边:

图片

图4 4个残差d1,d2,d3,d4

利用公式(11), 计算出p, 又因为p=(k,b)T, 就是说p包含两个元素k和b。那就意味着,我们求出p, 我们就是知道了k, b, 图4中的绿色的直线就确定了哦。我再把公式(11)写在这里:

图片 (11)

图4中,那条绿色的直线,就是我们心心念念的最小二乘直线!因为只有这条直线,才满足图4中的残差的平方和(d12+ d22+ d32+ d42)最小。

  1. *1.2  实际操作*


好了,最小二乘法的理论讲完,我们再来讲实际操作。我们用最大众的软件,Excel来操作计算最小二乘直线,也就是要利用好公式(11):

图片(11)

要利用公式(11)计算最小二乘直线,关键是,利用已知的点,只要能构建出正确的矩阵X和Y,再利用上面的公式(11),就可以直接算出p值。

比如已知离散的点如下:

P1(x1,y1)

P2(x2,y2)

P3(x3,y3)

P1(x4,y4)

根据前边的推导变换,则有:

 图片

然后所谓矩阵的乘法,转置和求逆,我们直接利用EXCEL中现存的函数来完成就行。

比如,已知4个点的数据如下(实际上,可以有无数个点):

图片

图5 原始数据

再利用Excel的特点,整理成两个矩阵X和Y,见图6:

图片

图6 X矩阵和Y矩阵

然后就可以计算了,在图7中的红框处,利用公式(11)计算p,可以用下面的EXCEL函数完成:

MMULT(MMULT(MINVERSE(MMULT(TRANSPOSE(A10:B13),A10:B13)),TRANSPOSE(A10:B13)),C10:C13)

图片

图7 计算最小二乘直线

先解释一下上面一长串Excel关于矩阵运算的函数:

MMULT(A,B)=AB

TRANSPOSE(A)=AT

MINVERSE(A)=A-1

那一长串函数,无非就是函数再套函数呗。

我们继续,图7中的k和b, 就是最小二乘直线的两个参数。拟合出来的直线如下图所示:

图片

图8 拟合出来的直线

然后,我们就可以用它来近似计算直线度,或其他用途。

在最后,稍微总结一下: 我们只要把直线方程用矩阵相乘的形式来表达,就可以轻易构建出图6中的X矩阵和Y矩阵。

比如直线方程:kx+b=y,转化成矩阵的形式,则为:

图片

对应的矩阵代号为:

图片

图9 直线方程对应的矩阵

如果p是由未知参数构成,X和Y是由已知的测量数据构成,则它们形成等式:

Y=Xp

那么就可以得出p的的最小二乘解:

图片

当然,前提是XTX可逆,这个我个人觉得不用担心,只要我们的测量点不重叠,肯定可逆。

根据我目前有限的经验,只要目标函数能够写成Y=Xp的矩阵形式,都可以直接套用公式(11),来计算p的最小二乘解。

平面方程也可以做类似的转换,然后构造矩阵X,p,Y, 弄成Y=Xp的形式,就可以利用公式(11)求解了。

接下来我们就来讨论最小二乘平面。

  1. 2.     最小二乘平面的拟合


  2. *2.1理论部分*


平面方程是:Ax+By+Cz+D=0

我们做一个转换,将平面方程两边除以C(C≠0):

图片   (12)

再令:

 图片    (13)

将(13)带入(12)则有:

图片

转化成矩阵格式:

图片

通过(14), 我们可以构建出平面方程的矩阵形式:

Xp=Y

其中X=[-x -y -1],p=[a b c]T, Y=z

和最小二乘直线的原理是一样的,而且也是用公式(11)来计算:

图片   (11)

这里就不再做啰嗦的推导,有兴趣的小伙伴可以根据前面的套路自己再推导一遍。

*2.2实操部分*

同样,在实际操作时,如何用三坐标测量出来的离散的点P(x,y,z)来构建对应的矩阵X,矩阵p和矩阵Y非常重要.

假设有5个离散的点,他们的坐标是:

P1(x1,y1,z1)

P2(x2,y2,z2)

P3(x3,y3,z3)

P4(x4,y4,z4)

P5(x5,y5,z5)

根据上面转化的公式(14),则可以构建矩阵:

图片

还是用Excel举例子吧:

下面5个点是三坐标在零件表面上采的5个点:

图片

图10 三坐标采集的原始数据

利用Excel的特点,整理成X矩阵和Y矩阵:

图片

图11 整理成X矩阵和Y矩阵

X,Y矩阵有了,还是利用公式(11),在图11的红框处,输入一长串公式:

=MMULT(MMULT(MINVERSE(MMULT(TRANSPOSE(A11:C15),A11:C15)),TRANSPOSE(A11:C15)),D11:D15)

图片

图12 计算参数a,b,c

对一个具体的空间平面,它的方程是:Ax+By+Cz+D=0,因为A,B,C,D可以等比例的放大或者缩小,它不影响平面的性质,所以A,B,C,D的值不是唯一的。

为了方便计算,设C=1, 然后利用已经计算出来的 a=A/C, b=B/C, c=D/C, 从而再计算出平面参数A,B,C,D的大小, 见图11中A,B,C,D的数值。

这个最小二乘平面拟合出来干什么呢?可以根据设计的图纸需求来,比如做基准面(近似测量),比如作为平面度的近似理想要素, 等等。

  1. 3.     最小二乘圆的拟合


接下来就要讨论我们的重点,最小二乘圆的拟合。

*3.1 理论部分*

和最小二乘直线的原理一样,假设我们有一堆散点,P1, P2, P3, P4, P5, P6 我们想把这些点拟合成一个最小二乘圆,应该如何做呢?

先来理一下逻辑,所谓最小二乘圆,就是一个特殊的“平均圆”。

图片

动画2 最小二乘圆

这个“平均圆”它有个特点,那就是P1-P6到这个圆的距离的平方和(又叫残差的平方和)最小。

见下图:

图片

动画3 最小二乘圆的特点

因为平面圆的方程是(x-A)2+(y-B)2=R2,其中A,B为圆心坐标,R为半径。所以寻求最小二乘圆的过程,实际上就在寻找不同的圆(对应的就是不同的参数:A,B,R), 最终使得残差的平方和最小。

图片

动画4 寻找最小二乘圆

我们先假设最小二乘圆的方程就是(x-A)2+(y-B)2=R2,先求出残差,也就是每个离散的点到这个圆的距离,理论上应该是离散点P到圆心O(A,B)的距离, 然后再减去R。

以P1(x1, y1)作为案例,相当于d1=P1O-R, 见图13.

图片

图13 计算残差d1

因为计算距离P1O要开根号,处理起来非常麻烦,我们做一个妥协,用距离的平方来代替距离,半径的平方来代替半径,平方差d1’来代替残差(貌似数学界都这么近似处理,不影响性质):

d1’=P1O2-R2

那么d1’=(x1-A)2+(y1-B)2-R2

接下来就是和前面一样枯燥的推导过程,不耐烦的小伙伴可以跳过这一段,看后边的实操部分:

图片

整理得:

图片

重组一下参数:令a=-2A, b=-2B, c=A2+B2-R2

则公式(15)可以简化成:

图片

上面的等式是不是有点熟悉?因为可以写成矩阵的形式:

图片

现在呢,有6个点(P1-P6), 有6个残差,利用公式(16),先弄个方程组出来吧:

图片

方程组(17)是一个超定方程组,或者说是一个矛盾方程组,肯定没有正儿八经的解,只有近似解。不管它,先转化成矩阵格式:

图片

大家不要被上面的矩阵吓到,在Excel里边,处理起来就是输入数据,然后动动鼠标的事情。上面庞大的矩阵我们再做一个简化:

图片

图14 矩阵简化

图14中,D就是残差向量,Y和X就是观察值构成的矩阵,也就是三坐标在零件圆周上采的点的坐标,它们所构成的矩阵。

p相当于一个自变量, 它包含了圆的三个参数, 圆心坐标A,B和半径R。注意p的元素,a, b, c, 就实际上包含这三个圆的参数, 无非就是做了一个转化。

所以,基于图14,公式(17)可以写成下面的简化形式:

D=Y-Xp

还是按照老套路,先构建代价函数J(p):

J(p)=d12+d22+d32+d42+d52+d62= DTD

图片

同第一讲一样,然后对p求偏导,并令偏导为0

图片  (19)

然后得出代价函数J(p),也就是平方和处于极值时,所对应的p值:

图片  (20)

另外,前面已经证明过了,如果对公式(19)再对p求导,可以得出海森矩阵为2XTX, 在列满秩的前提下(现实中肯定列满秩)是正定的,所以上面的公式(20)对应的就是代价函数J(p)的最小值,证毕。

上面啰里八嗦的推导了半天,无非就是为了证明其严谨性。事实上,圆的方程(也就是目标函数),也可以整理成矩阵乘积的形式。

 图片

整理可得:

图片

再做参数重组,令a=-2A, b=-2B, c=A2+B2-R2,则有:

 图片   (21)

再令Y=x12+y12, X=(-x1 -y1 -1), p=(a,b,c)T

于是,公式(21)可以转化成下面格式:

Y=Xp

即圆的方程也可以用下面的矩阵相乘来表达:

图片

然后我们求p的最小二乘解,就可以套用下面经典公式:

图片    (20)

*3.2 实操部分*

同样的,我们用Excel来玩最小二乘圆。

关键点还是构建正确的矩阵X,Y和p,我把图14拷过来,见下图:

图片

图14 矩阵转化

假设我们在一个零件孔的圆周上采了6个点,具体坐标如下:

图片

图15 原始数据

再利用Excel的特点,整理成X,Y矩阵:

图片

图16 整理成X矩阵和Y矩阵

同样的套路,在图17的红框处(也就是p的值)输入:

=MMULT(MMULT(MINVERSE(MMULT(TRANSPOSE(A12:C17),A12:C17)),TRANSPOSE(A12:C17)),D12:D17)

图片

图17 拟合的结果

然后就得到了p的值,也就是知道了a,b,c的值,再利用参数重组时的公式:

a=-2A, b=-2B, c=A2+B2-R2

反推A,B,R,结果见图17,欧了。

最小二乘圆不仅仅在拟合提取中心要素(ISO标准)中会用到,也可以用来计算圆度(如果图纸要求用最小二乘圆来计算),见上图。

好了,今天的内容就到这里,能坚持看到这里的小伙伴,为您们点赞!

本期文章中的实操案例,已经做成Excel表格,欢迎各位小伙伴私我索要,或者扫描本期文章后边的二维码加好友索要哦。

内容回顾:

本期内容主要讲解了如何用最小二乘法拟合直线(平面直线), 平面和圆。第一讲,我们讲解了最小二乘法拟合直线的逻辑,推演出了公式,最后用Excel表格拟合最小二乘直线;第二讲,我们讲解了用最小二乘法拟合平面以及实操;第三讲,我们讲解了如何用最小二乘法拟合圆,并再次推导了它的公式,以及如何用Excel实现。

***

在本文的最后,给您留一道思考题:我们前面讲的直线拟合,实际上仅仅局限于平面直线。如果给您空间中的离散点,您如何把他们拟合成一条空间的直线呢?欢迎您在留言区给我们留言。

上一篇 >您真的了解GD&T中的局部实际尺寸吗? 下一篇 >尺寸链计算与公差累加原理:为什么尺寸公差会失效?几何公差如何破局? 点赞(1)
你可能还想找:
自由度 检测销 旋转 约束 GD&T专家班 GD&T 结构设计 理想要素 分离要求 自由状态 贴切要素 评价原理 OZ CZ 尺寸要素 复合公差 边界 面轮廓度 公差 CF 轮廓度 圆跳动 复合位置度 同轴 尺寸链 包容要求 相切平面 孔销 M圈 GD&T学习
符号查询图纸符号一查就懂!
更多符号
视频学习收集名师教学视频!
更多视频
常用工具集合
更多工具
孔轴公差 基孔制配合 孔轴公差 基孔制配合
图样解析
更多解析