《数学建模论文材料(1999B题).doc》由会员分享,可在线阅读,更多相关《数学建模论文材料(1999B题).doc(17页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、#+数学建模论文(1999年 B题) #+钻井布局摘要 本文主要讨论钻井布局问题,即点重合(或近似重合)问题。利用坐标变换,我们将P点变换到网格N所在的坐标系,从而得到P点在新坐标系上的分布图。为了使分布图更加直观易读,我们引入相对坐标的概念,以相对坐标取代一般坐标。再参照P点在单位模型里的分布情况,借用考察参考正方形或圆形就能直观地判断最大可利用旧井数。问题一:我们首先在Pi所属平面建立坐标系xoy,在网格N所属平面建立坐标系xoy。用P位于单位网格内的相对坐标Pi(ai,bi)取代P位于原坐标系xoy的一般坐标Pi(ai,bi)。将各单位网格及其中的P点作为单位模型,令单位模型彼此重叠,得
2、到所有Pi在单位模型中的分布情况。具体操作时直接取Pi(ai,bi)的小数部分作为在分布图中的坐标Pi(ai,bi)。取边长为0.1单位的正方形S为参考正方形,考察Pi(ai,bi)点在单位网格中的分布情况。平移正方形S,当S中存在最多点P时,可利用旧井数达到最大,据此可得最优网格N。本题中可利用旧井数最多为4个,它们是:(1.41,3.50),(3.37,3.51),(3.40,5,50),(8.38,4.50)。满足该条件的网格数不唯一,我们选择该正方形S的几何中心(0.4,0.5)作为新网格原点,即将原始网格右移0.4个单位,上移0.5个单位,也即按照向量(0.4,0.5)平移后得到符合
3、条件的新网格N。问题二:基于题1的模型,修正P相对坐标的变换方式、更换考察图形即可得题2的模型。由于网格N可旋转,P坐标需先进行旋转变换,角度,其范围为0度90度,即坐标左乘变换矩阵,得到Pi(ai,bi),再按照题1模型生成方式将Pi(ai,bi)化为相对坐标Pi(ai,bi),得到相应分布图。根据欧式距离的定义,采用直径为0.1的圆形作为考察图形。平移考察圆形C,当C中存在最多点P时,可利用旧井数达到最大,据此可得最优网格N。根据题设求出可利用旧井数最大为6个,它们是(0。50,2.00),(4.72,2.00),(4.72,6.24),(5.43,4.10),(7.57,2.01),(8
4、.98,3.41),将原始网格N按照圆形C的圆心(0.94,0.75)右移0.94个单位,上移0.75个单位,逆时针旋转44.645.6得到新的网格N均可满足条件。问题三:本题是对题2的进一步推广。经过坐标变换后,位于考察正方形或考察圆形内的P可认为与相应的结点重合。本文以Pi是否全部落入考察图形作为判定条件。根据对距离的不同定义,我们给出两个判定条件:判定条件1: 判定条件2:该判定过程可由计算机编程实现,模型使用时只需输入需判定的Pi全部坐标,由计算机处理后返回是否满足条件,若旧井可被全部利用还返回网格N的形成方法。简化模型,增加模型实用性与可操作性,尽可能将繁复的计算判定工作交由计算机处
5、理是本模型的最大优点。关键词 坐标变换;相对坐标;分布图;参考图形;单位模型重叠#+1. 问题重述勘探部门在某地区找矿。初步勘探时期已零散地在若干位置上钻井,取得了地质资料。进入系统勘探时期后,要在一个区域内按纵横等距的网格点来布置井位,进行“撒网式”全面钻探。由于钻一口井的费用很高,如果新设计的井位与原有井位重合(或相当接近),便可利用旧井的地质资料,不必打这口新井。因此,应该尽量利用旧井,少打新井,以节约钻探费用。比如钻一口新井的费用为500万元,利用旧井资料的费用为10万元,则利用一口旧井就节约费用490万元。设平面上有n个点Pi,其坐标为(ai,bi),i=1,2,n,表示已有的n个井
6、位。新布置的井位是一个正方形网格N的所有结点(所谓“正方形网格”是指每个格子都是正方形的网格;结点是指纵线和横线的交叉点)。假定每个格子的边长(井位的纵横间距)都是1 单位(比如100米)。整个网格是可以在平面上任意移动的。若一个已知点Pi与某个网格结点Xi的距离不超过给定误差(=0.05单位),则认为Pi处的旧井资料可以利用,不必在结点Xi处打新井。为进行辅助决策,勘探部门要求我们研究如下问题: 1) 假定网格的横向和纵向是固定的(比如东西向和南北向),并规定两点间的距离为其横向距离(横坐标之差绝对值)及纵向距离(纵坐标之差绝对值)的最大值。在平面上平行移动网格N,使可利用的旧井数尽可能大。
7、试提供数值计算方法,并对下面的数值例子用计算机进行计算。 2) 在欧氏距离的误差意义下,考虑网格的横向和纵向不固定(可以旋转)的情形,给出算法及计算结果。 3) 如果有n口旧井,给出判定这些井均可利用的条件和算法(你可以任意选定一种距离)。 数值例子 n =12个点的坐标如下表所示: i123456789101112ai0.501.413.003.373.404.724.725.437.578.388.989.50bi2.003.501.503.515.502.006.244.102.014.503.410.802. 模型假设1) 已有的旧井位两两不靠近,确保网格位置确定后不会出现一个结点有两
8、口旧井与之重合的情况;2) 系统勘探时期,钻井位置的选择具有随机性,即任意钻井方案都是等可能的;3) 任意符合要求的钻井位置均是可实现的,不考虑其它现实性因素的影响。3. 符号说明1) 点集Pi :表示已有点(即旧井);2) Xi :网格结点;4. 问题分析由问题重述可知,钻井布局问题可简化为定点Pi与动点Xi或动点Pi与定点Xi在一定条件下重合(或近似重合)的问题。考虑到Pi点分布不规则,且相对点集X而言数量固定,在实际情况中又多为已知条件,而Xi点虽数量不定,但均匀分布在网格N上,各点之间相互联系,在一定前提下完全可以以其中一点X0作为参考点,准确表示点集X,继而得到网格N的具体位置。因此
9、,本文将以Pi为定点,考虑在Xi变化即网格N移动的情况下,如何获得N的最优位置,以此确定新井的布局。最优位置:能够使得尽可能多的点Xi 与点Pi重合(或近似重合)为了描述方便,我们将变换前后网格看成两个不同的坐标系,两个坐标系之间存在相互转化关系,Pi所在坐标系记为xoy,Xi所在坐标系记做x o y ,将坐标系转化问题转化为点在变化坐标系中坐标变化问题。4.1. 网格N平行移动,Pi与Xi尽可能多重合图0-1P0X0由于Xi均匀分布在网格N上,且各结点距离恒定为1,因此,可将每个单位网格作为单位模型进行讨论。在定点Pi中任取一点、在网格N中任取一单位网格,分别记作P0,N0,该单位网格左下角
10、结点记作X0,由此构成单位模型(如图4.1-1所示)。固定P0,由于网格N0可移动,易知其余结点的情况与X0类似,可视为等价,故在此仅考虑P0与X0重合的情况。图4.1-1中,阴影部分为边长为0.1单位的正方形S,其几何中心为结点X0。依题设所述,当P0落在正方形S内部时,我们可以认为P0与正方形S的几何中心X0重合,由此可得到一个以X0为原点的坐标系xoy,从而得到以坐标轴为边界的网格N。在假设Error! Reference source not found.的前提下,Pi最多在一个单位网格内,且最多与一个结点重合,各个单位网格内部情况相互独立,并不相互影响。网格N平行移动时,坐标系xoy
11、与坐标系xoy始终保持平行,由此我们考虑直接将各个网格重叠,在单位网格中观察Pi的分布情况。利用边长为0.1单位的正方形S对Pi进行考察,当有最多P点落在S内部时,Pi与Xi重合最多,由此产生的网格N可以满足“可利用的旧井数尽可能大”的条件。4.2. 网格N可旋转,Pi与Xi尽可能多重合图4.2-1P0X0由于本题中网格N可以旋转,故坐标系xoy与坐标系xoy不再始终保持平行,直接重叠各个网格不可行。为了利用题1的方法,我们可以利用坐标变换对在坐标系xoy下的Pi坐标进行处理,使其具有在坐标系xoy下的坐标,由此转化为题1的形式。由于需要采用欧氏距离,本题中将正方形S改换成圆形C即可,其圆心为
12、X0,直径为0.1单位(如图4.2-1)。 欧氏距离:d = sqrt(x1-x2)2+(y1-y2)2)图4.3.14.3. 判定全部Pi与Xi重合由以上分析可知,当单位方格中的Pi全体落入正方形S或圆形C时,可认为全部Pi与图形的几何中心X0重合,即存在网格N满足任意Pi均有与之重合的结点X。参照单位模型的形成过程就可以给出判定这些井均可利用的条件,利用编程等方法就能方便的进行判定。如图4.3.1所示,将全部P点经坐标变换后蜕化到单位模型中,用参考正方形或参考圆形考察全部P的分布情况。5. 模型准备将坐标系平面形象为由N个网格构成的模式,并根据公式将各点蜕变到一个网格中,即将其坐标进行平移
13、旋转之后落在第一个网格中再进行讨论判断,通过使之满足与题目要求等价的在该单位网格中的位置要求,从而确定网格的一个结点位置和方向就可以确定整个网格位置,由N化为“1”,将复杂多变的变得简单明了,大大简化模型。5.1. 线性变换设和分别是同一个纯量域F上的维向量空间和维向量空间;设和分别是和的基。我们可以分别用同构和把和中的向量表示成F上的元组和元组。一个线性变换是一个函数,使得对于任意纯量和以及向量和,都有.一个矩阵可以用下述方式对应一个线性变换:向量当且仅当,这时就称矩阵A表示线性变换T(关于基和);表示矩阵A与基的选择有关。5.2. 旋转变换简称旋转.欧氏几何中的一种重要变换.即在欧氏平面上
14、(欧氏空间中),让每一点P绕一固定点(固定轴线)旋转一个定角,变成另一点P,如此产生的变换称为平面上(空间中)的旋转变换.此固定点(固定直线)称为旋转中心(旋转轴),该定角称为旋转角.旋转是第一种正交变换. 假设初始点中心点矩阵(表示转置,为从到的旋转角差值)。那么证明: 设圆心为,半径为的圆C为:,则P点位于圆上,设向量与x轴夹角是;另设一点P在圆上,且向量与向量的夹角是,可得: 由于:,得到:代入得: 即,其中 6. 模型建立和求解图6.1.16.1. 在平面上平行移动网格N,使可利用的旧井数尽可能大我们首先在Pi所属平面建立坐标系xoy,在网格N所属平面建立坐标系xoy。初始状态下,假设
15、坐标系xoy与坐标系xoy的原点及坐标轴重合。在坐标系xoy上标注Pi坐标,由此得到旧井的分布情况。根据题中所给具体数据,得到n=12时旧井分布如图6.1.1。根据假设1),我们认为Pi在坐标系xoy平面内随机分布,P点落在平面内各点的可能性相同,且任意点P均为孤立点,各点之间的分布情况互不影响。P的坐标分布具有随机性,独立性。当P点坐标确定之后,假设此时网格N也确定,则P点在坐标系xoy下的坐标也确定下来,P点相对于其所在网格的位置也随之固定。因此,P所在位置可由在单位网格中的相对位置表示。我们用P相对于单位网格的相对坐标Pi(ai,bi)取代P相对于原坐标系xoy的一般坐标Pi(ai,bi
16、)。根据问题分析4.1,我们将每个网格及其中的P点作为单位模型。如上所述,P点分布具有随机性与独立性,因此,单位模型之间也相互独立,互不影响。因为每个网格性质相同,我们将单位模型彼此重叠,将Pi的相对坐标标注在同一坐标系下。根据题设,单位网格边长为1,则Pi(ai,bi)分布在以(0,0),(0,1)(1,1)(1,0)为顶点的正方形区域内,即只需取Pi(ai,bi)的小数部分作为新的坐标。n=12时,Pi(ai,bi)新的坐标Pi(ai,bi)如表格 6.1-1所示:表格 6.1-1i123456789101112ai0.500.410.000.370.400.720.720.430.570
17、.380.980.50bi0.000.500.500.510.500.000.240.100.010.500.410.80图6.1.2 至此,我们得到Pi在单位模型中的分布情况,如图6.1.2所示。根据问题分析4.1,我们取边长为0.1单位的正方形S为考察正方形,其几何中心为结点X0。依题设所述,当P落在正方形S内部时,我们可以认为P与正方形S的几何中心X0重合。要使可利用的旧井数尽可能达,就需要考察正方形S中尽可能多的存在点P。令正方形S在分布图中平移,检测满足要求的情况。实际操作中,只需检测P点密集分布的位置即可。也可以利用Matlab进行绘图。相应的程序及分布图见附录Matlab程序1。
18、由图6.1.2可清楚看出,在题中所给的P坐标下,考察正方形S最多可包含4个P点。取S的中心X0为(0.4,0.5),即将原始网格N的原点右移0.4个单位,上移0.5个单位,得到新的网格N,其中可利用4个旧井。新的分布如图6.1.3所示,有4个旧井位于结点上。图6.1.3图6.1.4T由图6.1.2及表格 6.1-1可知,4个P点的横坐标最小值为0.37,最大值为0.41,纵坐标最小值为0.5,最大值为0.51。正方形S包含4个P点的临界状态如图6.1.4阴影部分所示,其几何中心X0的横坐标变化范围为(0.41-0.05)(0.37+0.05),纵坐标变化范围为(0.51-0.05)(0.50+
19、0.05),即只要X0在图6.1.4中矩形T的范围内,均能保证有4个旧井可利用。6.2. 网格N可旋转,使可利用的旧井数尽可能大模型建立过程类似题1,在Pi所属平面建立坐标系xoy,在网格N所属平面建立坐标系xoy。初始状态下,假设坐标系xoy与坐标系xoy的原点及坐标轴重合。假设网格N旋转,即假设坐标系xoy以原点为旋转中心,逆时针旋转。为了简化模型建立过程,我们可以将Pi相对于坐标系xoy的坐标变换成相对于坐标系xoy的坐标,此时,问题转化为题1所述情况,即网格N只进行平移运动。将Pi进行坐标变换,变换矩阵为。由此可得Pi在坐标系xoy下的坐标为:选用题1所述模型,取Pi坐标的小数部分,得
20、到Pi(ai,bi):图6.2.1由于不定,而每一个对应一个分布图,需在090的范围内穷举值,以得到所有分布图。因为Excel可以根据源数据直接得到分布图,在此情况下,我们以5为间隔,取得不同值,分析Pi点分布趋势,再在小范围缩小所取角度的范围,从而得到的精确值。也可以利用Matlab进行绘图。相应的程序及分布图见附录Matlab程序2、程序3。当=45时,得到的分布图如图6.2.1所示。图6.2.2由图可知,在题中所给的P坐标下,考察圆形C最多可包含6个P点。取C的圆心X0为(0.94,0.75),即将原始网格N右移0.94个单位,上移0.75个单位,逆时针旋转45得到新的网格N,其中可利用
21、6个旧井。新的分布如图6.2.2所示。进一步细化变化范围,我们发现当在44.645.6之间变化时,考察圆形中均能包含6个P点,其相应的结果图如图6.2.3、图6.2.4所示。图6.2.3图6.2.46.3. n口旧井,判定旧井均可利用的条件及算法由题1题2可知,当网格N同时进行平移、旋转时,可利用的旧井数最多。因此,我们利用题2给出的模型,再以此得到判定条件。取任意Pi(ai,bi),根据题2,可知原坐标系逆时针旋转后(即坐标系xoy),Pi在单位模型中的坐标为Pi(ai,bi),其中1) 判定方法1: 采用题1中对距离的定义,即两点间的距离为其横向距离(横坐标之差绝对值)及纵向距离(纵坐标之
22、差绝对值)的最大值。要使旧井均可利用,则全部Pi(ai,bi)可被考察正方形S包含。易知坐标需满足的条件为:在满足该条件的情况下,将原始网格向右平移个单位,向上平移个单位,逆时针旋转即可。令旋转角度在090间变化,每次增加1,根据判定条件就可得到最终对原始网格N的处理方法。为简化运算过程,我们选用C+进行编程(详见附录程序1)。关键程序即判定方法如下:for(ag=0;ag90;ag+)m=ag/180.0*PI;for(i=0;in;i+) ai=ChangeX(xi,yi,m); bi=ChangeY(xi,yi,m); maxa=a0; maxb=b0; mina=a0; minb=b0
23、; for(i=0;imaxa) maxa=ai;if(bimaxb) maxb=bi;if(aimina) mina=ai;if(bi0.1|maxb-minb0.1) continue; 2) 判定方法2采用题2中对距离的定义,即欧氏距离。要使旧井均可利用,则全部Pi(ai,bi)可被考察圆形C包含。当任意两个P点间距离小于等于0.1即可满足。具体条件为:同样令旋转角度在090间变化,每次增加1,根据判定条件就可得到最终对原始网格N的处理方法。为简化运算过程,我们选用C+进行编程(详见附录程序2)。关键程序即判定方法如下:for(ag=-1;ag90;) agn: ag+; m=ag/18
24、0.0*PI; for(i=0;in;i+) ai=ChangeX(xi,yi,m); bi=ChangeY(xi,yi,m); for(i=0;in;i+) for(j=i+1;j0.01) goto agn; #+3) 判定条件的检验 测试数据1:i12345ai0.504.724.725.437.57bi2.002.006.244.102.01图6.3.1采用判定方法1的输出结果见图6.3.1,相应的Pi在单位网格上的分布图和结果图分别为图6.3.2,6.3.3;图6.3.2图6.3.3图6.3.4采用判定方法2输出的结果见图6.3.4,相应的Pi在单位网格上的分布图和结果图与采用方法1
25、时基本相同,见图6.3.5,6.3.6图6.3.5图6.3.6测试数据2:i12345ai1.363.434.125.002.57bi2.000.510.240.103.01图6.3.7采用判定方法1判定方法2的输出结果相同,见图6.3.7。经过测试,判定条件成立。7. 模型评价7.1. 模型的优缺点优点:模型构成简单、易懂,使用方便,可操作性强。根据分布图能够直观看出结果,复杂程度低,正确率高,说服力强。缺点:基于编程的判定过程需要输入原始数据,使用模型的准备工作可能略为繁琐,且由于变化的密集度不同程序部分需要改动。7.2. 模型的推广该模型不仅可以用在钻井位置的确定,类似此类问题一样可以解
26、决,例如:如何选址一个小区房屋位置使其尽量坐落于阳光充足的地方,如何建立某一固定形状规模的工程是其最大化满足某特定要求等等。参 考 文 献1 (美)合恩(Hor,R.A.)等著;杨奇译,矩阵分析,北京:机械工业出版社,2005.42 杨振华 郦志新编,数学实验(第二版),北京:科学出版社,2010.2#+#+附录 Matlab程序1x=0.50,1.41,3.00,3.37,3.40,4.72,4.72,5.43,7.57,8.38,8.98,9.50;y=2.00,3.50,1.50,3.51,5.50,2.00,6.24,4.10,2.01,4.50,3.41,0.80;x1=x-floo
27、r(x);y1=y-floor(y);plot(x1,y1)结果图Matlab程序2x=0.50,1.41,3.00,3.37,3.40,4.72,4.72,5.43,7.57,8.38,8.98,9.50;y=2.00,3.50,1.50,3.51,5.50,2.00,6.24,4.10,2.01,4.50,3.41,0.80;A=pi/36;y0=(y*cos(A)-x*sin(A)-floor(y*cos(A)-x*sin(A);x0=(y*sin(A)+x*cos(A)-floor(y*sin(A)+x*cos(A);A=3*pi/36;y1=(y*cos(A)-x*sin(A)-fl
28、oor(y*cos(A)-x*sin(A);x1=(y*sin(A)+x*cos(A)-floor(y*sin(A)+x*cos(A);A=5*pi/36;y2=(y*cos(A)-x*sin(A)-floor(y*cos(A)-x*sin(A);x2=(y*sin(A)+x*cos(A)-floor(y*sin(A)+x*cos(A);A=7*pi/36;y3=(y*cos(A)-x*sin(A)-floor(y*cos(A)-x*sin(A);x3=(y*sin(A)+x*cos(A)-floor(y*sin(A)+x*cos(A);A=9*pi/36;y4=(y*cos(A)-x*sin
29、(A)-floor(y*cos(A)-x*sin(A);x4=(y*sin(A)+x*cos(A)-floor(y*sin(A)+x*cos(A);A=11*pi/36;y5=(y*cos(A)-x*sin(A)-floor(y*cos(A)-x*sin(A);x5=(y*sin(A)+x*cos(A)-floor(y*sin(A)+x*cos(A);A=13*pi/36;y6=(y*cos(A)-x*sin(A)-floor(y*cos(A)-x*sin(A);x6=(y*sin(A)+x*cos(A)-floor(y*sin(A)+x*cos(A);A=15*pi/36;y7=(y*cos
30、(A)-x*sin(A)-floor(y*cos(A)-x*sin(A);x7=(y*sin(A)+x*cos(A)-floor(y*sin(A)+x*cos(A);A=17*pi/36;y8=(y*cos(A)-x*sin(A)-floor(y*cos(A)-x*sin(A);x8=(y*sin(A)+x*cos(A)-floor(y*sin(A)+x*cos(A);subplot(3,3,1),plot(x0,y0),title(A=5度);subplot(3,3,2),plot(x1,y1),title(A=15度);subplot(3,3,3),plot(x2,y2),title(A=
31、25度);subplot(3,3,4),plot(x3,y3),title(A=35度);subplot(3,3,5),plot(x4,y4),title(A=45度);subplot(3,3,6),plot(x5,y5),title(A=55度);subplot(3,3,7),plot(x6,y6),title(A=65度);subplot(3,3,8),plot(x7,y7),title(A=75度);subplot(3,3,9),plot(x8,y8),title(A=85度);结果图#+Matlab程序3x=0.50,1.41,3.00,3.37,3.40,4.72,4.72,5.43
32、,7.57,8.38,8.98,9.50;y=2.00,3.50,1.50,3.51,5.50,2.00,6.24,4.10,2.01,4.50,3.41,0.80;n=4;m=0.05;A=pi/(n+m);y0=(y*cos(A)-x*sin(A)-floor(y*cos(A)-x*sin(A);x0=(y*sin(A)+x*cos(A)-floor(y*sin(A)+x*cos(A);A=pi/n;y1=(y*cos(A)-x*sin(A)-floor(y*cos(A)-x*sin(A);x1=(y*sin(A)+x*cos(A)-floor(y*sin(A)+x*cos(A);A=pi
33、/(n-m);y2=(y*cos(A)-x*sin(A)-floor(y*cos(A)-x*sin(A);x2=(y*sin(A)+x*cos(A)-floor(y*sin(A)+x*cos(A);A=pi/(n-2*m);y3=(y*cos(A)-x*sin(A)-floor(y*cos(A)-x*sin(A);x3=(y*sin(A)+x*cos(A)-floor(y*sin(A)+x*cos(A);subplot(2,2,1),plot(x0,y0),title(偏小角度pi/(n+m);subplot(2,2,2),plot(x1,y1),title(现有角度pi/n);subplot
34、(2,2,3),plot(x2,y2),title(偏大角度pi/(n+m);subplot(2,2,4),plot(x3,y3),title(大角度pi/(n+2*m);结果图#+程序1:判定方法1的实现#include #include #define N 50#define PI 3.1415926535double ChangeX(double a, double b,double m)a=a*cos(m)-b*sin(m); a=a-int(a);return a;double ChangeY(double a, double b,double m)b=(a*sin(m)+b*cos
35、(m);b=b-int(b);return b;int main()#+double m,maxa,maxb,mina,minb;int i,j,n,ag;double aN=-1,bN=-1,xN,yN;coutyou want to check ? positions?n;for(i=0;in;i+)couttype in a position:endlxi;coutyi;for(ag=0;ag90;ag+) m=ag/180.0*PI;for(i=0;in;i+) ai=ChangeX(xi,yi,m);bi=ChangeY(xi,yi,m);maxa=a0;maxb=b0;mina=a
36、0;minb=b0; for(i=0;imaxa) maxa=ai;if(bimaxb) maxb=bi;if(aimina) mina=ai;if(bi0.1|maxb-minb0.1) continue; else coutPass!endl;cout原始网格 右移:(maxa+mina)/2endl;cout 上移:(maxb+minb)/2endl;cout逆时针旋转度数:agendl;return 0;coutCannot meet your need!endl; coutCannot meet your need!endl;return 0;#+程序2:判定方法2的实现#inclu
37、de #include #define N 50#define PI 3.1415926535double ChangeX(double a, double b,double m) a=a*cos(m)-b*sin(m);a=a-int(a);return a;double ChangeY(double a, double b,double m) b=(a*sin(m)+b*cos(m);b=b-int(b);return b;int main()#+ double m,l;int i,j,n,ag;double aN=-1,bN=-1;double xN,yN;coutyou want to
38、 check ? positions?n;for(i=0;in;i+) couttype in a position:endlxi;coutyi;for(ag=-1;ag90;)agn:ag+; m=ag/180.0*PI;for(i=0;in;i+) ai=ChangeX(xi,yi,m); bi=ChangeY(xi,yi,m);for(i=0;in;i+) for(j=i+1;j0.01) goto agn; if(ag90) coutPass!endl;cout原始网格 右移:(a0+a1)/2endl;cout 上移:(b0+b1)/2endl;cout逆时针旋转度数:agendl;return 0;else coutCannot meet your need!endl; coutCannot meet your need!endl;return 0;