第三章 机械设计编程基础
2.1 编程和图表处理的基本方法一、编制机械设计计算程序的基本方法设计数据表格、线图及标准规范算法设计

式中,T为转矩;
h为键高度;
l为键的工作长度;
[σp]为轮毂的许用挤压应力。
b ≈h/2
h L
b
dd
l
图1 平键联接的受力情况表1 平键(摘自GB1096-90)
轴径   
自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
二、设计图表处理的基本方法
1.表格(手册中的)分为两类:
2.表格处理的基本方法:
表格的程序化:将数表中的数据以数组形式存储和检索,直接编在解题的程序中。
表格的公式化:对于列表函数,可用曲线拟合的方法形成数学表达式并直接编于程序中。
2-2 设计数表的处理一、表格的程序化数表一维(元)数表:所查取的数据只与一个变量有关的数表;
二维(元)数表:所查取的数据与两个变量有关的数表;
它们均可用一维和二维数组的形式存入计算机,以备程序使用。
一维(元)数表程序化
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]);

示例1,
表2 材料的密度
材 料 密度 / (g.。cm-3)
工业纯铁 7。87
钢 材 7。85
高 速 钢 8。30
不 锈 钢 7。75
示例2,
表2 轴的常用材料及其机械性能序号
材料牌号
热处理
毛坯直径
mm
硬度
HB
拉伸强度极限

拉伸屈服极限

弯曲疲劳极限

剪切疲劳极限

MPa
SGMB[I]
SGMS[I]
SGM[I]
TAU[I]
0
45
正火
25

610
360
260
150
1
正火


600
300
275
140
2
回火


580
290
270
135
3
调质


650
360
300
155
4
40Cr
调质
25
1000
800
500
280
5


750
550
350
200
6


700
500
340
185
7
40CrNi
调质
25

1000
800
485
280
8


900
750
470
280
9
20Cr
渗碳
15
表面

850
550
375
215
10
淬火
30
650
400
280
160
11
回火

650
400
280
160
上表为4种材料,12种热处理规格,而每一种规格包含4种机械性能指标:
。若给每一种机械性能确定一个标识符,则该表可由以下4个一维数组表示:

二维(元)数表程序化示例1:
表3 齿轮传动的工作情况系数
原动机工作情况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的数组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]) ;

列表函数使用这类列表函数时,需要用插值的方法来检索数据。列表函数如下:
表4 蜗杆传动的相对滑动速度与当量摩擦系数之间的关系


0.01
0.05
0.10
0.25
0.50
1.0
1.5

0.110
0.090
0.080
0.065
0.055
0.045
0.040


2.0
2.5
3.0
4.0
5.0
8.0
10.0

0.035
0.030
0.028
0.024
0.022
0.018
0.016
线性插值公式:
分段线性插值的算法框图:
Y
N
检索表4当量摩擦系数的程序段:
Int n=14
float x_vs [ ] = { 0.01,0.05,0.10,
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 ) ;
}
二、表格的公式化
表6 列表函数为建立该数表的函数关系多项式,工程中通常采用数据的曲线拟合方法:最小二乘法。
 y

● ● 

● 
O x
最小二乘法基本原理,
使结点处的偏差平方和

最小,这里的
由于,因此(2)式的T可看作是多项式中的待定系数的函数。可表示为

求出上式中T为极小时的值带入式(2)中,所得多项式
就是与原函数(曲线)各结点处偏差平方总的极小时的拟合多项式。因此,这类曲线拟合问题最终是一个多元函数求极值的问题。要使

为极小,而必须满足



若定义离散性函数内积可得方程组

若写成矩阵形式

如果是关于点集的正交多项式,那末,由正交多项式的正交性,即当 时。则上述矩阵形式可简化为
这样一来,多项式的待定系数可由下式求得

关于点集的正交多项式可由下式构造:

式中,

示例:用二次多项式根据最小二乘法来拟合表7中的数据。
表7 一组数据

0
1
2
3
4

1
2
3
4
5

4
4.5
6
8
8.5
过程如下:
(1)构造关于点集的正交多项式:






(2) 求的待定系数:



于是,所求拟合多项式为

通常,拟合一组数据的多项式次数n 越高,则精度越高,但是计算量也会越大。对于机械设计的一般数表,取即可满足要求。