第三章机械设计编程基础 2.1编程和图表处理的基本方法 、编制机械设计计算程序的基本方法 (1)设计数据 (2)表格、线图及标准规范 (3)算法设计 式中,T为转矩 h为键高度 为键的工作长度 [op为轮毂的许用挤压应力 图1平键联接的受力情况 表1平键(摘自GB1096-90) 开始 轴径%m mm mm 输入T,d,l,YBP 自6~8 根据d检索出h >8~10 3 BP=4T/(dlh) >12~1 >17~22 BP≤YBP? 输出 输出 黄足强度条件 不满足强度条 12 >44~50 结束
第三章 机械设计编程基础 2.1 编程和图表处理的基本方法 一、编制机械设计计算程序的基本方法 (1) 设计数据 (2) 表格、线图及标准规范 (3) 算法设计 p p dlh T = 4 式中,T 为转矩; h 为键高度; l 为键的工作长度; [σp]为轮毂的许用挤压应力。 图 1 平键联接的受力情况 b ≈h/2 h L b dd l 表 1 平键(摘自 GB1096-90) 轴径 mm d mm b mm h 自 6~8 2 2 >8 ~10 3 3 >10~12 4 4 >12~17 5 5 >17~22 6 6 >22~30 8 7 >30~38 10 8 >38~44 12 8 >44~50 14 9 d T 开始 输入: T, d,l,YBP 根据 d 检索出 h BP = 4T /(dlh) BP YBP ? 输出: 满足强度条件 输出: 不满足强度条 件 结束
二、设计图表处理的基本方法 1.表格(手册中的)分为两类: 数表:表格中的数据之间没有任何联系 列表函数:表格中的数据之间存在着某种联系 2.表格处理的基本方法: (1)表格的程序化:将数表中的数据以数组形式存储和检索,直接编 在解题的程序中。 (2)表格的公式化:对于列表函数,可用曲线拟合的方法形成数学表 达式并直接编于程序中。 2-2设计数表的处理 表格的程序化 数表 维(元)数表:所查取的数据只与一个变量有关的数表; 二维(元)数表:所查取的数据与两个变量有关的数表 它们均可用一维和二维数组的形式存入计算机,以备程序使用。 一维(元)数表程序化 示例1 int l: 表2材料的密度 float GAMA[]气{7877.85830,775} print(“1.工业纯铁\n”); 材料密度/(g.cm3) print(“1.钢材\n”); 工业纯铁 钢材 printf((“2.高速钢n”); 高速钢 不锈钢 print(“3.不锈钢n”); 7。75 printf((“选择材料类型:”); scanf(“%d,&) printf((“3.不锈钢n”); printi(“材料的密度:%升n”,GAMA[-1]);
二、设计图表处理的基本方法 1.表格(手册中的)分为两类: : .. : ; 列表函数 表格中的数据之间存在着某种联系 数表 表格中的数据之间没有任何联系 2.表格处理的基本方法: (1)表格的程序化:将数表中的数据以数组形式存储和检索,直接编 在解题的程序中。 (2)表格的公式化:对于列表函数,可用曲线拟合的方法形成数学表 达式并直接编于程序中。 2-2 设计数表的处理 一、表格的程序化 1. 数表 一维(元)数表:所查取的数据只与一个变量有关的数表; 二维(元)数表:所查取的数据与两个变量有关的数表; 它们均可用一维和二维数组的形式存入计算机,以备程序使用。 一维(元)数表程序化 示例 1 : int I; float GAMA[ ] ={ 7.87,7.85,8.30,7.75}; printf( “1. 工业纯铁\ n”); printf( “1. 钢材\ n”); printf( “2. 高速钢\ n”); printf( “3. 不锈钢\ n”); printf( “选择材料类型:”); scanf( “ % d”,&I); printf( “3. 不锈钢\ n”); printf( “材料的密度:% f\ n”,GAMA[I-1]); 表 2 材料的密度 材 料 密度 / (g.。cm-3 ) 工业纯铁 7。87 钢 材 7。85 高 速 钢 8。30 不 锈 钢 7。75
示例2 表2轴的常用材料及其机械性能 拉伸强度拉伸屈弯曲疲剪切疲 极限服极限|劳极限劳极限 序热处毛坯直径 硬度 MPa SGMBI SGMS叫 SGMII TAUI 正火 ≤241 610 360 260150 正火 ≤100 170-217 600 30 00 275 140 45 回火>100-300162-217 580 290 270 135 调质 ≤200 217-255 0 360 300 155 1000 50 280 456789 周质 ≤100 241-286 750 350 200 >100-300241-286 700 185 300-320 1000 485 280 40CrNi调质 100 270-300 900 750 470 渗碳 850 550 1020Cr|淬火 表面 56-62HRC 400 280 11 60 650 400 上表为4种材料,12种热处理规格,而每一种规格包含4种机械性能指标ε σa,σs,σκ1。若给每一种机械性能确定一个标识符,则该表可由以下4个 一维数组表示: B[] =0,1,2,…,11 SGMASII Ⅰ=01.2..11 1 -SGML =0,1,2,…,11 =0,1,2,…,11 二维(元)数表程序化 示例1: 表3齿轮传动的工作情况系数K 原动机工作情况I 工作机工作情况J 平稳载荷J=1 中等冲击J=2 严重冲击J=3 工作平稳1=1 1.75 轻度冲击I=2 1.25 中等冲击I=3 1.75 ≥2.25
示例 2 : 表 2 轴的常用材料及其机械性能 序 号 材料牌号 热处 理 毛坯直径 mm 硬度 HB 拉伸强度 极限 B 拉伸屈 服极限 S 弯曲疲 劳极限 −1 剪切疲 劳极限 −1 MPa SGMB[I] SGMS[I] SGM[I] TAU[I] 0 45 正火 25 241 610 360 260 150 1 正火 100 170 − 217 600 300 275 140 2 回火 100 −300 162 − 217 580 290 270 135 3 调质 200 217 − 255 650 360 300 155 4 40Cr 调质 25 1000 800 500 280 5 100 241− 286 750 550 350 200 6 100 −300 241− 286 700 500 340 185 7 40CrNi 调质 25 300 −320 1000 800 485 280 8 100 270 −300 900 750 470 280 9 20Cr 渗碳 15 表面 56 −62HRC 850 550 375 215 10 淬火 30 650 400 280 160 11 回火 60 650 400 280 160 上表为 4 种材料,12 种热处理规格,而每一种规格包含 4 种机械性能指标: 1 1 , , , − − B S 。若给每一种机械性能确定一个标识符,则该表可由以下 4 个 一维数组表示: 0,1,2, ,11 0,1,2, ,11 0,1,2, ,11 0,1,2, ,11 1 1 − − − − − − = − − − − − − = − − − − − = − − − − − = − − TAU I I SGM I I SGMAS I I SGMAB I I S B 二维(元)数表程序化 示例 1: 表 3 齿轮传动的工作情况系数 KA 原动机工作情况 I 工作机工作情况 J 平稳载荷 J=1 中等冲击 J=2 严重冲击 J=3 工作平稳 I=1 1 1.25 1.75 轻度冲击 I=2 1.25 1.5 ≥2 中等冲击 I=3 1.5 1.75 ≥2.25
由表可见,原动机工况和工作机工况都有多个“去向”。 用条件语句编制程序就会显得冗长,故可采用3×3的数组W[3][3]。有关 程序如下 Intl.J Float WK[]3]={1,1.25,1.75,1.25,1.5,2,15,1.75225} Printf(“原动机工作情况:\n”); Printf 1.工作平稳ln”); Printf(“ 2.轻度冲击n”) Printf 3.中度冲击n”) Printf 请选择序号:Ⅶn”); Scanf(“%d”,&); Printf(“工作机工作情况:n"”); Printf(“ 1.平稳载荷n”); Printf 2.中等冲击n”) Printf(“ 3.严重冲击n”); Printf(“ 请选择序号:\n”) Scanf(“%d”,&aJ); Printf(“工况系数:%升n,WK[-们[-1]); 2.列表函数 使用这类列表函数时,需要用插值的方法来检索数据。列表函数如下 表4蜗杆传动的相对滑动速度v与当量摩擦系数山之间的关系 0.010.050.100.250.501.01.5 0.1100.0900.0800.0650.0550.0450.040 Vs 2.02.53.04.05.08.010.0 ,0.0350.0300.0280.0240.0220.0180.016 线性插值公式: y-y y=) DX
由表可见,原动机工况和工作机工况都有多个“去向”。 用条件语句编制程序就会显得冗长,故可采用 3×3 的数组 WK[3][3]。有关 程序如下: Int I,J Float WK[ ] [3] = {1,1.25,1.75,1.25,1.5,2,1.5,1.75,2.25}; Printf ( “ 原动机工作情况:\n”) ; Printf ( “ 1. 工作平稳\ n”) ; Printf ( “ 2. 轻度冲击\ n”) ; Printf ( “ 3. 中度冲击\ n”) ; Printf ( “ 请选择序号:\n”) ; Scanf (“ % d”, &I); Printf ( “ 工作机工作情况:\n”) ; Printf ( “ 1. 平稳载荷\ n”) ; Printf ( “ 2. 中等冲击\ n”) ; Printf ( “ 3. 严重冲击\ n”) ; Printf ( “ 请选择序号:\n”) ; Scanf (“ % d”, &J); Printf ( “ 工况系数:% f\ n”, WK [I-1] [j-1]) ; 2. 列表函数 使用这类列表函数时,需要用插值的方法来检索数据。列表函数如下: 表 4 蜗杆传动的相对滑动速度 s v 与当量摩擦系数 v 之间的关系 s v m/s 0.01 0.05 0.10 0.25 0.50 1.0 1.5 v 0.110 0.090 0.080 0.065 0.055 0.045 0.040 s v m/s 2.0 2.5 3.0 4.0 5.0 8.0 10.0 v 0.035 0.030 0.028 0.024 0.022 0.018 0.016 线性插值公式: ( )i i i i i i x x x x y y y y − − − = + − − 1 1
分段线性插值的算法框图: 检索表4当量摩擦系数的程序段: Intn=14 开始 float vs[]={0.01,0.05,0.10, 输入:列表函数两组数 据x和y的插值点x 0.25,0.50,1.0,15,20,253.0,4.0 I=1 508.0,10.0} floaty my[]={0.110,0090, x≤x 0.080,0.065,0.0550.045,0.040,0 l=+1 035,0.030.0.028,0.024,0.022,0. -n- 018,0016} floatY S M v. y=y x1-x-1 float lineinsert( float *sx, float 'sy, intn, float inp); 结束 vs=1.24 m_v= lineinsert(x_VS,Y_Mv n,v_s) 有关线性分段插值的程序为 float lineinsert float *sx, float *sy, int n, float inp ) float outp for(1=1; i<n-1; i++ )if( inp<sx [i]break outp=sy[]+( sy[]-sy[i-1])*(inp-sx[ i])/(sx[ i]-sy[ 1-1]); return(outp)
有关线性分段插值的程序为 分段线性插值的算法框图: Y N 检索表 4 当量摩擦系数的程序段: Int n=14 float x_vs [ ] = { 0.01,0.05,0.10, 0. 25,0.50,1.0,1.5,2.0,2.5,3.0,4.0 ,5.0,8.0,10.0 }; float Y_Mv [ ] = { 0.110,0.090, 0.080,0.065,0.055,0.045,0.040,0 .035,0.030,0.028,0.024,0.022,0. 018,0.016 }; float v_s,M_v ; float lineinsert ( float *sx,float *sy,int n, float inp); v_s = 1.24; m_V = lineinsert ( x_VS,Y_Mv, n,v_s ); float lineinsert ( float *sx, float *sy, int n, float inp ); { int i; float outp; for ( I=1;i<n-1;i++ ) if ( inp<sx [ i ] break; outp = sy[ i ] + ( sy[ i ] - sy[ i-1] ) * (inp – sx[ i ] ) / (sx[ i ] - sy[ I-1 ] ); return ( outp ) ; } 开始 输入:列表函数两组数 据 i i x 和y 的插值点 x I=1 ?i x x I=I+1 I=n-1 ( )i i i i i i x x x x y y y y − − − = + − − 1 1 结束
二、表格的公式化 表6列表函数 为建立该数表的函数关系多项式,工程 X.X 中通常采用数据的曲线拟合方法:最小二乘 Y y1y2…,y 最小二乘法基本原理: s(x) x. y 对于给定的一组结点,数据(x,y,)(=1,2…m)可构造一个n(n<m)次 的多项式 n S(x)=∑a,P,( k=0 使结点处的偏差平方和 T=∑Sn(x2-y i=0 i=Ok=0 最小,这里的P(x)是k的多项式 由于x,y是已知的一组数据,因此(2)式的T可看作是多项式S(x)中 的待定系数a4(k=1,2,…,n)的函数。可表示为 T=T(a0,a,…,an)
二、表格的公式化 表 6 列表函数 为建立该数表的函数关系多项式,工程 中通常采用数据的曲线拟合方法:最小二乘 法。 最小二乘法基本原理: 使结点处的偏差平方和 (2) = = = = − = − m i 0 2 m i 0 n k 0 i ) y i (x k P k a 2 ) i y i (x n T S 最小,这里的 P (x)是k的多项式. k 由于 xi , yi是已知的一组数据 ,因此(2)式的 T 可看作是多项式 S (x) n 中 的待定系数 a (k , , ,n) k =1 2 的函数。可表示为 ( , , , ) T =T a0 a1 a n y y S ( x ) = n ● ● f (x) ● ● ( , ) i i x y O x X x , x , , x , 1 2 n Y y1 , y2 , , yn , 对于给定的一组结点,数据 (x , y )(i 1,2, ,m) i i = 可构造一个 n(n<m)次 的多项式: = = = n k ( x ) ( ) k P k ( x ) a n y S 0 1
求出上式中T为极小时的αn,1,…,αn值带入式(2)中,所得多项式S(x) 就是与原函数(曲线)各结点处偏差平方总的极小时的拟合多项式。因此, 这类曲线拟合问题最终是一个多元函数求极值的问题。要使 r=7(a,,(,)=S∑(x)-f(x) 为极小,而αn,α,…,α,必须满足 aT S=0,1,…,n 即 2∑|∑aP(x)-f(x)P(x1) k=0 ∑P(x)P(x)-2∑f(x)P(x)=0 若定义离散性函数内积(f,p)=∑f(x)p(x),则可得方程组 ∑(P,P,x4=(f,P,) 若写成矩阵形式 (P,P)(P,P) P,P)「a。「(f,P) (P,P)(B,P) (P,P) (f,P) (P,P)(P,P (f,P) 如果P(x)是关于点集{i=0,l,…,m)的正交多项式,那末,由正交多 项式的正交性,即当t≠q时(,p,)=0。则上述矩阵形式可简化为 (P,P) (P1,P) (f,P) (P,P) (f,P) 这样一来,多项式Sn(x)的待定系数4可由下式求得
求出上式中 T 为极小时的 n , , , 0 1 值带入式(2)中,所得多项式 S (x) n 就是与原函数(曲线)各结点处偏差平方总的极小时的拟合多项式。因此, 这类曲线拟合问题最终是一个多元函数求极值的问题。要使 = = = = − m i n k n k k i xi T T P x f 0 2 0 0 1 ( , , ) ( ) ( ) 为极小,而 n , , , 0 1 必须满足 s n T s = 0 = 0,1,, 即 2 2 0 2 0 0 0 0 0 = − = = − = = = = = ( ) ( ) ( ) ( ) ( ) ( ) ( ) s i m i s i i n k k i m i k s i m i n k k k i i s P x P x f x P x P x f x P x T 若定义离散性函数内积 = = m i xi p xi f p f 0 ( , ) ( ) ( ),则 可得方程组 (Pk , P s )k = ( f , P s ) s = 0,1,,n 若写成矩阵形式 = ( , ) ( , ) ( , ) ( , ) ( , ) ( , ) ( , ) ( , ) ( , ) ( , ) ( , ) ( , ) n n n n n n n n f P f P f P P P P P P P P P P P P P P P P P P P 1 0 1 0 0 1 1 0 1 1 1 0 0 0 1 0 如果 P (x ) k 是关于点集 x (i m) i = 0,1, , 的正交多项式,那末,由正交多 项式的正交性,即当 t q 时 (pi , pq ) = 0 。则上述矩阵形式可简化为 这样一来,多项式 S (x) n 的待定系数 k 可由下式求得 = ( , ) ( , ) ( , ) ( , ) ( , ) ( , ) n n n Pn f f P f P P P P P P P 1 0 1 0 1 1 0 0
(f,P) ∑f(x)P(x) =0.1 (P,P)∑[P(x) 关于点集{x}(i=0,…,m)的正交多项式P(x)可由下式构造: P(x)=1 P(=(x-b)p(x) P(x)=(x-b)P(x)-C P(x) 式中 b (P,xP) k=0,1,2,…,n-1 (P,P) k=1,2, 示例:用二次多项式S(x)根据最小二乘法来拟合表7中的数据。 表7一组数据 4 4 4.5 6 8.5 过程如下: (1)构造关于点集{x}(=0,2,3,4)的正交多项式 b (P,xP) ∑xIP(x:) x;15 ∑IP(x,) P(x)=(x-b)P(x)=x-3 S(P, P ∑IP(x)∑(x-3)10 (P,P)∑|P(x)∑1
k n P x f x P x P P f P m i k i m i i k i k k k k , , , [ ( )] ( ) ( ) ( , ) ( , ) 0 1 0 2 0 = = = = = 关于点集 x (i , , ,m) i = 01 的正交多项式 P (x) k 可由下式构造: = − − = = − = P + x x b P x C P − x k n P x x b P x P x k k k k k ( ) ( ) ( ) ( ) , , , ( ) ( ) ( ) ( ) 1 2 1 1 1 1 0 0 0 式中, 1 2 1 0 1 2 1 1 1 = = − = = − − − k n P P P P C k n P P P xP b k k k k k k k k k k , , , ( , ) ( , ) , , , , ( , ) ( , ) 示例:用二次多项式 S (x) n 根据最小二乘法来拟合表 7 中的数据。 表 7 一组数据 x 0 1 2 3 4 过程如下: (1)构造关于点集 x (i = 0,1,2,3,4) i 的正交多项式: P0 (x) =1 3 3 15 1 4 0 4 0 4 0 2 0 4 0 2 0 0 0 0 0 0 = = = = = = = = = i i i i i i i i x P x x P x P P P xP b [ ( )] [ ( )] ( , ) ( , ) P1 (x ) = (x − b0 )P0 (x) = x − 3 2 5 10 1 3 4 0 4 0 2 4 0 2 0 4 0 2 1 0 0 1 1 1 = = − = = = = = = = i i i i i i i x P x P x P P P P c ( ) [ ( )] [ ( )] ( , ) ( , ) Xi 1 2 3 4 5 Yi 4 4.5 6 8 8.5
(P,xP) ∑x|P(x)∑x(x1-3)30 (P,P)∑IP(x ) i=0 P(x)=(r-b)P(x)-Cip(x) 3)(x-3)-2=x2-6x+7 (2)求S(x)的待定系数: as(f,P)∑fP(x)23=62 (P,P) ∑IP(x)∑1 asGf,P)_h(x)∑f(x,-3)125:125 (P,P)∑IP(x,)∑(x2-3) (f,P2) fP(x)∑∫(x2-6x1+7) 0.5 d2(P2,P2)∑IP(x)∑(x2-6x+7)2140.0357 于是,所求拟合多项式为 y=S,(x)=a P(x)+a,P(x)+a,P(r) =62+1.25(x-3)+0.0357(x2-6x+7 =2.6999+1.0358x+0.0357x 通常,拟合一组数据的多项式次数n越高,则精度越髙,但是计算量也会越大。对于机 械设计的一般数表,取n≤3即可满足要求
3 10 30 3 3 4 0 2 4 0 2 4 0 2 1 4 0 2 1 1 1 1 1 1 = = − − = = = = = = = i i i i i i i i i i x x x P x x P x P P P xP b ( ) ( ) [ ( )] [ ( )] ( , ) ( , ) 3 3 2 6 7 2 P2 (x) = (x − b)P1 (x) −C1P0 (x) = (x − )(x − ) − = x − x + (2) 求 S (x) 2 的待定系数: 6 2 5 31 1 4 0 4 0 4 0 2 0 4 0 0 0 0 0 0 . [ ( )] ( ) ( , ) ( , ) = = = = = = = = = i i i i i i i i f P x f P x P P f P 1 25 10 12 5 3 3 4 0 2 4 0 4 0 2 1 4 0 1 1 1 1 1 . . ( ) ( ) [ ( )] ( ) ( , ) ( , ) = = − − = = = = = = = i i i i i i i i i i x f x P x f P x P P f P 0 0357 14 0 5 6 7 6 7 4 0 2 2 4 0 4 0 2 2 4 0 2 2 2 2 2 . . ( ) ( ) [ ( )] ( ) ( , ) ( , ) = = − + − + = = = = = = = i i i i i i i i i i i i x x f x x P x f P x P P f P 于是,所求拟合多项式为 2 2 2 0 0 1 1 3 3 2 6999 1 0358 0 0357 6 2 1 25 3 0 0357 6 7 x x x x x y S x P x P x P x . . . . . ( ) . ( ) ( ) ( ) ( ) ( ) = + + = + − + − + = = + + 通常,拟合一组数据的多项式次数 n 越高,则精度越高,但是计算量也会越大。对于机 械设计的一般数表,取 n 3 即可满足要求