资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,机械设计编程基础,一、输入输出语句的应用,二、逻辑判断语句的应用,三、窗口界面的应用,2-1,人机交互式程序的编制,设计资料的程序化,常见的设计资料包括:计算公式,经验公式,实验数据,实验曲线,图表以及各种标准和规范等。所以我们可以将设计资料分为:公式,数表,线图。,在机械,CAD,中,需要把设计中所需要的数据,资料,及有关公式和过程进行程序化。,设计资料程序化,数据库存储,一、设计公式的程序化,根据设计资料中的公式进行计算,可以将每个公式编成为一个子程序或者函数,公式中的待定设计参数作为变量。,设计资料中有理论公式和经验公式,对于理论公式,我们尽量采用原始公式,使得计算结果更为精确。对于经验公式,有些参数的取值不确定,对于这类参数的取值,建议采用两种方法:,1.对于可变性较大的参数,可以作为计算子程序或者函数的输入变量,每次有用户根据具体问题输入参数值。,2.对于相对来说比较固定的参数值,可以采用数据库或者别的形式直接放入,CAD,系统中。此时参数值可以修改,但是不必每次输入。,二、数表的程序化方法,在机械设计中,又很多参数之间的关系没有办法用简单的数学公式表达。例如:,设计带传动中包角系数,为了更好的将数表程序化,我们首先应该了解数表的类型。,包角,70,80,90,100,。,150,160,。,220,K,0.56,0.62,0.68,0.73,。,0.92,0.95,。,1.2,1.,数表的分类:,按照数表中的数据间有没有函数关系,数表分为:,简单数表,和,列表函数数表,。,简单数表记录着研究对象各自独立的常数,表中的数据没有函数关系,只能检索,不能插值。例如齿轮模数等等。,列表函数数表中的数据间存在函数关系,,Y,i,=,f(X,i,),i,=1,2,3。,将相应的数据,X,i,和,Y,i,列成表格表示参数间的关系,这样的函数为列表函数,这样的数表为列表函数数表。对于列表函数数表我们可以用插值法来查取数据。,按照数表中的数据相关的变量的个数,我们可以将数表分为一元数表,二元数表,三元数表等。,一元数表中的数据是独立的,或者只与一个因素有关,这种数表可以用一个一维数组来表示。,二元数表的数据与两个因素有关,可以用二维数组表示。,三元数表中的数据与三个因素有关,可以用三维数组表示。,如书中例题一:标准胶带型号及断面尺寸,只有一个自变量,每个数据都为一元数表,可以用一维数组表示。,如书中例题五:轴肩圆角处理论应力集中系数,a,a,此时决定,a,a,有两个自变量,,D/d,和,r/d,,所以这是二维查表问题。,2.简单数表的查取方法,举例:查表渐开线圆柱齿轮的模数,基本步骤如下,1).,定义变量和数组:存放模数的计算值(齿距/,Pi),,数组存放模数的标准值。,2).用循环过程判断计算值在数组中的位置。,3).确定标准模数。,第一系列,1,1.25,1.5,2,2.5,3,4,5,6,8,10,12,16,20,25,32,40,50,第二系列,1.75,2.25,2.75,(3.25),3.5,4.5,5.5,(6.5),7,9,(11),14,18,22,28,36,45,3.列表函数数表的查取方法,由于列表函数数表个数据之间存在函数关系,因此在查取数据时就存在一个插值问题。,插值问题和插值多项式:,实际问题中若给定函数,y=f(x),是区间,a,b,上的一个列表函数(,x,i,y,i,)(i,=0,1,2,3.,n),,如果,x,a,b,且,f(x),在区间,a,b,上是连续的,要求用一个简单的,便于计算的解析表达式,p(x),在区间,a,b,上近似,f(x),,使,p(x,i,)=,y,i,i=0,1,2.,n,就称,p(x),为,f(x),的插值函数,点,x,0,x,1,.,x,n,称为插值节点,包含插值节点的区间,a,b,称为插值区间.,我们将,称为插值多项式。,3.1 一元列表函数数表的插值,当我们在进行机械设计时,往往用到的一些参数存在某种函数关系,y=f(x),,然而要想直接找到这种函数关系的解析表达式是比较复杂和困难的,然而我们可以在现有的函数定义区间通过某些方法得到一些离散点的函数值:,y,i,=,f(x,i,),i=1,2,3。,此时我们得到的是一个一维列表函数的数表:,此时,我们需要做的就是寻找一个函数,p(x),,使得在某个小区间内,p(x),可以替代,f(x)。,X,X,1,X,2,X,3,X,4,X,5,X,i,X,n,Y,Y,1,Y,2,Y,3,Y,4,Y,5,Y,i,Y,n,线性插值,1)给定,x,,且,x,i,xx,i+1,,,找出相对应的函数值,f(x,i,),f(x,i,+1,),2),过(,x,i,y,i,),和(,x,i,+1,y,i+1,),两点连直线,p(x),替代原来的函数,f(x),我们可以得到插值函数值,y。,拉格朗日插值法,线性插值法利用了两个节点上的信息,精度不高。如果我们用三个节点,用抛物线来替代直线拟和,结果更为理想。,系数,K,随流量变化曲线,在,f(x),上面任取三点,过三点做抛物线,p,2,(x),,如果要使,p,2,(x),能够替代,f(x),,必须使得,p,2,(x,1,)=f(x,1,),p,2,(x,2,)=f(x,2,),p,2,(x,3,)=f(x,3,)。,通过数学推导。我们可以得出抛物线插值方程:,如果认为抛物线插值法不够精确,我们增加插值点数,构成较高次方插值多项式。用来替代原来,f(x),的,n,次多项式,y=,p,n,(x,),有,n+1,个基本插值多项式:,A,k,(x,i,)(k=1,2,3n+1),则,n,次插值函数为:,Largrange,插值公式,在抛物线插值中,关于根据插值点,x,选取合适的三个点的选取方法归纳如下:,1.若|,x-x,i,-1,|x-x,i,|,,则选取,x,i-1,x,i,x,i+1,三个点,i=I,3.,若,x,1,=x=x,2,,x,靠近区间上限,则选取,x,1,x,2,x,3,三个点,公式中,i=2,4.,若,x,n-1,=x=,x,n,,x,靠近区间下限,,,则选取,x,n-2,x,n-1,x,n,三个点,公式中,i=n-1,3.2 二元函数插值,当机械设计资料为二元列表函数需要用插值法来检索数据,我们可以采用一下三种插值方法:,1)二元列表函数线性插值法,2)二元列表函数抛物线直线插值法,3)二元列表函数抛物线插值法,二元列表函数线性插值编程思路,4,、线图的程序化,找到线图原来的公式,线图的数表化处理,齿数,Z,12,14,16,18,22,26,30,40,50,齿形系数,Y,3.58,3.22,3.05,2.91,2.72,2.6,2.52,2.4,2.32,原则:结点的选取随曲线的形状而异,选取的基本原则是使得各个结点的函数值不至相差很大。,1,、由此可见,一条曲线可以变换成为一个一维列表函数数表。,2,、当在同一坐标平面内有多条曲线,假设有,N,条曲线,就有,N,个一维数组,把这些数表组合在一起,就构成一张二维数表。,5,、数表的公式化,原因:,前面所讲的简单数表和列表函数数表的查取方法中一元或者二元自变量的数据被存储在数组中,需要在程序中直接对数组赋初值。但当数据数量较多的时候,输入比较麻烦,所以我们可以采用数表的公式化处理。,分类:,1、设计资料中的数表,是根据比较繁杂的算法或者一系列规定的设计公式计算出来后再制成表格的,目的 是为了简化工程师的手工计算,对于这种数表,我们应该近可能的找到原始计算公式编制程序。,2、数表中给的数据是一组实验得到的数据,或者是一系列数值计算的结果。对于这类数表,可以在数据的基础上建立经验公式或者近似计算公式。,对于第一种情况,是比较容易的:,例如:计算普通,V,带的基本额定功率。,GB/T13575.1-92。,通过,V,带型号,小带轮基准直径,d,1,,,小带轮转速,n,1,的一个二维列表函数数表来查取额定功率。原始公式为:,当带的型号,线速度,小带轮直径,D,1,知道后,就可以由上式计算出,P,0,。,这个过程称为图表的程序化。,对于在数据基础上建立经验公式或近似计算公式,我们一般有两种方法:,1、曲线插值法:当数表中的数据足够精确,要求近似公式代表的函数曲线严格的经过数表所给出的各个离散点,就可以用曲线插值方法。例如常用的三次样条曲线、多项式插值。,2、曲线拟和方法:根据离散节点数值变化趋势选择函数类型,拟和函数可能不准确的通过离散节点。但是可以通过恰当的选择函数中的待定系数,使误差最小。常用的拟和函数有:多项式拟和,指数拟和,幂函数拟和。,最小二乘法多项式拟和,在科学实验数据处理中,往往要根据一组给定的实验数据,求出自变量,x,与因变量,y,的函数关系,已知,m+1,组数据,(,xi,yi),i,=0,1,2,m。,如果一个,n,次多项式,S(x),,它并不通过点(,x,i,y,i,)(i,=0,1,2,m),,只是给定点,x,i,上的误差,i,=,s(x,i,)-y,i,(i=0,1,m),的平方和 最小。这样的方法称为最小二乘法。,R,称为用,S(x),拟和的总偏差。,根据极值理论,要使,R,达到最小,必有:,对,n=2,的情形进行讨论:,用二次函数来拟和原函数,f(x):,此时总的偏差:,根据极限理论:,从而我们可以得到一个线性方程组:,可以写成矩阵形式,,a,0,a,1,a,2,作为自变量:,对于,m,次多项式拟和,我们可以得到,m+1,阶正则方程组:,最小二乘法其他函数的拟合:,(,1,)幂函数,(,2,)指数函数,(,3,)对数函数,本章小节,了解,CAD,在机械设计中的应用方法,学习了如何将机械设计中涉及的工程数据程序化,进一步巩固了,CAD,编程能力,
展开阅读全文