大学本科机械CAD课件_第1页
大学本科机械CAD课件_第2页
大学本科机械CAD课件_第3页
大学本科机械CAD课件_第4页
大学本科机械CAD课件_第5页
已阅读5页,还剩307页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、机械CAD/CAM技术与应用第一章 计算机辅助设计概论CAD/CAM (Computer Aided Design /Computer Aided Manufacture):计算机作为一种主要技术手段 ,生成和运用各种数字信息和图形信息,进行产品设计和制造。 二 发展概况 CAD/CAM技术是近40年发展起来的一门新兴的综合计算机应用技术,形成, 发展,提高,集成化四个阶段。1 CAD的过程:将原始参数用键盘等输入计算机,在显示器上可看到产品图样(工程图,立体图)并可进行各种变换(放,缩,移,转)以便观察和修改直至满意,在设计,计算和分析时,可选最佳方案,计算机控制绘图机自动绘出零件图,部件图

2、,装配图和必要的文字说明。2 CAM的过程:计算机对生产设备进行管理,控制和操纵完成产品的制造。即计算机根据图纸和技术文件确定生产计划,工序,刀具设备,加工参数,在将指令输送到自动加工机床,并监视和修改加工过程,进行检验等总结:1 CAD是20世纪取得的重大成果之一 2 衡量国家科学技术现代化和工业现代化的重要标志之一40年代:第一台计算机。50年代 :计算机主要计算,52年美国麻省理工学院诞生第一 台计算机绘图系统,出现第一台数控机床60年代:美国麻省理工学院林肯试验室在图形学方面有突破70年代 :美国APPLINCON公司开发第一个CAD系统,出现光栅显示器,图形输等。80年代 :超大规模

3、集成电路的发展,技术机成本下降。工作站问世,出现高分辨率的图形显示器,设备以商业化80年代中期至今:标准化,集成化,智能化 方向发展,产品数据技术标准成为 CAD/CAM 技术的主要发展方向。标准化组织在从事标准接口工作。 已渗透的很多领域,达60%,使设计周期缩短65-80%,工艺周期缩短80-90%,专家评价CAD/CAM技术电子技术发明以来最具有潜力,最能提高生产率的技术。机械设计流程图三 CAD/CAM的功能1 曲面造型功能2 实体造型功能3物体质量特性计算功能4三维运动机构的分析和仿真功能5二三维图形转换功能6三维几何模型的显示处理功能7有限元法网格自动生成功能8优化设计功能9信息处

4、理功能和信息管理功能12 CAD系统的软件组成一 软件:使计算机正常运行,完成一定功能的各种程序。软件是决定计算机性能好坏,功能强大的关键CAD的软件分为三个层次:* 系统软件:对计算资源自动管理和控制,是软件的核心,包括操作系统和数 据通讯系统.所有的软件都在操作系统的管理和支持下工作的。* 支撑软件:是帮助人们高效率开发应用软件的软件工具系统,也称软件开发工具,包括图形支撑系统,数据库管理系统,程序设计语言CAD系统的功能很大程度上取决于支撑软件的功能。* 应用软件:是用户利用计算机及它所提供的各种系统软件和支撑软件,自行编制的用于解决各种实际问题的程序。 二 CAD硬件的构成1计算机:C

5、PU(控制器,运算器),主存(RAM,ROM)2 图形显示终端光栅显示器:光栅扫描,分辨率,可显示面图形,真实.3键盘4数字化仪(数字化平台,触笔,控制器)5鼠标6打印机7绘图仪8扫描仪得到光栅文件,矢量化处理,转成CAD系统可接受的形式 三 硬件分布形式一)独立式系统1主机系统:主机为中心,支持多个终端,共享一个CPU。特点:共享,高速,大容量,大规模主机故障,系统瘫痪;用户多,需分时处理2 成套系统:(交钥匙系统)针对性强3 工作站系统:4个人机系统:(PC机)二) 分布式:(常用局域网。网上设备通过传输媒介互传信息)利用计算机技术及通讯技术将分布于各处计算机以网络的形式连接起来。可星型分

6、布,树型分布和环型分布。特点是资源共享。13 CAD技术的发展趋势一 计算机集成制造系统 CIMS(Computer Integrated Manufacturing System) : 在信息技术,自动化技术,制造技术的基础上,通过计算机及其软件把制造过程中分散的子系统集成起来,形成一种智能化的制造系统。 把CAD/CAPP/CAM/CAE集成起来,不是简单的连接 特点:1集成: 反映自动化的广度(市场,设计,加工,检测, 销售,服务)2智能 :反映自动化的深度.(由物流的控制到信息流的控制)因此:CAD/CAM系统实际上是有关产设计和制造信息处理系统.涉及内容: 1)计算机图形处理技术(生

7、成图形方法):交互处理方法,参数化方法, (二三维图形,真实感图形,图形数据库) 2)图形输入和工程图识别(输入方法) :编程法,交互作图法和扫描法3)产品造型技术: 形体定义,布尔运算,隐藏边和面的消除,阴影的效果。建模的方法:线框建模,表面建模,实体建模( 构造实体几何法,即CGS法,扫描表示法等).产品特征造型:此模型既满足产品的功能,又为制造提供有关信息;不仅可以计算体积、重心等几何参数,对于装配,还可以是否干涉;加工中,自动生成走刀轨迹;在管理中,根据零件特点分类,推行成组技术等.4)参数化设计方法:参数化模型的尺寸用对应关系,表示而不是具体数值. 5)CAPP:是将设计信息自动转化

8、成加工信息.*成组技术:其关键是零件族及典型工艺的设计.*是按照事先规定的逻辑决策,自动生成零件的工艺过程,这是智能化的设计方法.6)工程数据管理技术:对于集成系统中生成的各种数据(几何,拓扑信息,机床,刀具,材料及工艺信息)必须通过计算机存储读取,处理和传输. 对数据的管理最好用数据库管理系统(DBMS),出现面向对象的工程数据库(OOEDBMS). 7) 数据交换技术:目前各国使用的规范标准: DXF,IGES ,PDES,STEP等. STEP 数据交换规范,统一的数据传递格式,使各个环节顺畅地,自动的进行数据采集.二 科学计算可视化: 抽象的,离散的,模糊的,随机的问题实现图视化 .

9、是一种特殊的计算方法,它把数字转换为几何图象或图形,使研究者可观察它们的模拟和计算过程,并进行交互控制.提供了一种发现不可见信息的方法,丰富了科学发现的过程.三 虚拟现实技术:是20世纪末发展起来的高新技术.计算机生成的看似真实的模拟环境,包括三维听觉,触觉,嗅觉的逼真.有身临其境的感觉.所谓的“传感设备”是一种三维交互设备。对于产品,无需制造出来,接可感受产品的效果,通过模拟加工,测试,使在加工前就可发现问题并修改,不浪费.(优化下锯)四 计算机技术:在多媒体,动画,虚拟现实技术的出现和发展,使这一边缘技术发展.用计算机创意或制作作品.强调手段.五 先进制造技术: CAD设计新产品时,只须重

10、新设计和制造很少一部分零件,多数可沿承.具有变形设计能力,能快速重组. 第二章CAD中常用的数据结构2.1 概述现实世界:存在于人脑之外的客观世界 。构成物质流信息世界:现实世界在人脑中的反映,是人脑中的观念世界。全部信息构成信息流.数据世界:观念世界中信息的数据化。数据是用符号及组合表示的信息.信息和数据区别:信息是观念的,数据是物理的,是计算机处理的对象因此:在数据处理中,要将现实世界转化信息世界,再将信息世界转化数据世界。孤立的数据无意义,而有关的数据才能描述复杂的事物.数据之间的关系为数据赋予了丰富的内涵.因此对数据的研究不限于其本身,而在于其关系.-数据结构问题。 用计算机编程序,对

11、变量要进行数据类型说明,并赋值,计算机才可存取和计算。C语言的整数,浮点型等都是语言系统提供的数据结构。而计算机要处理数据,同时要处理图形,图象,文字等。例如:X1Y1X2 Y2X3Y3X4Y4X5Y512233445511335522441可见:图形由点,线,面组成,描述空间元素位置的信息,为几何信息,描述几何元素间的相互位置关系的信息,为拓扑信息。数据是有联系的,若使计算机按要求存取和处理这些数据,须事先对其进行组织构造,数据结构即是研究数据之间的关系的,是数据之间的组织形式。是具有关系的数据元素的集合。 计算机图形学=数据结构+图形算法+语言2.2 基本概念 1 数据: 描述客观事物的数

12、字,字符,及所有能输入到计算机并被计算机接受和处理的各种符号的集合。例如 滚动轴承是个实体。用型号、尺寸、额定动载荷等若干属性衡量,属性的值如型号6208 孔径40 为属性值,它们是描述轴承部分属性的数据。这种表示信息的数据是自然的,另一种表示信息的数据是人为的,如颜色.让计算机识别和处理,就须用数字表示.2 数据元素: 是数据的基本单位,是数据这个集合中的一个个体.可简单,可复杂,是相对独立的个体。 要研究汽车,则车身,底盘,发动机,电器设备为相对独立单元,为数据元素。要研究发动机,则机体,滑块机构,配气机构是相对独立单元,为数据元素。3 数据的逻辑结构和物理结构* 数据的逻辑结构:指数据之

13、间的逻辑关系,它独立于存贮介质。通常所指逻辑结构。如1:用bi和ci 表示轴承的型号和动载荷。数据可用(b1,c1),(b2,c2),(b3,c3)表来表示,数据之间线性有序。如2:汽车装配中数据元素的关系是层次关系。可见:实体的属性用数据描述,数据元素之间显现不同的关系. * 物理结构:也称存贮结构,是逻辑结构在计算机中的映象. 映象:逻辑结构变成物理结构的过程.系统通过软件把数据写入存储器,构成数据的物理结构. * 位(bit):计算机处理的最小单位,一个位表示一个二进制的数 。* 节点(字节): 若干位组合起来形成一个位串.用一个节点表示一个数据元素. 节点是数据元素在计算机中的映象。(

14、数据元素的映象和关系的映象)分为顺序映象和非顺序映象4 数据类型:程序设计语言确定变量所具有的种类。不同的数据类型确定了数据元素在计算机中所占的字节的多少,也决定了可表示的数值的范围.2.3 线性表231线性表的逻辑结构线性表:是最简单,最常用的数据结构,n(n0)个数据元素的有限序列。表达如下:(a1, a2, a3,ai-1 ai , ai+1,an-1, an)其中ai可以是一个数,一个符号,一个线性表,甚至是一个复杂的数据结构。例1:齿轮的标准模数m可构成一个线性表(1,1.25,1.5,2,2.5,3,4,5,6,8,10,12,16,20,25,32,40,50)其中的数据元素是一

15、个数。例2:减速器零件清单构成线性表,数据元素由4个项组成的一个记录.零件号材料模数齿数120Cr3242453383Q235224特点: 1 线性表中的数据元素可以是各种各样的数据结构,但同一表中的数据元素的类型是相同的。 2 除第一个和最后一个数据元素外,每一个数据元素有且只有一个直接前驱,有且只有一个直接后继。 3 线性表中数据元素的个数定义为线性表的长度。232 常用线性表的顺序存储结构顺序存储: 用一组连续的存储单元,按照数据元素的逻辑顺序依次存放。这种顺序存储结构有两个特点:1有序性.:存储顺序与逻辑顺序一致2均匀性:每个数据元素占的存储空间的长度一致.一 一维数组1建表 : 建立

16、线性表的标题,分配线性表存储空间,将表的每个数据元素写入相应的存储单.如用高级语言,用类型语句的定义语句完成,通过读语句或赋值语句,将数据元素写入相应的存储单元。线性表listic有5个数据元素(A,B, C, D, E)用C语言编写程序,表长应大于5。 static char listic 6=A,B, C, D, E;2 访问: 计算机对内存单元是按地址进行访问的,而数据元素的地址可根据线性表标题提供的首地址和每一个数据元素的长度计算出来,l(ai)=l(a1)+(i-1)* l ,若用高级语言只需提供数据元素的下标。例如访问第三个元素。 char c1; ci=listic2; * 注意

17、C语言中第一个数据元素的下标为0。3 修改: 找到数据元素的地址,然后再存放新值。例如将第2个元素的值该为 s listic1=s; 4 删除 注意:线性表的有序性和均匀性.,即删除后元素要前移。例如删除第3个元素.main ( )static char lt =A,B, C, D, E;int i,j,len;char c;len=sizeof( lt )/sizeof( lt0 );printf(“删除第几个元素?”);scanf(“%d”,&i);for (j=i ; j=i; j-) ltj=ltj-1; lti-1=c; 线性表长度为5二 :二维数组: static char A23

18、=a, b, c,d, e, f;可以看出,欲把数据元素顺序存储到计算机中,必须把二维结构映射成一维结构,既把一行看成一个数据元素。小结 :线性表均匀有序,所以,只要知道线性表的首地址和数据元素的序号,就可知道数据的实际地址。因此,访问,修改容易,但增或删运算使数据大量移动,所以用于查找频繁,但很少增删的场合。233 线性表的链式存储线性表的链式存储的特点: 用任意存储单元存放表中的数据元素,存储单元不连续,(逻辑顺序和存储顺序不同)利用结点实现。包括数据域和指针域。 单向链结点结构和双向链表的结构 头结点的指针域放第一个元素的地址,数据域为空,最后结点的指针域为空预备知识:一指针的概念直接访

19、问: C系统对整型变量分配2个字节,实型变量分配4个字节,字符型变量分配1个字节,内存区每个字节有地址.内存单元地址和内存单元内容不同: 设 程序定义了二个整型变量i,j编译系统分配2000和2001二个字节给i ,2003和2004二个字节给j,内存中无i、j变量名,程序是通过地址进行存储的.如printf(“% d”,i),执行过程:找到 i的地址2000,由2000开始的二个字节中取出,并输出数据.按变量的地址取值,称为“直接访问”. 间接访问: 指针变量:一个变量专门存放另一个变量的地址.指针:指针变量存放的值是指针(地址)变量i的指针是2000,设i-point为指针变量.则 i-p

20、oint=&i二指针变量的定义:类型标识符 *标识符例如 : float *p; 注意:一个指针只能指向同一类型的变量.三引用:(指针变量只能存放地址)(1) &:取地址. &a为变量a的地址.(2) * 指针运算符. *p为指针变量p所指向的变量.例如:*i-point是i-point所指向的变量和i是一回事.四结构体类型变量:它包含若干成员,成员可为数值型,字符型,数组型,指针型.例如:struct student int num;float score;srtuct student *next; student1,student2;关键字和结构体名成员定义变量其中next 是成员,是指针

21、类型,指向struct student数据类型.(next所在结构体体类型) 实际上上面只定义struct student 类型,并没分配空间,c语言提供二 个函数。(1)malloc(size): 在内存动态存储区中分配一个长度为size的连续空间,返回值是一个指向分配域起始地址的指针,如不成功,则返回“0”。(2)calloc(n,size):在内存动态存储区中分配n个长度为size的连续空间,返回值是一个指向分配域起始地址的指针,如不成功,则返回“0”。(3) free( ptr):释放由(ptr)指向的内存区,ptr是最近一次调用malloc或calloc函数的返回值。(4) 新标准C

22、规定malloc和calooc函数为void*类型,n和size 是整型,ptr是字符型一 单向链表1 建表:设线性表为(A, B, C, D, E)#include stdio.h#define MAX 5struct link char date; struct link *next; *head;main()int i;struct link *node ,*temp;for(i=0;idate=A+i; node-next=NULL; if(i= =0)head=temp=node; else temp-next=node ; temp=node; visit (node); 2 访问

23、;链表中 存储顺序和逻辑顺序无关,访问要从头结点开始查找。访问第 I个元素visit (node) struct link *node ;int i, j;printf(访问第几个元素?);scanf(%d,&i);j=1node=head;while (node) if(j+= =i) printf(%c,node-date); node=node-next; 4 删除要删除第i个:(1)找到第i-1和i结点,将i-1结点的指针域中的地址改成i+1结点的地址.(2)释放第i结点所占的空间.delete (node) struct link *node; int i,j; struct lin

24、k *temp; printf(“删除第几个元素:?”); scanf(“%d”,&i);if (iMAX) printf(“超出链表范围”); return(-1); j=1;node=head;if (inext; free(node); return; /*删除第一个*/while (node) /*为空则退出*/if(j+= =i-1) temp=node-next; node-next=temp-next; free(temp); return; node=node-next; 5 插入:在第i个数据元素前插入一个数值为M的数据元素.1申请空间,得到新结点。2新结点中放M。3新结点指

25、针域的指针等于第i-1结点指针域的指针.4第i-1结点指针域放新结点的地址。双向链表:比单向链表的每个结点多一个指针域1 建表双向链表: 设线性表为(A, B, C, D, E)#include “stdio.h”#define MAX 5struct link struct link *last; char date; struct link *next; *head,*rear;main()int i; struct link *node ,*temp;for(i=0;ilast=NULL; node-date=A+i; node-next=NULL; if(i= =0) head=tem

26、p=node; else temp-next=node ; node-last=temp; temp=node; rear=temp;visit (node); 2访问、修改、删除、插入与前相似,故大家自学(见书)三 循环链表单向链最后一个节点的指针域是空的,如将其存放第一个节点的地址,就形成了循环链表。233 广义链表链表在逻辑结构上表示为A=(a1, a2, a3,ai-1 ai , ai+1,an-1, an)若其中某个元素又是一个链表,则称A为广义链表 标记(Mark) 数值域 指针域 链表的结点结构其中Mark=0表示该点为不可分元素; Mark=1表示该点为一子表小结:1插入和删除

27、方便,数据元素无须移动。 2无须事先分配存储空间 3表的容量易于扩展 4 按逻辑位置查找的速度慢四 链表的应用 CAD/CAM中广泛使用 各种链表结构。例 二维图形的表示组成: 1 内线环和外线环 2为布尔运算,规定沿线方向前进左侧为图形区域,右侧为图形外区域,故外线环以逆时针方向定义,内线环是以顺 时针方向定义。 3 其数据结构由四层链表结构组成。第一层,存放图形信息;第二层, 存放线环信息;第三层,存放线段信息;第四层,存放相应线段的几何信息。 2.4 栈 241 栈的逻辑结构 栈 : 是特殊的线性表,只能对栈顶进行删除和插入运算,后进先出的特点。 2.4.2 栈的存储结构:一般容量可预见

28、,故顺序存储。 1 建立:定义数组sn 和栈顶指针top,top 并不指向元素的实际地址,只记录数据的逻辑号.当元素没进栈时,令top=-1.C语言中s0为第一个数组元素, 栈的上界为m=n-1. 2.4.3 栈的运算2 进栈:进栈前进行检查,如top=m,则栈满,显示出错信息(上溢). 如topm,设新进栈的元素的值为x. 则:top=top+1; stop=x;3 出栈:出栈前检查top,top=-1,则下溢,否则,将栈顶元素的值赋给y y=stop; top=top-1;2.4.4 栈的应用举例 例1在交互绘图系统中将显示区域存入栈,需要时可恢复前几次的显示状态。例2;某传动箱的传动关系

29、图.其中0号轴为输入轴,6789号轴为输出轴,其余为中间轴.编写程序,输入指定的轴号打印输出从0号轴到指定轴号的传动路线.a: 0,1,3,6,进栈, 0为栈底b: 弹出6,进7c:弹出7,栈顶3d:弹出3,进4,8。确定各轴之间的传动关系的数据结构设i轴带动j轴,则ai j=1,否则ai j=0,各轴之间的传动关系列成一个传动关系表A=0 1 1 0 0 0 0 0 0 00 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0

30、 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0=0号轴只带动1,2轴=1号轴只带动3,4轴行为主动轴号列为从动轴号因轴数确定,传动关系确定因此用数组存储01234567890 1 2 3 4 5 6 7 8 92用栈作为求解传动路线的工具,其 程序流程图如下:(程序说明)a1010:传动关系数组,top :栈顶指针s: 栈; n:轴号; i,j:中间变量.#include “stdio.h”#define MAX 10static int aMAXMAX=0,1,1,0,0,0,01,1,0,0,0,0,

31、01,0,0,0,0,0,0,1,10,0,0,0,0,0,0,0,10,0,0,0,0,0,0,0,0,1;main()int i=0,j=0,n,top=0,sMAX;printf(“输入轴号(1-%d:”,MAX-1); /*输如轴号1-9*/scanf(“%d”,&n);if(n=MAX) printf(“没有这个轴号”); /*超出范围*/exit(0); stop=0; /*0号轴进栈*/while(top=0|j10) /*条件为真则执行下面的语句*/ if (aij= =1) top+; stop=j; /* j号轴进栈 */ if(j= =n) printf(“n%d号轴的传

32、动路线是:”,n); for (i=0;idate);preorder(node -lchild);preorder(node -rchild);中序遍历中序遍历二叉树的程序inorder(node)struct btree *node;if (! node )return ;inorder(node -lchild); printf(“%d”,node -date); inorder(node -rchild);后序遍历后序遍历二叉树的程序postorder(node)struct btree *node;if (! node )return ;postorder(node -lchild)

33、; postorder(node -rchild); printf(“%d”,node -date); 2.6.4树的二叉树表示一般树转化为二叉树的规则:1 树的根结点为二叉树的根结点。2 根结点的最左端的孩子为二叉树的左孩子。3 原树中与该孩子互为兄弟的结点作为二叉树中已成为左孩子的 右孩子 。转化过程:练习:将树结构转化为二叉树表示:三维立体造型CSG树复杂形体可看成由一些简单规则的形体经过并,交,差运算形成,这样的树叫做CSG树,它是构成三维形体的一种方法。(见书)作业第三章 工程手册的数据处理工程手册的数据处理的方法有两种:1 程序化:将设计资料转变为程序.A) 将数表中的数据或线图经

34、离散化后存入数组,用查表,插值的方法检索所需数据。B) 拟合成公式编入程序,由计算获得数据。2 数据库存储:将数表中的数据或线图经离散化后所得的数据按规定的格式存放在数据库中,由数据库自身进行管理,独立于应用程序。 3.1数据表格的程序处理数表的来源: 1 本来有理论计算公式,只是为手工计算才以数表形式给出。如特定情况下单根三角带传动的功率,轴的应力集中系数表。2 数表中的数据,彼此不一定存在函数关系或是由实验获得。如齿轮标准模数表,各种材料的机械性能 .可以以数组的形式存储,再插值或求经验公社,编入程序。 3.1.1 一维数表 例 1 :标准三角带型号和断面尺寸的选择只有一个变量,即型号,且

35、为非数值型.程序化时可定义4个一维数组,并存入数值,再定义一个整型变量i表示型号.int i;float a7=10.0, 13.0 17.0, 22.0, 32.0, 38.0, 50.0;float h7=6.0, 8.0, 10.5, 13.5, 19.0, 23.5, 30.0;float a0 7=8.5, 11.0, 14.0, 19.0, 27.0, 32.0, 42.0;float y07=2.1 , 2.3, 4.1, 4.8, 4.8, 6. 9, 8.3, 11; 用户只要给出i=2,(A型)则程序可查出a2=17.0,h2=10.5,a02=14.0,y02=4.1.型

36、号顶宽a 断面高h节宽a0节高y0Y1068.52.1Z138112.3A1710.5144.1B2213.5194.8例 2 :键的选取 平键公称尺寸及键槽尺寸 mm轴径d 键宽b 键高h 轴t 轮毂t168 2 2 1.2 1.0810 3 3 1.8 1.41012 4 4 2.5 1.81217 5 5 3.0 2.31722 6 6 3.5 2.82230 8 7 4.0 3.33038 10 8 5.0 3.33844 12 8 5.0 3.34450 14 9 5.5 3.85058 16 10 6.0 4.3程序化时,可定义4个一维数组,.b10,h10,t10,t110分别存

37、储b,h,t,t1,用数组d1标识轴颈d的界限值,这里取的上限.程序中的符号说明:d -轴的设计尺寸;bb-查得的键宽;(b)hh-查得的键高;(h)ta-查得的轴的键槽深; (t)th-查得的轮毂的键槽深; (t1)/* C语言编制程序float bb,hh,ta,tb; int skey (d); /*定义一个函数*/float d; /*形参说明*/int i;float dl11= 6.0, 8.0, 10.0, 30.0, 38.0, 44.0, 50.0, 58.0;float b 10=2.0, 3.0, 4.0, 5.0, 10.0, 12.0, 14.0, 16.0;floa

38、t h 10= 2.0, 3.0, 4.0, 9.0, 10.0;float t 10= 1.2, 1.8, 2.5, 5.5, 6.0;float t110= 1.1, 1.4, , 3.8, 4.3 ;if(ddl0&d=dl10) /*表的范围*/ for(i=0;i10;i+) if(d=1&i=1&j=3) break;ka=kki-1j-1;例3 将表中的齿轮标准模数数值编入程序要求输入模数计算值后,能输出合适的标准模数。 齿轮标准模数(部分)第一系列 2 25 3第二系列 2.25 2.75 (3.25) 35第一系列 4 5 6第二系列(3.75) 4.5 5.5 (6.5)第

39、一系列 8 10 12第二系列 7 9 (11) 14分析: 1 齿轮标准模数是取值严格,又无统一规律的数列。 2第一系列优先,第二系列中不带括号的为可以采用,带括号的尽可能不用.3根据计算值取较大的标准值(但是 如计算值301,标准值3,则取3)参考程序:(right )/*module of gear,Mn=2-14mm*/ # include# include# includeint i, ch;double mc, mn;double m21=2, 2.25, 2.5, 2.75, 3, 3.25, 3.5, 3.75, 4, 4.5, 5, 5.5, 6, 6.5, 7, 8, 9,

40、 10, 11, 12, 14; void funl (void);main ( ) puts (“nt Mc was calculated Module of Gear .n”);printf (“t Input Mc=”);scanf (“%lf ”,&mc);mn=mc;puts(“n”);if (mn14)puts (“t The Mn (14) is overflow !n”);puts (“t-The end !-n”);exit (1); /*出界*/for (i=0;i21;i+) if (mn0) i-; funl ( );if (i20) i+; funl ( );3.1.

41、2 一元函数的插值基本思想: 构造某个简单的函数y=g(x)作为列表函数f(x) 的近似表达式,使得 f(xi)=g(xi) i=1,2,3.n ,则g(x)就称为f(x)的插值函数。1 线性插值:y=(yi+1-yi)*(x-xi)/(xi+1-xi ) +yi#include “math.h”#include “stdio.h”#define N 11main()int i,j;float xgiven,yresult; /*第一个不用*/float xN=0,90,100,110,120,130,140,150,160,170,180;float yN=0, 0.68, 0.74, 0.

42、79, 0.83, 0.86, 0.89,0.92,0.95,0.98,1.00;system(cls);printf(Please Input xgiven (90,180):);scanf(%f,&xgiven);if(xgivenx10) printf(Outline);else for (i=2;iN;i+) if (xgiven=xi-1) i=i-1; yresult=(xgiven-xi+1)*yi/(xi-xi+1)+ (xgiven-xi)*yi+1/(xi+1-xi); printf(The yresult is %f,yresult); break; getch(); 2

43、 抛物线插值在f(x)上取三点,过三点作抛物线g(x),以g(x)代替f(x)可获得比线性插值精度高的结果关键是根据插值点x选择合适的三点设插值点为x,且xi-1xxi (i=3,4,.n-1) (1) 若| x-xj-1| | x-xj |即 x 靠近xj 点,选xj-1,xj,xj+1三个点,这时上式中的i=j (3)若 x1=x=x2 ,即x靠近表头,则选 x1,x2,x3 三个点,这时上式中的i=2 (4)若 xn-1=x = xn 即x 靠近表尾,则选xn-2,xn-1,xn三个点,这时上式中的i=n-1说明:x(n)-n 个元素的一维实型数组,存放给定的表格函数自变量,输入参数;

44、y(n)-n个元素的一维实型数组,存放给定的表格函数函数值,输入参数; n -整型变量,表格函数的结点数,输入参数; xd -实型变量,插入点,输入参数; yd -实型变量,插入结果,输出参数用c语言编制的抛物线插值源程序如下:int lagr(float *x, float *y, int n, float xd, float *yd)int i=0,k=0,j=0; /*下标变量*/float x_right, x_left, t; /*中间变量*/ n-; *yd=0.0;if(xdx n) /*下标从0开始*/ printf(“error:”); return(0); /*输出超界信息

45、*/while (xdxi&ix_left) i-; /*在表中间*/if (in-1) i=n-2; /*靠近表尾*/for(k=i;k=i+2;k+) t=1.0; for (j=i;j=i+2;j+) /*三次循环,求出公式中的分数项*/ if (j!=k) t=t*(xd-xj)/(xk-xj); *yd=*yd+t*yk; /*公式*/ return(1); 例如已知一个列表函数,求x=0.57891处的函数值.X 0.4 0.5 0.6 0.7 0.8 0.9Y 0.38942 0.47043 0.56464 0.64422 0.71736 0.80731# include c语言

46、编制主程序如下: static float x6=0.4, 0.5, 0.6, 0.7, 0.8, 0.9;static float y6=0.38942, 0.47043, 0.56464, 0.64422, 0.71736, 0.80731;int lagr(float *x, float *y,int n, float xd, float *yd);void main ( ) float x1,y1; /*输入值*/ printf (“n x取0.4-0.9n x=”); scanf(“%f”,&x1);if (lagr(x,y,6,x1,&y1) printf (n y=%9.5f”,

47、y1);3.1.3二元函数的插值例如轴间圆角处的理论应力集中系数与r/d,D/d有关,二维查表可将表中的记录存在二维数组内A610中序号j012.9ir/d D/d6.03.0100.042.501.881.8020.151.61.321.14二元插值的意义:在三维空间内选择几个点构造一块曲面g(x,y)近似代替原曲面f(x,y)从而得到插值后的函数值zk=g(xk,yk).插值有几种构造方法:1 直线-直线插值抛物线-直线插值1由k取得abcd点,在增加ef.2求对应的ABCDEF点.3过ABE点抛物线插值求u过CDF点抛物线插值求v.4

48、 过uv线性插值求k .抛物线-抛物线插值1 由k取得abcd等9个点.2 ABE-U CDF-V RST-W3 UVW-K3.2 线图的程序化在工程中,常遇到线图,还有曲线族形式 .其处理方法如下:1找到原来的公式,编程.2离散成数表,同上.3用曲线拟合方法求出公式,再编程一 建立经验公式的方法如果实验数据精确,要求拟合曲线严格通过各点,则n-1次多项式例:三个实验点 f(x)= ax2+bx+c ax12+bx1+c=y1 ax22+bx2+c=y2 ax32+bx3+c=y3二 最小二乘法曲线拟合如果数据基本准确,有少量误差,可用最小二乘法,其拟合曲线不一定通过所有点,但反映了变化趋势.

49、 基本思想: 已知;m个实验(x1,y1),(x2,y2) .(xm,ym) 设拟合公式 Y=f(X) 则任一结点的 偏差为ei=f(Xi)-Yi i=1,2,3m 偏差的平方和为下式,确定Y=f(x) 的系数,使偏差的平方和其为最小 拟合公式 f(X)具有一定类型及相应的系数.例如以直线方程为例y=ax+b如何确定a 、b呢?最基本的要求是由该系数决定的直线方程与各点的偏差的平方和为最小.-最小二乘法。 *类型的确定:1一般定为初等函数。如对数函数,指数函数,代数多项式等。2将数据画在方格纸上,由形态判定类型。三 最小二乘法的多项式拟合已知:m组数据(xi,yi) i=1,2,4m,设拟合公

50、式为y=f(x)=a0+a1x+a2x2+a3x3+anxn要求数据组数m远大于方程次数 n,即mn偏差为ei= f(x i) -y i 则偏差平方和为ei2= (f(x i) -y i )2 =( a0+a1xi+a2xi2+a3xi3+anxin )-yi2 =F(a0,a1,a2,a3,an ) 这表明偏差平方和是(a0,a1,a2,a3,an ) 的函数,根据最小二乘法原理,为使其最小,取F(a0,a1,a2,a3,an ) 对各自变量的偏导等于零: F/aj=0 j=0,1,2,3nei2= (f(x i) -y i )2 =( a0+a1xi+a2xi2+a3xi3+anxin )

51、-yi2 F/aj=2(f(xi)-yi) f(xi)/aj j=0,1,2,3.n =2(f(xi)-yi) xij =2 ( a0+a1xi+a2xi2+a3xi3+anxin ) xij - xijyi =0 整理:( a0 xij +a1xij+1+ a2xij+2+anxij+n ) = xij yi(xi0) a0 +( xi1 ) a1+ ( xi2 ) a2 + (xin ) an = (xi0 yi ) (xi1) a0 +( xi2 ) a1 + ( xi3 ) a2 +(xi1+ n) an = ( xi1yi ) (xi2) a0 +( xi3 ) a1 + ( xi4

52、 ) a2 +(xi2+n ) an = ( xi2 yi ) .(xin ) a0 +(xin+1 ) a1+(xin+2 ) a2 +(xi 2 n) an= ( xin yi ) i=1,2,3.m有n+1个未知数(a0,a1,a2,a3,an ).有n+1个方程 .可解。说明: 1多项式的幂次不能太高,一般小于7,否则误差大. 2不能用一个多项式表示时,分段处理.解方程:a11x1+a12x2+a13x3. a1nxn=b1a21x1+a22x2+a23x3. a2nxn=b2a31x1+a32x2+a33x3. a3nxn=b3.an1x1+an2x2+an3x3. annxn=bn

53、求系数ajk ,其中j=1n,k=1.n.例如a11= xi0a12= xi1 , b1=(xi0 yi )c语言编制最小二乘法求多项式的源程序如下:说明:m-数据总数,n-多项式的幂次。int empequ (float *x, float *y, int m, int n, int n1, float a2020)ing i,j,k,l,ii; float t;for(j=0;jn.j+)/*j,k 是系数的下标,即ajk*/ for (k=0;kn;k+) /*该循环求出第j行的所有系数*/ ajk=0.0; for(l=0;lm;l+) /*求和*/ t=1.0; for(ii=0;i

54、i(j+k);ii+) /*求幂次*/ t=t*xl; ajk=ajk+t; for (j=0;jn;j+) /*求方程右侧的系数*/ ajn1-1=0.0; for (l=0;lm;l+)/*该循环完成求和*/ t=1.0; for(ii=0;iij;ii+)/*该循环完成求幂*/ t=t*xl; ajn1-1=ajn1-1+yl*t; if (gauss(&a00,n,n1)/*调用高斯削去法解方程子程序*/reurn(0); 3.4 列主元素高斯削去法求解线性方程组通过例子了解高斯削去法的实质 (1) 增广矩阵 X1+ X2+ X3+ X4=102X1+ X2+ 3X3+ 2X4=21

55、X1+3 X2+ 2X3+ X4=17 3X1+ 3X2+ X3+ X=14 (2)第一次削元,从第2行中减去2倍的第一行,从第3行中减去1倍的第一行,从第4行中减去3倍的第一行 1 1 1 1 10 0 -1 1 0 1 0 2 1 0 7 0 0 -2 -2 -16(3)第2次削元,第2行中乘-1,第3行中减去2倍的第2行. 1 1 1 1 10 0 1 -1 0 -1 0 0 3 0 9 0 0 -2 -2 -16 1 1 1 1 102 1 3 2 211 3 2 1 173 3 1 1 14 (4)第3次削元。第3行中除以3,第4行中加上2倍的第行。 1 1 1 1 10 0 1 -

56、1 0 -1 0 0 1 0 3 0 0 0 -2 -10(5)第4次削元。 1 1 1 1 10 0 1 -1 0 -1 0 0 1 0 3 0 0 0 1 5由此得到与原方程组等价的上三角方程组 X1+ X2+ X3+ X4=10 X2 - X3+ 0X4=-1 X3+ 0X4=3 X4=5(6)通过回代可得 X1 =0 X2 = 2 X3=3 X4=53.5最小二乘法的其它函数的拟合常用的函数:*幂函数y=axb *指数函数 y=abx y=aebx *对数函数 y=logax (1)指数函数的拟合设m对数据(xi,yi), i=1,2,3m ,指数函数为y=abx 两边取对数 lgy=

57、lga+xlgb令lgy=y u=lga v=lgb写成 y=u+xv 先将已知数据(xi,yi)换算成(xi ,yi),再对线性方程y=u+xv用最小二乘法拟合求得系数u和v然后再求a和b总结:线图程序化的步骤 (1)线图数表化:虽然由实测数据绘制,但使用中往往无第一手数据,所以要数表化。 *弄清坐标涵义:比例尺,大小,量刚。 *读准数值的特征点:起点、终点、波峰 、波谷。(2)确定合理精度:高则复杂,低则不合要求。(3)正确运用分段原则:分段拟合方程简单,精度高(4)选择合适的曲线拟合方程:用多种,取最佳。(5)将建立起来的公式编入程序3.6 有关数据的处理(1)恒等比较计算机有舍入误差不

58、能用x=y作为转向语句的判断条件,应用abs(x-y)sdi&i60) i+; i-; if (fabs(dd-sdi+1)(正常化)X1 /h X2 /h X3 /h Xn / h 1其中h不为零 例如:一个旧点的坐标p(x y)可表示成x y 1,将p点变换到新点p(x y) 可用矩阵相乘得到P*T=x y 1* =ax+cy bx+dy 1 =x y 1 x=ax+cy y=bx+dya b 0c d 00 0 1由此看见点的变换通过矩阵实现,其中T称为变换矩阵4.2二维变换基本类型:平移变换,比例变换,对称变换,旋转变换一 平移:是指点从一个位置移动到另一个位置的直线移动。原坐标系某点

59、p(x y),在沿x轴 平移l,沿y轴平移m,新坐标为 p(x y) ,则平移公式为 x=x+l y=y+m 用齐次坐标的变换矩阵表示 为 p=p*T=x y 1 * 1 0 00 1 0l m 1平移的通用公式为 x y 1* =x+l y+m 1二比例变换: 将图形放大或缩小设 平面任意点p(x y),令x放大或缩小a倍,y放大或缩小d倍x=ax y=dy 则T= x y 1=x y 1* =ax dy 1讨论:如a=d=1 恒等变换 如a=d=1 等比变换(1放大 , 1缩小) 如a=d 产生畸变1 0 00 1 0l m 1a 0 00 d 00 0 1a 0 00 d 00 0 1平

60、移变换的子程序:void move (int *x , int*y, int dx ,int dy)*x+=dx; *y+=dy; return; 比例变换的子程序:void scaling (int *x; int *y; float sx; float sy)*x=(int)(*x *sx); *y=(int)(*y*sy) return;三 对称变换(镜象变换)关于某一点,某轴,某直线对称1 对x轴对称 x=x y=-y T=2对y轴对称 x= -x y= y T=3对原点对称 x= -x y= -y T= 4对y=x对称 x= y y= x T= 5对y=-x对称 x= - y y=-

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论