圓形工件正次品檢驗數(shù)學模型._第1頁
圓形工件正次品檢驗數(shù)學模型._第2頁
圓形工件正次品檢驗數(shù)學模型._第3頁
圓形工件正次品檢驗數(shù)學模型._第4頁
圓形工件正次品檢驗數(shù)學模型._第5頁
已閱讀5頁,還剩22頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、圓形工件正次品檢驗?zāi)P驼S著科學技術(shù)的進步和社會的發(fā)展,人們對機械產(chǎn)品的質(zhì)量和檢查方法提出了更高的要求。工件的質(zhì)量包括尺寸、形狀、材質(zhì)以及表面狀況等方面,其中尺寸是評價工件質(zhì)量的一個重要指標。本文致力于研究檢查工件的尺寸的問題,工件的尺寸可以影響到機器的質(zhì)量,進而影響到生產(chǎn)質(zhì)量。在生活中工件分為很多中類型,此次我們致力于研究圓形工件的正次品的檢查,建立了檢查圓形工件的數(shù)學模型,設(shè)計了程序來幫助檢查,這會具有一定的應(yīng)用性。在檢驗圓形工件正次品的問題上,我們想到了三個模型。模型一中我們利用圓心到點的距離公式,計算所得的距離是在一個范圍之內(nèi)()即為正品。首先我們?nèi)稳?個點,選取其中2點做兩條不同直

2、線,這兩條直線的中垂線的交點即為模擬圓心。然后利用圓心到這36個點的距離與半徑比較反過來檢驗,超出范圍的即為次品。模型二中我們先在規(guī)定范圍內(nèi)枚舉出模擬圓心,然后根據(jù)距離公式與半徑比較,就可以判斷出正次品。模型三中我們利用最小圓覆蓋問題來檢驗正次品,首先以兩點的距離為直徑畫一個圓,使這個圓盡可能包含36個點,求出半徑最小的圓即為最小圓。如果此圓包含了所有的點,那么它就是所求的解,如果不能包含就說明有三點及三點在這個圓上。根據(jù)三點確定一個圓,只要枚舉出所有的三點所確定的圓,再找出所有成立的圓中半徑最小的圓,比較此圓半徑與所規(guī)定的半徑范圍即可知是否為正品。以上為我們此次所想的三個檢查圓形工件正次品的

3、方法。關(guān)鍵詞:圓形工件 平面距離 枚舉模擬圓心 最小圓覆蓋目錄一.問題重述1二.問題分析1三.符號說明2四.模型假設(shè)3五.模型建立求解及結(jié)果分析3六.模型優(yōu)缺點14七.改進方向14八.參考文獻15九.附錄16一. 問題重述某種工件為圓形, 半徑為10mm0.1mm, 超出此范圍即為次品。 測量儀器自動在每個工件的圓周上測量36個數(shù)據(jù)。假定測量出的二維數(shù)據(jù) (, ) 是足夠精確的,要求建立一個合理的檢驗正/次品的模型,對每個工件的36個數(shù)據(jù)進行計算后給出判斷。下面是5個工件的測量文件, 存放順序為(, ),(, ),(, )(, ),(, ),(, )(, ),(, ),(, )(, ),(,

4、),(, )(, ),(, ),(, )其中表示第個工件第個測量數(shù)據(jù) (15, 136)。如第一個工件中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.20530276 39.375 29.134 40.928 27.808 42.31726.078 43.503 24928 43.922 22.922 44.47821.188 44.713 19.454 44.459 18.096 44.12616.016 43.195 14

5、.963 42.265 13.513 40.77012.954 39.891 11.957 38.060 11.578 36.18611.420 34.289 11.555 32.551 12.162 30.91912.732 29.450 13.963 27.973 14.615 27.14116.495 25.853 17.972 25.318 19.971 24.72821.712 24.648 23.274 24.806 24.441 25.16626.647 26.181 27.860 27.163 28.981 28.24430.202 29.937 30.964 31.517 3

6、1.105 32.743(第二至第五個工件數(shù)據(jù)略)二. 問題分析工件半徑的誤差主要由制造工藝造成.工件不合格的原因可能是半徑過大或過小,或是表面粗糙度過大。. 但在這里為了簡化模型,我們忽略表面粗糙度對本題的影響。同時假設(shè)所給數(shù)據(jù)相鄰兩點之間的輪廓曲線以這兩點為極點,因此在分析中只針對給出的點作判定,而對在點與點連線過程中有可能出現(xiàn)的超出范圍的情況直接不作考慮。根據(jù)所給要求,要求工件半徑在10mm +0.1mm范圍內(nèi)為正品。而為了解決這個問題,主要是確定工件的圓心位置,將所給的36個點到圓心的距離計算出來,或直接計算所給點構(gòu)成的圓的半徑,與題目所提供的范圍比較就可以判斷工件是否合格。三. 符號

7、說明符號說明表示工件的序號表示工件上點的序號表示第個工件上第個點的橫坐標表示第個工件上第個點的縱坐標表示第個工件的半徑表示第個工件上的第個點四. 模型假設(shè)1. 假設(shè)工件上的某點與理想圓的誤差服從正態(tài)分布N(,2)。2. 假設(shè)工件表面不會出現(xiàn)非常劇烈的起伏,不會有毛刺。3. 假設(shè)工件在±1線度內(nèi)事光滑的。4. 假設(shè)所給數(shù)據(jù)相鄰兩點之間的輪廓曲線以這兩點為極點。5. 假設(shè)每個工件的數(shù)據(jù)選擇是隨機獨立具有代表性的。6. 假設(shè)測量的工具誤差可忽略。五. 模型建立求解及結(jié)果分析運用Matlab以及Excel做出的五個工件的圖形如下所示:第一個工件第二個工件第三個工件第四個工件第五個工件模型一1

8、 建立:對每一個工件i,得到了其上得36個數(shù)據(jù),這36個數(shù)據(jù)反映在直角坐標系中是36個離散的點,根據(jù)距離公式,可將這36個數(shù)據(jù)到圓心O的距離求出來,根據(jù)圓的定義可知,若求出來的距離,這個工件即為正品。而圓形工件的圓心O可由定理圓的弦的中垂線是經(jīng)過圓心求出。任取3個點,取其中2個點,根據(jù)這2個點的橫縱坐標可求出這2個點的所確定的直線的斜率,這2個點的中點為,這樣可求出這條弦的中垂線為,另取2點,同理求出,其中垂線為,聯(lián)立這2條中垂線可得到一個交點,y代入公式即可求出,交點即為圓心O。2 求解:第一工件第二工件第三工件第四工件第五工件3 結(jié)果分析:工件序號圓心是否合格1(21.9517,35.10

9、81)否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, 減去半徑的范圍,確定出了圓心可能的所有可行解的矩形區(qū)域。遍歷所有可行解,計算36個點到模擬圓心的距離,如果能找出1個符合所有距離小于半徑的解,那么此工件為正品,否則為次品。2. 求解:第一工件第二工件第三工件第四工件第五工件3. 結(jié)果分析:工件序號是否合格1否2是3是4是5否模型三1. 建立:設(shè)想一個足夠大的圓,逐漸縮小這個圓,并移動這個

10、圓,直到有兩點在這個圓周上,如果這兩點的連線不是這個圓的直徑,那就說明還可以移動縮小這個圓,直到出現(xiàn)另一個點在這個圓周上,這個三個點所確定的圓就是所要求的圓。這就是模型三的思想最小圓覆蓋,若I不在1I-1的最小圓上,則I在1I的最小圓上。若J不在(i)+(1j-1)的最小圓上,則j在(i)+(1J)的最小圓上。對于最小圓覆蓋,就是用n個圓去覆蓋一個圓,或者用n個圓去覆蓋正方形、長方形,等等.例如用n個大小不同的圓去覆蓋一個圓,我們有如下證明: 假設(shè)被覆蓋的圓為母圓,半徑設(shè)為1。假定要去覆蓋母圓的子圓的半徑為r。 n=1時,這時只有一個子圓,顯然r=1。 n=2時,這時有兩個子圓覆蓋母圓,那么必

11、有一個子圓至少覆蓋母圓的圓周,這時母圓的直徑是子圓的一條弦,所以2r2。因此r=1。 n=3時,這時有三個子圓覆蓋母圓,則必定要覆蓋圓周,故至少有一個子圓要覆蓋至少的圓周,因此半徑至少為,但可找到r=的三子圓覆蓋。(如下圖)。將母圓圓周三等分,得A,B,C三點,分別以AB,BC,AC中點為圓心,弦長為半徑分別畫圓即得。由以上方法依次類推,我們就可用計算機編程得到覆蓋36個點的最小的圓。 因此,在此題中,我們首先求出36個點中其中兩點間的最長距離,以這兩點的距離為直徑畫一個圓,如果包含了所有的點,那么這就是所求的解;如果不能包含就說明有三點及三點在這個圓上,根據(jù)三點確定一個圓,只要枚舉出所有的三

12、點所確定的圓,再比較所有成立的圓的半徑最小的圓就是所求的,在將這個半徑與(9.9,10.1)這個范圍比較,若再這之間就是正品,否則則是次品。2. 求解:第一工件第二工件第三工件第四工件第五工件3. 結(jié)果分析:工件序號圓心半徑是否合格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是六. 模型優(yōu)缺點模型一:優(yōu)點:較為方便,思想簡單,任取3點,取出2條中垂線,得出交點。 缺點:數(shù)據(jù)隨機性太大,不能處理,極端誤差數(shù)據(jù) ,所以圓心確定,丟失精度,導(dǎo)致判斷

13、結(jié)果不準。模型二:優(yōu)點:從 maxx,maxy,minx,miny 角度進行篩選,最大程度上避免了極端數(shù)據(jù)。 缺點:效率比較低下,復(fù)雜度為(n2) 要遍歷所有可行解,但每次增加的距離 0.005,不夠精確,損失精度模型三:優(yōu)點:很好的考慮整體的效果,每次從最小解增長,從而滿足所有的情況, 算法思想較好,效率也比較高。 缺點:代碼相對復(fù)雜。七. 改進方向從作圖和程序運行結(jié)果可得,圓并非很好的模型,不能解決一些非規(guī)則的工件,所以我們可以考慮從其他圖形著手,比如:橢圓等。如下圖:八. 參考文獻1圓形工件正次品的檢驗?zāi)P?嚴喜祖,宋中民,畢春加,數(shù)學建模及其實驗,科學出版社,2009.083楊尚俊,數(shù)

14、學建模簡明教程,安徽大學出版社,2006.034姜啟源,謝金星,葉俊,數(shù)學模型(第三版),高等教育出版社,2003.085 董培仁,一個最優(yōu)化問題的多角度探求,數(shù)學通報J,2005年2期6 袁震東,數(shù)學建模與中學數(shù)學,數(shù)學教學J,2005年1期7 王玉嬌,幾何中分類思想的運用8 齊行行,米琦,葉穎樑渤海大學學報(自然科學版) 第25卷第1期 2004年3月九. 附錄模型一程序代碼:/*思想:36個測量數(shù)據(jù) 反映到平面上 是 36個離散的點 1.先任取 3個點 2條中垂線 交點 即為 模擬圓心2.利用平面直角坐標系 的距離公式 36個點 到圓心的距離 與 半徑范圍 相比較 來反推 是否符合要求.

15、*/#include<iostream>#include<cmath>using namespace std;const int N=36;double Rx,Ry;struct Pointdouble x,y;Point TT40;double Jisuan(int i)double t1=(TTi.x-Rx)*(TTi.x-Rx);double t2=(TTi.y-Ry)*(TTi.y-Ry);return sqrt(t1+t2);void input()for(int i=1;i<=N;i+)scanf("%lf%lf",&TTi

16、.x,&TTi.y);void Rinit()double x1=(TT1.x+TT2.x)/2;double y1=(TT1.y+TT2.y)/2;double x2=(TT2.x+TT3.x)/2;double y2=(TT2.y+TT3.y)/2;double k1=(TT2.y-TT1.y)/(TT2.x-TT1.x);double k2=(TT3.y-TT2.y)/(TT3.x-TT2.x);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+)dou

17、ble ans=Jisuan(i);if(ans<9.9 | ans>10.1) /printf("第%d個點 與虛擬的圓心 距離 不符合, 該距離:%.2lfn",i,ans);return false;return true;void run()input();Rinit();cout<<Rx<<" "<<Ry<<endl;if(judge() printf("YES 滿足符合條件 該零件合格n");else printf("NO 不滿足符合條件 該零件不合格n

18、");int main()int T;cin>>T;while(T-) run();return 0;模型二程序代碼:/*思想:36個測量數(shù)據(jù) 反映到平面上 是 36個離散的點 1.先規(guī)定的范圍內(nèi)枚舉 模擬圓心 2.利用平面直角坐標系 的距離公式 36個點 到圓心的距離 與 半徑范圍 相比較 來反推 是否符合要求.*/#include<iostream>#include<cmath>using namespace std;const int N=36;double Rx,Ry;double minx,miny;double maxx,maxy;st

19、ruct Pointdouble x,y;Point TT40;#define max(a,b)(a>b?a:b)#define min(a,b)(a<b?a:b)double Jisuan(int i)double t1=(TTi.x-Rx)*(TTi.x-Rx);double t2=(TTi.y-Ry)*(TTi.y-Ry);return sqrt(t1+t2);void input()for(int i=1;i<=N;i+)scanf("%lf%lf",&TTi.x,&TTi.y);void init()minx=TT1.x;maxx

20、=TT1.x;miny=TT1.y;maxy=TT1.y;for(int i=2;i<=N;i+)minx=min(minx,TTi.x);miny=min(miny,TTi.y);maxx=max(maxx,TTi.x);maxy=max(maxy,TTi.y);bool judge()double X,Y;for(X=(maxx-10.1);X<=(minx+10.1);X+=0.005)for(Y=(maxy-10.1);Y<=(minx+10.1);Y+=0.005)for(int i=1;i<=N;i+)Rx=X;Ry=Y;double ans=Jisuan(

21、i);if(ans<9.9 | ans>10.1) break;if(i=N) return true;return false;void run()input();init();if(judge() printf("YES 滿足符合條件 該零件合格n");else printf("NO 不滿足符合條件 該零件不合格n");int main()int T;cin>>T;while(T-) run();return 0;模型三程序代碼:/* 算法思想: 最小圓覆蓋問題 */*不斷添加圓,維護最小圓。如果添加的點i在圓內(nèi),不動,否則:

22、問題轉(zhuǎn)化為求1I的最小圓:求出1與I的最小圓,并且掃描j=2I-1,維護(1)+(i)+(2j)的最小圓,如果找到J不在最小圓內(nèi),問題轉(zhuǎn)化為:求(1J)+(i)的最小圓。求出I與J的最小圓,繼續(xù)掃描K=1j-1,找到第一個不在最小圓內(nèi)的,求出I J K三者交點即可,此時找到了(1j)+(i)的最小圓,可以回到上一步(三點定一圓,所以1J-1一定都在求出的最小圓上)。定理:若I不在1I-1的最小圓上,則I在1I的最小圓上。若J不在(i)+(1j-1)的最小圓上,則j在(i)+(1J)的最小圓上。證明:最小圓必定是可以通過不斷放大半徑,直到所有以任意點為圓心,半徑為半徑的圓存在交點,此時的半徑就是

23、最小圓。所以上述定理可以通過這個思想得到。這個做法復(fù)雜度是O(n)的,當加入圓的順序隨機時,因為三點定一圓,所以不在圓內(nèi)概率是3/i,求出期望可得是On.*/#include<iostream>#include<cmath>#include<cstdio>using namespace std;const int N=40;struct Point double x,y; ; Point aN,d; double r;double distance(Point p1, Point p2) return (sqrt(p1.x-p2.x)*(p1.x -p2.x

24、)+(p1.y-p2.y)*(p1.y-p2.y); double multiply(Point p1,Point p2, Point p0) return (p1.x-p0.x)*(p2.y-p0.y)-(p2.x-p0.x)*(p1.y-p0.y); void MiniDis(Point p,Point q,int n) /the min distance between two points!d.x=(p.x+q.x)/2.0;d.y=(p.y+q.y)/2.0;r=distance(p,q)/2;int k;double c1,c2,t1,t2,t3;for(k=1;k<=n;k

25、+)if(distance(d,ak)<=r) continue;if(multiply(p,q,ak)!=0.0)c1=(p.x*p.x+p.y*p.y-q.x*q.x-q.y*q.y)/2.0;c2=(p.x*p.x+p.y*p.y-ak.x*ak.x-ak.y*ak.y)/2.0;d.x=(c1*(p.y-ak.y)-c2*(p.y-q.y)/(p.x-q.x)*(p.y-ak.y)-(p.x-ak.x)*(p.y-q.y);d.y=(c1*(p.x-ak.x)-c2*(p.x-q.x)/(p.y-q.y)*(p.x-ak.x)-(p.y-ak.y)*(p.x-q.x);r=dis

26、tance(d,ak);elset1=distance(p,q);t2=distance(q,ak);t3=distance(p,ak);if(t1>=t2 && t1>=t3)d.x=(p.x+q.x)/2.0; d.y=(p.y+q.y)/2.0;r=distance(p,q)/2.0;else if(t2>=t1 && t2>=t3)d.x=(ak.x+q.x)/2.0;d.y=(ak.y+q.y)/2.0;r=distance(ak,q)/2.0;else d.x=(ak.x+p.x)/2.0;d.y=(ak.y+p.y)/2.0

27、;r=distance(ak,p)/2.0;void MiniDiscWithPoint(Point pi,int size) /第三個點 與 要掃描的范圍d.x=(pi.x+a1.x)/2.0;d.y=(pi.y+a1.y)/2.0;r=distance(pi,a1)/2.0;for(int j=2;j<=size;j+)if(distance(d,aj)<=r) continue;elseMiniDis(pi,aj,j-1);void input()for(int i=1;i<=N;i+)scanf("%lf%lf",&ai.x,&ai

28、.y);void run()input(); /printf("%.2lf %.2lf 0.00n",a1.x,a1.y); continue; -> only one Point!/此模型無需考慮 因為 已知 每組測試 36個點!r=distance(a1,a2)/2.0; /1,2 兩點的距離d.x=(a1.x+a2.x)/2.0;d.y=(a1.y+a2.y)/2.0;for(int i=3;i<=N;i+)if(distance(d,ai)<=r) continue; /如果在 1,2 構(gòu)成的圓內(nèi)elseMiniDiscWithPoint(ai,i

29、-1);printf("最小圓覆蓋問題 算法完成!n");printf("最小圓的圓心坐標 X: %.2lf Y: %.2lf R: %.2lfn",d.x,d.y,r);if(r>=9.9 && r<=10.1) printf("該零件為合格!n");else printf("該零件為不合格!n");int main()int T;cin>>T;while(T-) run();return 0;Matlab程序代碼:x=31.270 30.276 26.078 21.188 16.016 12.954 11.420 12.732 16.495 21.712&#

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論