您好,欢迎访问三七文档
当前位置:首页 > 临时分类 > 第5章 设计资料的程序处理
第5章设计资料的程序处理两种设计资料的处理方法1.将设计资料转变成程序,即程序化2.利用数据库管理设计资料5.1数据表格的程序处理数表的分类:一维变量表二维变量表多维变量表数表的来源:数据表格本来就有精确的理论计算公式,仅仅是为了便于手工计算才把这些公式以数表的形式给出。数表中的数据,彼此之间不存在一定的函数关系或是由实验获得的。5.1.1一维数表变量名型号变量OABCDEii012345kwkw(i)0.391.032.657.526.649.8Floatkw[6]={0.39e-3,1.03e-3,2.65e-3,7.50e-3,26.6e-3,49.8e-3};在已知三角带型号type的情况下直接调用kw[type]即可。一般用一维数组直接在程序中实现。例如:平键公称尺寸及键槽尺寸,如下图所示,其特别之处在于变量轴径d有一定范围。解决方法是把该表分成5个一维表进行处理轴径d键宽b键高h轴t轮毂t1〉6~8221.21〉8~10331.81.4〉10~12442.51.8〉12~175532.3〉17~22663.52.8〉22~308743.3〉30~3810853.3〉38~4412853.3〉44~501495.53.8〉50~58161064.3t1bhdt5.1.2二维数表二位数表有两个变量。一般情况下是将数表用二维数组表示。例如:工作机械载荷特性工作平稳轻度冲击中等冲击原动机载荷特性工作平稳轻度冲击中等冲击工况j=1j=2j=3系数kk(i,j)kk(i,1)kk(i,2)kk(i,3)i=1kk(1,j)1.01.251.75i=2kk(2,j)1.251.52.0i=3kk(3,j)1.51.752.25齿轮传动工况系数5.1.3多维数表变量个数大于2的数表,工程手册多为三维数表,一般情况下用三维数组表示。对于下图所示的齿形公差,可以按以下方法程序化:floatdd[4];表示齿轮直径分类的上限floatmn[6];表示齿轮模数的分类上限floatff[4][6][12];表示齿形公差的三维数组dmn精度等级齿形公差5.2线图的程序化(1)线图所表示的各个参数之间本来就有计算公式,只是由于计算公式复杂,为方便手工计算将公式绘成线图,以供设计时套用解决方法:直接应用原来的公式例如:螺旋角系数Zβ该线图是根据Z2β=cosβ绘制的(2)线图所表示的各参数之间没有或找不到计算公式结点选取的基本原则是相邻两结点之函数差较为均匀渐开线齿形系数解决方法:把线图离散化成数表,然后按照数表的程序化处理(3)用曲线拟合的方法求线图的经验公式,再将公式编入程序,见5.4节根据传递功率P和主动带轮的转速N,选择三角带的号K(4)复杂线图程序化,根据具体情况进行处理intfind_type(doubleN,doubleP){doubleA[6][4]={{4900,3.8,490,0.8},{3400,10.5,100,1},{2400,22.5,100,2.7},{1500,36,100,5.9},{1200,85,100,17.5},{700,170,100,44}};inti;doublec;for(i=0;i6;i++){if(N=A[i][0])returni;c=log10(A[i][2])+(log10(A[i][0])-log10(A[i][2]))*(log10(P)-log10(A[i][3]))/(log10(A[i][1])-log10(A[i][3]));if(N=pow(10.0,c))returni;}return6;}AKAKABABNNPPNNPPlglglglglglglglgCPPPPNNNNABAKABAKlglg)lg)(lglg(lglglgCKN10即故5.3程序插值函数插值的基本思想:构造某个简单函数g(x)作为列表函数f(x)的近似表达式,然后计算g(x)值近似代替f(x)值。5.3.1一元函数插值1.线性插值(1)从表格中选取两个相邻的自变量xi,xi+1,满足xixxi+1(2)过(xi,yi)(xi+1,yi+1)两点连直线g(x)代替f(x),则x的函数值为写成通式:)()()1()()(1iiiiiixxxxxfxfxfxf)()()()()(1111iiiiiiiixfxxxxxfxxxxxf线性插值函数intfind_liner(double*xx,double*yy,intn,doublex,double*y){doublex1,y1,x2,y2;inti=0;if(xxx[0]||xxx[n-1])return0;while(xxx[i])i++;i--;x1=xx[i];y1=yy[i];x2=xx[i+1];y2=yy[i+1];*y=y1+(x-x1)*(y2-y1)/(x2-x1);return1;}2.抛物线插值过三点(xi-1,yi-1)(xi,yi)(xi+1,yi+1)做抛物线方程(1)从已知函数表格中选取二点xi及xi+1,满足xixxi+1(2)当x靠近xi时,取xi-1,xi,xi+1。否则取xi,xi+1,xi+2(3)当x靠近表头时,取x1,x2,x3。(4)当x靠近表尾时,取xn-2,xn-1,xn。3131321221231112132))(())(())(())(())(())((33yxxxxxxxxyxxxxxxxxyxxxxxxxxy//一元函数抛物线插值//xx,yy--节点数据,n--节点个数intfind_quadric(double*xx,double*yy,intn,doublex,double*y){doublex1,y1,x2,y2,x3,y3;inti=0;if(xxx[0]||xxx[n-1])return0;while(xxx[i])i++;i--;if((x-xx[i])(xx[i+1]-x))i--;if(i0)i=0;if(in-3)i=n-3;x1=xx[i];y1=yy[i];x2=xx[i+1];y2=yy[i+1];x3=xx[i+2];y3=yy[i+2];*y=0;*y+=y1*(x-x2)*(x-x3)/(x1-x2)/(x1-x3);*y+=y2*(x-x1)*(x-x3)/(x2-x1)/(x2-x3);*y+=y3*(x-x1)*(x-x2)/(x3-x1)/(x3-x2);return1;}5.3.2二元函数插值对于具有两个自变量的二元函数的插值,从几何意义上讲是在三维空间内,选定几个点,通过这些点构造一块曲面g(x,y),用它近似地表示在这区间内原有函数f(x,y)。设二元函数以表格形式表示…yj-1ykyjyj+1…………………xi-1…f(xi-1,yj-1)f(xi-1,yj)f(xi-1,yj+1)…xkg(xk,yk)xi…f(x,yj-1)f(xi-1,yj)f(xi,yj+1)…xi+1…f(xi+1,yj-1)f(xi+1,yj)f(xi+1,yj+1)…………………曲面被分成了许多小块,每一个小块四个角的值可以从表格中查出。为了能得到小块曲面上任一点的函数值,设法构造一个二元函数g(x,y),它能近似地代替原曲面的f(x,y)。因此二元函数插值的实质是如何来构造g(x,y)。g(x,y)取抛物线形式。二元函数抛物线插值步骤:根据k点的坐标(xk,yk)找出周围4个点a,b,c,d。再根据抛物线插值中的取点方法取点方法增加e,f,r,s,t5个点,这样共得9个点。取点方法:设xixxi+1,比较(x-xi)和(xi+1-x)的值,取其值小者作为取点延伸方向。当(x-xi)≤(xi+1-x),取xi-1,xi,xi+1三个点;否则取xi,xi+1,xi+2三个点。找出对应上述9个点的a,b,c,d,e,f,r,s,t点,分别求取三条抛曲线导线及其插值点,过abe用抛物线插值求得u点(对应u),再过cdf用抛物线插值得v点(对应v),过rst用抛物线插值求得w点(对应w)。过uvw用抛物线插值求得k点(对应k),即为所求。//二元函数插值x,y--x,y方向位置数组z--每个位置的函数值//n,m--x,y方向位置个数//xk,yk--插入点位置zk--插入点函数值//ii--插值方法选择1--直线--直线2--抛物线--直线3--抛物线--抛物线Voidlar(double*x,double*y,double**z,intm,intn,doublexk,doubleyk,double*zk,intii){inti,ix,iy,j,k,ia,ib,ki;doublet,zx[3];i=ix=iy=j=k=ia=ib=ki=0;n--;m--;ix=-1;iy=-1;if(xk=x[0])ix=0;if(xk=x[m])ix=m;if(yk=y[0])iy=0;if(yk=y[n])iy=n;if(xkx[0]||xkx[m]||yky[0]||yky[n]){if(ix0)for(i=1;i=m;i++)if(xk=x[i]){ix=i;break;}if(iy0)for(i=1;i=n;i++)if(yk=y[i]){iy=i;break;}*zk=z[iy][ix];return;}ix=0;iy=0;switch(ii){case1:ia=2;ib=1;break;case2:ia=3;ib=2;if((x[ix+1]-xk)(xk-x[ix]))ix--;break;case3:ia=3;ib=3;if((x[ix+1]-xk)(xk-x[ix]))ix--;if((y[iy+1]-yk)(yk-y[iy]))iy--;break;}if(ix0)ix=0;if(ix=m-1)ix=m-2;if(iy0)iy=0;if(iy=n-1)iy=n-2;for(ki=0;kiib;ki++){zx[ki]=0;//抛物线插值公式for(k=ix;kix+ia;k++){t=1;for(j=ix;jix+ia;j++)if(j!=k)t*=(xk-x[j])/(x[k]-x[j]);zx[ki]+=t*z[iy+ki][k];}}*zk=0;ki=0;for(k=iy;kiy+ib;k++,ki++){t=1;for(j=iy;jiy+ib;j++)if(j!=k)t*=(yk-y[j])/(y[k]-y[j]);*zk+=t*zx[ki];}}//程序结束5.4求经验公式求经验公式就是设法确定一个能近似地表示表格函数或曲线函数关系的公式。这种建立经验公式的过程也称为曲线拟合。最小二乘法是最常用的一种曲线拟合方法。5.4.1最小二乘法拟合的基本原理设由线图或实验所得的n个点(xi,yi)(i=1,2,,,m)构造拟合公式y=f(x)残差为:ei=f(xi)-yi(i=1,2,,,m)残差的平方和为:要求所构造的拟合公式y=f(x)保证残差的平方和为最小,这就是最小二乘法的曲线拟合。miiiyabxS125.4.2最小二乘法求线性方程残差平方和:miiiyabxS12则:mimiiimiiixyxaxbbS11120222022211miimiiyamxbaS由此二式联立,可解出:miimiimiiimiimiixmxyxmyxb1221111miimiimiimiimiimiiixmxxyxyxa1221121115.4.3用最小二乘法求多项式设方程的形式是:已知m个点的值:(xi,yi)(i=1,2,,,m)保证mn残差:ei=f(xi)-yi(i=1,2,,,m)残差的平方和为
本文标题:第5章 设计资料的程序处理
链接地址:https://www.777doc.com/doc-3646822 .html