1第4章工程数据处理及数据库技术24.2线图的程序化处理我们知道用线图来表示函数关系是一种很常用的方法,这种方法比较直观,并且能表现出函数的变化趋势。在机械设计资料中,有很多参数间的函数关系是通过线图来表示的。这些线图在对数坐标中,一般是直线或折线;在普通的直角坐标中,大多是曲线图。传统设计时,根据线图查得的参数直接代入公式,而在CAD作业中,目前还不能对线图直接编程,因此需对线图进行相应的处理,以实现对参数图的存贮和自动检索。常用的处理方法有三种:3(1)线图所表示的各参数之间本来就有计算公式,只是由于计算公式复杂.为了便于手工计算将公式绘成线图,以供设计时查用。对于这类线图处理的方法为:找到线图原有公式,将公式编写成程序。这是最精确的程序化处理方法,但难以找到。(2)线图所表示的各参数之间没有或找不到计算公式。将线图离散化为数表,然后按数表的处理方法进行处理。(3)用曲线拟合的方法求出线图的拟合公式(又称经验公式),再将公式编写成程序。44.2.1线图的数表化处理所谓线图数表化处理是将线图离散转化为一张数表,然后按数表的处理方法进行处理。右图为渐开线齿轮的一种齿形系数曲线图齿数Z121416182226304050齿形系数3.443.223.052.912.732.602.522.402.32渐开线齿轮的齿数和齿形系数的关系Z较少时,对齿形系数影响较大,节点的区间应取得小些;其中,节点的选取随曲线形状而异,选取的基本原则是相邻两节点之函数差较为均匀。齿数Z较多时,对齿形系数影响较小,节点的区间应取得大些5在CAD作业中,若能找到所给参数线图曲线的计算公式,则应选择该公式直接计算出所需的参数值,以确保所获得参数的精度。对于直线线图(直角坐标或对数坐标)或是以折线构成的折线图,则应把它们先转化为代数表达式,然后通过计算来获得较准确的参数值,这就是下面介绍的线图公式化处理。64.2.2直线图的公式化处理1、直角坐标直线图的公式化处理(a)直齿轮(b)斜齿轮72、对数坐标直线图的公式化处理对数坐标中的直线方程可写为:注意:一般程序语言中,只有lnx(自然对数)无十进制对数lgx,所以编程时,要进行换底运算。10lnxlnxlg83、区域图的公式化处理(1)按区域图的中线取值找出区域中线的表达式,为此设齿面最小硬度为HB0。最高硬度为HBl,SH0表示最小硬度对应的极限应力中值,SHl表示最大硬度对应的极限应力中值,由此根据直线的两点式方程可以写出极限应力中线的表达式为:0SH1SH0HB1HB9(2)按区域图的位置取值在确定材料极限应力时只能取中值,不尽合理。为了使设计者能根据所用材料的不同性能,按实际情况在区域图内取不同的值,为此,增加两个参数,一个是极限应力的幅度值SF,另一个是表示极限应力在区域图中的位置参量ST。ST=1时表示取上限值,ST=0时表示取中值,ST=-1时表示取下限值。此时极限应力的计算式变为:ST在+1~-1之间取不同的值时,就可以获得区域图中任意位置上的极限应力值。104.3数表与线图的公式化处理前面介绍的数表与线图的程序化处理方法,这种方法虽然解决了数表和线图在CAD作业中的存储和检索问题,但还存在下述一些缺点:1)占用大量计算机内存。数表和线图的程序化处理,要将数表中的全部数据编进计算程序中,实现数据的自动检索。当数表很庞大时,所占内存很大。一般情况下,一个设计计算程序常常需要使用多个数表,则所占内存更加庞大,严重时甚至会影响程序的正常运行。2)效率低,占机时间长。通常设计所使用到的仅是数表中的一小部分数据,有时甚至只是其中的一、二个。但数表程序化处理对数表中的每个数据,无论在当时的计算程序中是否被用到,都必须顺序地将全部数据读入内存。检索时,一般又得顺序地从头检索至所需的那个数据为止。114.3.1曲线拟合数表程序化处理一般只适用于数表较小(数据量较小)、计算程序使用数表个数不多的情况。对于比较大型的计算程序,常常需使用很多的数表,数据量很大,在这种情况下数表的处理就要采用其它的方法。其中一种方法就是本节所要介绍的曲线拟合。此方法的基本原则是构造一曲线函数y=P(x)作为函数f(x)的近似表达式,所构造曲线函数并不严格通过所有节点,而是尽可能反映函数的数据变化趋势,比较符合实际规律。曲线拟合的方法有很多,这里我们只介绍最小二乘法(线性、多项式、指数曲线)的数据拟合。12线性拟合•在直角坐标系中点大致呈线性分布,y(x)=a0+a1xxy13幂函数或指数函数拟合在对数坐标系中点大致呈线性分布xbaybayxlnlnlnyxylnx14多项式拟合•Y(x)=Σajxj(j=0,1,2,3,……,m)yx15一、最小二乘法拟合的基本思想设由线图或实验得到n个节点的数据(xi,yi)(i=1,2,3,…,n),构成拟合公式y=f(x),拟合公式不一定通过每个节点,因此在每一节点处与实际值的偏差为ei=f(xi)-yii=1,2,3,…,nniniiiiyxfe1122))((16二、最小二乘法的线性拟合设有一个函数表如下求一个一次二项式f(x)=a0+a1x,使误差f(xi)-yi的平方和最小,即:xx0x1x2…xnyy0y1y2…yn),()())((1002100022][aaFyxaayxfeniiininiiii17要使F(a0,a1)最小,必须满足即:(1)解此方程组,得出a0,a1值,从而得出拟合公式f(x)=a0+a1x。0010aFaF,nininiiiiininiiiniiiiniiixyxaxayxaanxyxaaaFyxaaaF00021000100101010010202)()()(18例1:设有数表求适合上述关系的拟合方程。解:由图可见,各点连线近似一条直线,所以选择线性拟合。则有由表得n=401234xi20406080100yi4.357.5510.4013.816.8oxy)1.........(..........)1(0002100010nininiiiiininiiixyxaxayxaan19代入方程组(1)得解得∴所求拟合方程为3000niix37972200030095230051010aa.aa400062320024710aaxxf4000623200247)(9520.ynii2200002niixniiixy0379720三、最小二乘法的多项式拟合已知数表如下,求一个m次多项式f(x)=a0+a1x+a2x2+…+amxm(mn)使误差的平方和取最小值。为使其最小,取对各自变量的偏导数等于零,得xx0x1x2…xnyy0y1y2…ynniniiiiyxfe0022))((222100]y)xaxaxaa[(imimiini),,,(10maaaF),,,(10maaaF21即:(2)解此方程组,得出各个系数写出拟合公式。m=1时为直线;m=2时为抛物线。0jaFm,,,j10nimiimimimniiimiminiimimixyxaxaaaFxyxaxaaaFyxaxaaaF01001010100020202)()()(ninininiimimimmimininininiiimimiinininiimimiyxxaxaxayxxaxaxayxaxaan0000211000001210000101)(ma,,a,a1022例2:有一组实验数据如表所示,它有7个点,现要求用二次多项式拟合。解:先将这组数据用坐标纸画出来,观查一下x、y的变化趋势,可以断定y是x的二次抛物线函数。设拟合公式为f(x)=a0+a1x+a2x2由上述实验数据及拟合公式知m=2,n=6,求公式(2)各系数分别为:点号0123456x值-3-2-10123y值4320-1-2-5060iix28602iix0603iix196604iix160iiy6040iiiyx6024iiiyx23代入公式(2)中得求解得所以拟合后的公式:419602840028012807210210210aaaaaaaaa21110a7101a2122a)23011(2112xxy24例3:用最小二乘法,求一个形如f(x)=a+bx2的拟合公式,使它与下列数据相拟合。01234xi1925313844yi19.032.349.073.397.3252627小结设计资料(数表和线图)目的在于查询数表线图找到原始公式数表或线图数组存储(或数据库存储)直接用公式处理插值处理非离散点公式拟合公式求值YN28作业:已知数表如下所示:x12345y13102035用最小二乘法求一个与数表数据相拟和的二次函数,并求当x=3.55时的函数值。2930