圆形工件正次品检验数学模型讲解
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
3n=3时,这时有三个子圆覆盖母圆,则必定要覆盖圆周,故至少有一个子圆要覆盖至少 的圆周,因此半径至少为 ,但可找到r= 的三子圆覆盖。(如下图)。将母圆圆周三等分,得A,B,C三点,分别以AB,BC,AC中点为圆心, 弦长为半径分别画圆即得。
由以上方法依次类推,我们就可用计算机编程得到覆盖36个点的最小的圆。
缺点:数据随机性太大,不能处理,极端误差数据 ,所以圆心确定,丢失精度,导致判断结果不准。
模型二:优点:从 maxx,maxy,minx,miny 角度进行筛选,最大程度上避免了极端数据。
缺点:效率比较低下,复杂度为(n^2) 要遍历所有可行解,但每次增加的距离 0.005,不够精确,损失精度
模型三:优点:很好的考虑整体的效果,每次从最小解增长,从而满足所有的情况,
double y1=(TT[1].y+TT[2].y)/2;
double x2=(TT[2].x+TT[3].x)/2;
double y2=(TT[2].y+TT[3].y)/2;
double k1=(TT[2].y-TT[1].y)/(TT[2].x-TT[1].x);
double k2=(TT[3].y-TT[2].y)/(TT[3].x-TT[2].x);
下面是5个工件的测量文件,存放顺序为
( , ),( , ),……,( , )
( , ),( , ),……,( , )
( , ),( , ),……,( , )
( , ),( , ),……,( , )
( , ),( , ),……,( , )
其中 表示第 个工件第 个测量数据(1 5, 1 36)。如第一个工件中 31.270, 34.290, 31.227, 36.554,……, 30.964, 31.517, 31.105, 32.743。
第一个工件
31.270
34.290
31.227
36.554
30.660
38.205
30.276
39.375
29.134
40.928
27.808
42.317
26.078
43.503
24.928
43.922
22.922
44.478
21.188
44.713
19.454
44.459
18.096
44.126
16.016
.
但在这里为了简化模型,我们忽略表面粗糙度对本题的影响。同时假设所给数据相邻两点之间的轮廓曲线以这两点为极点,因此在分析中只针对给出的点作判定,而对在点与点连线过程中有可能出现的超出范围的情况直接不作考虑。
根据所给要求,要求工件半径在10mm+0.1mm范围内为正品。而为了解决这个问题,主要是确定工件的圆心位置,将所给的36个点到圆心的距离计算出来,或直接计算所给点构成的圆的半径,与题目所提供的范围比较就可以判断工件是否合格。
模型三中我们利用最小圆覆盖问题来检验正次品,首先以两点的距离为直径画一个圆,使这个圆尽可能包含36个点,求出半径最小的圆即为最小圆。如果此圆包含了所有的点,那么它就是所求的解,如果不能包含就说明有三点及三点在这个圆上。根据三点确定一个圆,只要枚举出所有的三点所确定的圆,再找出所有成立的圆中半径最小的圆,比较此圆半径与所规定的半径范围即可知是否为正品。
Rx=((x2/k2-x1/k1)+(y2-y1))/(1/k2-1/k1);
Ry=-(Rx-x1)/k1+y1;
}
bool judge()
{
for(int i=1;i<=N;i++)
{
double ans=Jisuan(i);
if(ans<9.9 || ans>10.1)
{
//printf("第%d个点 与虚拟的圆心 距离 不符合, 该距离:%.2lf\n",i,ans);
double t2=(TT[i].y-Ry)*(TT[i].y-Ry);
return sqrt(t1+t2);
}
void input()
{
for(int i=1;i<=N;i++)
{
scanf("%lf%lf",&TT[i].x,&TT[i].y);
}
}
void Rinit()
{
double x1=(TT[1].x+TT[2].x)/2;
圆形工件正次品检验模型
摘要
随着科学技术的进步和社会的发展,人们对机械产品的质量和检查方法提出了更高的要求。工件的质量包括尺寸、形状、材质以及表面状况等方面,其中尺寸是评价工件质量的一个重要指标。本文致力于研究检查工件的尺寸的问题,工件的尺寸可以影响到机器的质量,进而影响到生产质量。在生活中工件分为很多中类型,此次我们致力于研究圆形工件的正次品的检查,建立了检查圆形工件的数学模型,设计了程序来帮助检查,这会具有一定的应用性。
4.假设所给数据相邻两点之间的轮廓曲线以这两点为极点。
5.假设每个工件的数据选择是随机独立具有代表性的。
6.假设测量的工具误差可忽略。
五.
运用Matlab以及Excel做出的五个工件的图形如下所示:
第一个工件
第二个工件
第三个工件
第四个工件
第五个工件
模型一
1.建立:
对每一个工件i,得到了其上得36个数据,这36个数据反映在直角坐标系中是36个离散的点,根据距离公式 ,可将这36个数据到圆心O 的距离求出来,根据圆的定义可知,若求出来的距离 ,这个工件即为正品。
43.195
14.963
42.265
13.513
40.770
12.954
39.891
11.957
38.060
11.578
36.186
11.420
34.289
11.555
32.551
12.162
30.919
12.732
29.450
13.963
27.973
14.615
27.141
16.495
25.853
[2]严喜祖,宋中民,毕春加,《数学建模及其实验》,科学出版社,2009.08
[3]杨尚俊,《数学建模简明教程》,安徽大学出版社,2006.03
[4]姜启源,谢金星,叶俊,《数学模型》(第三版),高等教育出版社,2003.08
[5]董培仁,一个最优化问题的多角度探求,数学通报[J],2005年2期
[6]袁震东,数学建模与中学数学,数学教学[J],2005年1期
因此,在此题中,我们首先求出36个点中其中两点间的最长距离,以这两点的距离为直径画一个圆,如果包含了所有的点,那么这就是所求的解;如果不能包含就说明有三点及三点在这个圆上,根据三点确定一个圆,只要枚举出所有的三点所确定的圆,再比较所有成立的圆的半径最小的圆就是所求的,在将这个半径与(9.9,10.1)这个范围比较,若再这之间就是正品,否则则是次品。
*/
#include<iostream>
#include<cmath>
using namespace std;
const int N=36;
double Rx,Ry;
struct Point
{
double x,y;
};
Point TT[40];
double Jisuan(int i)
{
double t1=(TT[i].x-Rx)*(TT[i].x-Rx);
而圆形工件的圆心O 可由定理圆的弦的中垂线是经过圆心求出。任取3个点,取其中2个点,根据这2个点的横纵坐标 可求出这2个点的所确定的直线的斜率 ,这2个点的中点为 ,这样可求出这条弦的中垂线为 ,另取2点 ,同理求出 ,其中垂线为 ,联立这2条中垂线可得到一个交点 ,y代入公式即可求出,交点即为圆心O 。
以上为我们此次所想的三个检查圆形工件正次品的方法。
关键词:圆形工件 平面距离 枚举模拟圆心 最小圆覆盖
一.
某种工件为圆形,半径为10mm 0.1mm,超出此范围即为次品。测量仪器自动在每个工件的圆周上测量36个数据。假定测量出的二维数据( , )是足够精确的,要求建立一个合理的检验正/次品的模型,对每个工件的36个数据进行计算后给出判断。
在检验圆形工件正次品的问题上,我们想到了三个模型。
模型一中我们利用圆心到点的距离公式,计算所得的距离是在一个范围之内()即为正品。首先我们任取3个点,选取其中2点做两条不同直线,这两条直线的中垂线的交点即为模拟圆心。然后利用圆心到这36个点的距离与半径比较反过来检验,超出范围的即为次品。
模型二中我们先在规定范围内枚举出模拟圆心,然后根据距离公式与半径比较,就可以判断出正次品。
[7]王玉娇,几何中分类思想的运用
[8]齐行行,米琦,叶颖樑渤海大学学报(自然科学版) 第25卷第1期 2004年3月
九.
模型一程序代码:
/*
思想:36个测量数据 反映到平面上 是 36个离散的点
1.先任取 3个点 2条中垂线 交点 即为 模拟圆心
2.利用平面直角坐标系 的距离公式 36个点 到圆心的距离 与 半径范围 相比较 来反推 是否符合要求.
17.972
25.318
19.971
24.728
21.712
24.648
23.274
24.806
24.441
25.166
26.647
26.181
27.860
27.163
28.9817
30.964
31.517
31.105
32.743
(第二至第五个工件数据略)
二.
工件半径的误差主要由制造工艺造成.工件不合格的原因可能是半径过大或过小,或是表面粗糙度过大。
对于最小圆覆盖,就是用n个圆去覆盖一个圆,或者用n个圆去覆盖正方形、长方形,等等.例如用n个大小不同的圆去覆盖一个圆,我们有如下证明:假设被覆盖的圆为母圆,半径设为1。假定要去覆盖母圆的子圆的半径为r。
1n=1时,这时只有一个子圆,显然r =1。
2n=2时,这时有两个子圆覆盖母圆,那么必有一个子圆至少覆盖母圆的 圆周,这时母圆的直径是子圆的一条弦,所以2r 2。因此r =1。
算法思想较好,效率也比较高。
缺点:代码相对复杂。
七.
从作图和程序运行结果可得,圆并非很好的模型,不能解决一些非规则的工件,
所以我们可以考虑从其他图形着手,比如:椭圆等。如下图:
八.
[1]圆形工件正次品的检验模型
/view/3163faf04693daef5ef73dc9.html
return false;
}
}
return true;
}
void run()
{
input();
Rinit();
cout<<Rx<<" "<<Ry<<endl;
if(judge()) printf("YES 满足符合条件 该零件合格\n");
else printf("NO 不满足符合条件 该零件不合格\n");
三.
符号
说明
表示工件的序号
表示工件上点的序号
表示第 个工件上第 个点的横坐标
表示第 个工件上第 个点的纵坐标
表示第 个工件的半径
表示第 个工件上的第 个点
四.
1.假设工件上的某点与理想圆的误差服从正态分布N(μ,σ2)。
2.假设工件表面不会出现非常剧烈的起伏,不会有毛刺。
3.假设工件在±1㎜线度内事光滑的。
2.求解:
第一工件
第二工件
第三工件
第四工件
第五工件
3.结果分析:
工件序号
圆心
半径
是否合格
1
(21.37,34.64)
10.09
是
2
(-42.19,17.91)
10.10
是
3
(-24.73,2.00)
10.12
否
4
(3.82,-37.19)
10.09
是
5
(17.39,6.08)
10.08
是
六.
模型一:优点:较为方便,思想简单,任取3点,取出2条中垂线,得出交点。
2.求解:
第一工件
第二工件
第三工件
第四工件
第五工件
3.结果分析:
工件序号
是否合格
1
否
2
是
3
是
4
是
5
否
模型三
1.建立:
设想一个足够大的圆,逐渐缩小这个圆,并移动这个圆,直到有两点在这个圆周上,如果这两点的连线不是这个圆的直径,那就说明还可以移动缩小这个圆,直到出现另一个点在这个圆周上,这个三个点所确定的圆就是所要求的圆。这就是模型三的思想——最小圆覆盖,若I不在1~I-1的最小圆上,则I在1~I的最小圆上。若J不在(i)+(1~j-1)的最小圆上,则j在(i)+(1~J)的最小圆上。
2.求解:
第一工件
第二工件
第三工件
第四工件
第五工件
3.结果分析:
工件序号
圆心
是否合格
1
(21.9517,35.1081)
否
2
(-41.1654,18.5773)
否
3
(-24.0207,2.38168)
否
4
(3.77397,-37.2124)
否
5
(18.284,6.54064)
否
模型二
1.建立:
首先我们要模拟一个圆心,从中筛选出 minx,miny,maxx,maxy, 减去半径的范围,确定出了圆心可能的所有可行解的矩形区域。遍历所有可行解,计算36个点到模拟圆心的距离,如果能找出1个符合所有距离小于半径的解,那么此工件为正品,否则为次品。
由以上方法依次类推,我们就可用计算机编程得到覆盖36个点的最小的圆。
缺点:数据随机性太大,不能处理,极端误差数据 ,所以圆心确定,丢失精度,导致判断结果不准。
模型二:优点:从 maxx,maxy,minx,miny 角度进行筛选,最大程度上避免了极端数据。
缺点:效率比较低下,复杂度为(n^2) 要遍历所有可行解,但每次增加的距离 0.005,不够精确,损失精度
模型三:优点:很好的考虑整体的效果,每次从最小解增长,从而满足所有的情况,
double y1=(TT[1].y+TT[2].y)/2;
double x2=(TT[2].x+TT[3].x)/2;
double y2=(TT[2].y+TT[3].y)/2;
double k1=(TT[2].y-TT[1].y)/(TT[2].x-TT[1].x);
double k2=(TT[3].y-TT[2].y)/(TT[3].x-TT[2].x);
下面是5个工件的测量文件,存放顺序为
( , ),( , ),……,( , )
( , ),( , ),……,( , )
( , ),( , ),……,( , )
( , ),( , ),……,( , )
( , ),( , ),……,( , )
其中 表示第 个工件第 个测量数据(1 5, 1 36)。如第一个工件中 31.270, 34.290, 31.227, 36.554,……, 30.964, 31.517, 31.105, 32.743。
第一个工件
31.270
34.290
31.227
36.554
30.660
38.205
30.276
39.375
29.134
40.928
27.808
42.317
26.078
43.503
24.928
43.922
22.922
44.478
21.188
44.713
19.454
44.459
18.096
44.126
16.016
.
但在这里为了简化模型,我们忽略表面粗糙度对本题的影响。同时假设所给数据相邻两点之间的轮廓曲线以这两点为极点,因此在分析中只针对给出的点作判定,而对在点与点连线过程中有可能出现的超出范围的情况直接不作考虑。
根据所给要求,要求工件半径在10mm+0.1mm范围内为正品。而为了解决这个问题,主要是确定工件的圆心位置,将所给的36个点到圆心的距离计算出来,或直接计算所给点构成的圆的半径,与题目所提供的范围比较就可以判断工件是否合格。
模型三中我们利用最小圆覆盖问题来检验正次品,首先以两点的距离为直径画一个圆,使这个圆尽可能包含36个点,求出半径最小的圆即为最小圆。如果此圆包含了所有的点,那么它就是所求的解,如果不能包含就说明有三点及三点在这个圆上。根据三点确定一个圆,只要枚举出所有的三点所确定的圆,再找出所有成立的圆中半径最小的圆,比较此圆半径与所规定的半径范围即可知是否为正品。
Rx=((x2/k2-x1/k1)+(y2-y1))/(1/k2-1/k1);
Ry=-(Rx-x1)/k1+y1;
}
bool judge()
{
for(int i=1;i<=N;i++)
{
double ans=Jisuan(i);
if(ans<9.9 || ans>10.1)
{
//printf("第%d个点 与虚拟的圆心 距离 不符合, 该距离:%.2lf\n",i,ans);
double t2=(TT[i].y-Ry)*(TT[i].y-Ry);
return sqrt(t1+t2);
}
void input()
{
for(int i=1;i<=N;i++)
{
scanf("%lf%lf",&TT[i].x,&TT[i].y);
}
}
void Rinit()
{
double x1=(TT[1].x+TT[2].x)/2;
圆形工件正次品检验模型
摘要
随着科学技术的进步和社会的发展,人们对机械产品的质量和检查方法提出了更高的要求。工件的质量包括尺寸、形状、材质以及表面状况等方面,其中尺寸是评价工件质量的一个重要指标。本文致力于研究检查工件的尺寸的问题,工件的尺寸可以影响到机器的质量,进而影响到生产质量。在生活中工件分为很多中类型,此次我们致力于研究圆形工件的正次品的检查,建立了检查圆形工件的数学模型,设计了程序来帮助检查,这会具有一定的应用性。
4.假设所给数据相邻两点之间的轮廓曲线以这两点为极点。
5.假设每个工件的数据选择是随机独立具有代表性的。
6.假设测量的工具误差可忽略。
五.
运用Matlab以及Excel做出的五个工件的图形如下所示:
第一个工件
第二个工件
第三个工件
第四个工件
第五个工件
模型一
1.建立:
对每一个工件i,得到了其上得36个数据,这36个数据反映在直角坐标系中是36个离散的点,根据距离公式 ,可将这36个数据到圆心O 的距离求出来,根据圆的定义可知,若求出来的距离 ,这个工件即为正品。
43.195
14.963
42.265
13.513
40.770
12.954
39.891
11.957
38.060
11.578
36.186
11.420
34.289
11.555
32.551
12.162
30.919
12.732
29.450
13.963
27.973
14.615
27.141
16.495
25.853
[2]严喜祖,宋中民,毕春加,《数学建模及其实验》,科学出版社,2009.08
[3]杨尚俊,《数学建模简明教程》,安徽大学出版社,2006.03
[4]姜启源,谢金星,叶俊,《数学模型》(第三版),高等教育出版社,2003.08
[5]董培仁,一个最优化问题的多角度探求,数学通报[J],2005年2期
[6]袁震东,数学建模与中学数学,数学教学[J],2005年1期
因此,在此题中,我们首先求出36个点中其中两点间的最长距离,以这两点的距离为直径画一个圆,如果包含了所有的点,那么这就是所求的解;如果不能包含就说明有三点及三点在这个圆上,根据三点确定一个圆,只要枚举出所有的三点所确定的圆,再比较所有成立的圆的半径最小的圆就是所求的,在将这个半径与(9.9,10.1)这个范围比较,若再这之间就是正品,否则则是次品。
*/
#include<iostream>
#include<cmath>
using namespace std;
const int N=36;
double Rx,Ry;
struct Point
{
double x,y;
};
Point TT[40];
double Jisuan(int i)
{
double t1=(TT[i].x-Rx)*(TT[i].x-Rx);
而圆形工件的圆心O 可由定理圆的弦的中垂线是经过圆心求出。任取3个点,取其中2个点,根据这2个点的横纵坐标 可求出这2个点的所确定的直线的斜率 ,这2个点的中点为 ,这样可求出这条弦的中垂线为 ,另取2点 ,同理求出 ,其中垂线为 ,联立这2条中垂线可得到一个交点 ,y代入公式即可求出,交点即为圆心O 。
以上为我们此次所想的三个检查圆形工件正次品的方法。
关键词:圆形工件 平面距离 枚举模拟圆心 最小圆覆盖
一.
某种工件为圆形,半径为10mm 0.1mm,超出此范围即为次品。测量仪器自动在每个工件的圆周上测量36个数据。假定测量出的二维数据( , )是足够精确的,要求建立一个合理的检验正/次品的模型,对每个工件的36个数据进行计算后给出判断。
在检验圆形工件正次品的问题上,我们想到了三个模型。
模型一中我们利用圆心到点的距离公式,计算所得的距离是在一个范围之内()即为正品。首先我们任取3个点,选取其中2点做两条不同直线,这两条直线的中垂线的交点即为模拟圆心。然后利用圆心到这36个点的距离与半径比较反过来检验,超出范围的即为次品。
模型二中我们先在规定范围内枚举出模拟圆心,然后根据距离公式与半径比较,就可以判断出正次品。
[7]王玉娇,几何中分类思想的运用
[8]齐行行,米琦,叶颖樑渤海大学学报(自然科学版) 第25卷第1期 2004年3月
九.
模型一程序代码:
/*
思想:36个测量数据 反映到平面上 是 36个离散的点
1.先任取 3个点 2条中垂线 交点 即为 模拟圆心
2.利用平面直角坐标系 的距离公式 36个点 到圆心的距离 与 半径范围 相比较 来反推 是否符合要求.
17.972
25.318
19.971
24.728
21.712
24.648
23.274
24.806
24.441
25.166
26.647
26.181
27.860
27.163
28.9817
30.964
31.517
31.105
32.743
(第二至第五个工件数据略)
二.
工件半径的误差主要由制造工艺造成.工件不合格的原因可能是半径过大或过小,或是表面粗糙度过大。
对于最小圆覆盖,就是用n个圆去覆盖一个圆,或者用n个圆去覆盖正方形、长方形,等等.例如用n个大小不同的圆去覆盖一个圆,我们有如下证明:假设被覆盖的圆为母圆,半径设为1。假定要去覆盖母圆的子圆的半径为r。
1n=1时,这时只有一个子圆,显然r =1。
2n=2时,这时有两个子圆覆盖母圆,那么必有一个子圆至少覆盖母圆的 圆周,这时母圆的直径是子圆的一条弦,所以2r 2。因此r =1。
算法思想较好,效率也比较高。
缺点:代码相对复杂。
七.
从作图和程序运行结果可得,圆并非很好的模型,不能解决一些非规则的工件,
所以我们可以考虑从其他图形着手,比如:椭圆等。如下图:
八.
[1]圆形工件正次品的检验模型
/view/3163faf04693daef5ef73dc9.html
return false;
}
}
return true;
}
void run()
{
input();
Rinit();
cout<<Rx<<" "<<Ry<<endl;
if(judge()) printf("YES 满足符合条件 该零件合格\n");
else printf("NO 不满足符合条件 该零件不合格\n");
三.
符号
说明
表示工件的序号
表示工件上点的序号
表示第 个工件上第 个点的横坐标
表示第 个工件上第 个点的纵坐标
表示第 个工件的半径
表示第 个工件上的第 个点
四.
1.假设工件上的某点与理想圆的误差服从正态分布N(μ,σ2)。
2.假设工件表面不会出现非常剧烈的起伏,不会有毛刺。
3.假设工件在±1㎜线度内事光滑的。
2.求解:
第一工件
第二工件
第三工件
第四工件
第五工件
3.结果分析:
工件序号
圆心
半径
是否合格
1
(21.37,34.64)
10.09
是
2
(-42.19,17.91)
10.10
是
3
(-24.73,2.00)
10.12
否
4
(3.82,-37.19)
10.09
是
5
(17.39,6.08)
10.08
是
六.
模型一:优点:较为方便,思想简单,任取3点,取出2条中垂线,得出交点。
2.求解:
第一工件
第二工件
第三工件
第四工件
第五工件
3.结果分析:
工件序号
是否合格
1
否
2
是
3
是
4
是
5
否
模型三
1.建立:
设想一个足够大的圆,逐渐缩小这个圆,并移动这个圆,直到有两点在这个圆周上,如果这两点的连线不是这个圆的直径,那就说明还可以移动缩小这个圆,直到出现另一个点在这个圆周上,这个三个点所确定的圆就是所要求的圆。这就是模型三的思想——最小圆覆盖,若I不在1~I-1的最小圆上,则I在1~I的最小圆上。若J不在(i)+(1~j-1)的最小圆上,则j在(i)+(1~J)的最小圆上。
2.求解:
第一工件
第二工件
第三工件
第四工件
第五工件
3.结果分析:
工件序号
圆心
是否合格
1
(21.9517,35.1081)
否
2
(-41.1654,18.5773)
否
3
(-24.0207,2.38168)
否
4
(3.77397,-37.2124)
否
5
(18.284,6.54064)
否
模型二
1.建立:
首先我们要模拟一个圆心,从中筛选出 minx,miny,maxx,maxy, 减去半径的范围,确定出了圆心可能的所有可行解的矩形区域。遍历所有可行解,计算36个点到模拟圆心的距离,如果能找出1个符合所有距离小于半径的解,那么此工件为正品,否则为次品。