第2章工程数据的计算机处理幻灯片.ppt

  1. 1、本文档共63页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第二章 计算机数据处理 引言 在机械产品的设计过程中,经常需要引用一系列标准、规范、计算公式及大量的数据资料,如数据列表、实验曲线等,在传统的设计过程中,设计人员通过查阅相关的设计手册来获得;在设计手册中,这些资料多以数表和线图的形式给出,故在进行计算机辅助设计过程中,需将数表及线图转换成计算机能够处理的形式,以方便在使用过程中通过应用程序进行调用和检索查询,这就涉及到工程数据的计算机处理。 教学目的 本章让学生在学习了几种工程数据计算机处理方法后,可以比较和分析各种工程数据计算机处理方法的特点,并自己动手利用高级语言编制相关程序。 常用设计数据或资料的计算机处理 主要包括三种方法 数组化: 将数表中的数据或将线图离散化成数表的数据编入程序,存入一维、二维或多维数组。 文件化: 数据量较大时,将数表中的数据或将线图离散化成数表的数据,存入数据文件或数据库。数据独立于应用程序 公式化:将数表或线图转化为公式编入程序。 工程数据的计算机处理主要包括三种方法 工程数据程序化 将工程数据直接编写在应用程序中,在应用程序内部对数据进行查询、处理和计算,它包括数表程序化和线图程序化 建立数据文件 将数据建立成一个独立的数据文件,并单独存储,使它与应用程序分开,需要时,通过应用程序来打开、调用和关闭数据文件,并进行相关处理 建立数据库 将工程数据存放在数据库中,根据需要通过应用程序来打开、调用和关闭数据库文件,并进行相关处理 2.1 数表的计算机处理技术 对于数据量小的数表,可用计算机算法语言对一维、二维或多维数组进行赋值的方法分别对一维、二维或多维数组进行程序化处理。 对于数据量大的数表,可存入数据文件或数据库中。 对于列表函数,还可进行公式化处理。 2.1.1 数表的数组化 1、一维数组 2、二维数组 直接查找与插值法 3、多维数组 2.1.2 数表的文件化 对于数据量大的数表或数图很多,需要将数表进行文件化处理。 2.1 数表程序化 数组程序化方法 用数组的形式程序化数表 插值 数表拟合公式化 1.用数组的形式程序化数表 设计手册中的数表可以用数组的形式将其程序化。对于一维数表,其数据在程序化时可用一维数组来标识,例如对下面带轮包角系数表,用数组的形式进行程序化,其程序代码见下页: 用数组的形式程序化数表 C语言程序代码如下: float fastserach(a,ai,ki) { int i,n=10; float a, ai[12],ki[12]; ki[n+1]=0; ai[n+1]=a; for (i=1;in+1;i++) if (( a == ai[i] ) ( i = n)) return(ki[i]); } 2.插值 数表函数:在工程设计手册数表中的数据之间多数存在一定的函数关系,将其称为数表函数,它们有些是精确公式,有些是经验公式。为了便于设计人员查询,在手册中多将其以数表的形式表示 插值方法:所谓插值方法,即在插值点附近选取几个合适的节点,过这些选取的节点构造一个函数y=p(x)作为列表函数f(x)的近似表达式,然后计算p(x)的值以求得f(x)的值 常用插值方法 线性插值 抛物线插值 拉格朗日一元n次插值 1)线性插值 线性插值是利用通过两节点(x1,y1)和(x2,y2)的直线方程p(x)来代替原来的列表函数f(x)。设插值点为(x,y),其线性插值公式为: 2)抛物线插值 抛物线插值是利用通过三个节点(x1,y1)、(x2,y2) 和(x3,y3)的抛物线方程p(x)来代替原来的数表函数f(x),其抛物线插值公式为: 程序举例: float parabola (n,x,xi,yi) int n; float x,xi[],yi[]; { int i,j,k; float y,m; k=0; for (i=0;i=n-1;i++) if ((x-xi[i])*(x-xi[i+1])=0) { k=i;break;} if (k==i) k=i; else if (fabs(x-xi[0])fabs(x-xi[n])) k=0; else k=n-1; if ((k==n-1) || (k != 0) (fabs(x-xi[k])(x-xi[k+1])) k=k-1; y=0; for (i=k;i=k+2;i++) { m=1.0; for (j=k;j=k+2;j++) if (j!=i) m=m*(x-xi[j])/(xi[i]-xi[j]); y=y+m*yi[i]; } return(y); } m=1.0; for (j=k;j=k+2;j++) if (

文档评论(0)

love87421 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档