1、8 0 0 4 0 6; m:0 0 -8 0 10 0 0运行程序如下:结果为:角位移为:单元编号123456左端弯矩0.00000-14.92439-7.30243-12.37565-8.16809-7.95197右端弯矩14.92439-0.6975712.3756518.168097.9519723.02401弯矩图如下:2 算例2算例图示:0 1 2 3 4 5 6;-9.82331-12.35339-7.76314-12.55393-6.58562-14.1036012.35339-0.2368612.5539316.5856214.103603 算例30 1 2 3 4 5 0;
2、-9.83978-12.32059-7.87793-12.19318-8.21722-7.9379412.32059-0.1220712.1931818.217227.9379423.031034 算例41 2 3 4 5 6 7;-0.00000-14.25984-7.18863-12.73600-6.53707-14.1157314.95284-0.8113712.7360016.5370714.11573五源程序#includeconio.h定义变量int joint7; 结点编号int unit6; 单元编号float length6; 长度float EI6; 抗弯刚度float P
3、6; 集中力float q6; 均部荷载float m7; 集中力偶double I6; 线刚度int number=7,i,j;double K77=0; 整体刚度矩阵double k622; 单元刚度矩阵double MP62,Mq62,Mlast62,M7=0,tatleM7,mm7,Mqueue7=0,antiM7=0;依次为:集中力、均布荷载引起的固端弯矩,最终杆端弯矩,全部荷载引起的弯矩,总的结点荷载,按结点编号排列的结点集中力偶,按结点编号排列的固端弯矩,等效结点弯矩double angle7=0; 角位移void input(); 输入函数void solve(); 求解函数v
4、oid output(); 输出函数void Gauss(); 高斯消元法void main() input(); solve(); output();void input() clrscr(); printf(Please input data.nnThe joint number:); for(i=0;i=1; Mqueuejointi-1=Mi; mmjointi-1=mi; antiMi=-Mqueuei; tatleMi=antiMi+mmi; Ii=(EIi/lengthi); if(joint0=0) Kjoint1-1joint1-1+=4*I0; if(joint6=0) K
5、joint5-1joint5-1+=4*I5; ki00=4*Ii,ki01=2*Ii,ki10=2*Ii,ki11=4*Ii;=1&jointi+1 Kjointi-1jointi-1+=ki00; Kjointi-1jointi+1-1+=ki01; Kjointi+1-1jointi-1+=ki10; Kjointi+1-1jointi+1-1+=ki11; getch();void output()The data you put in:ntjoint :t,jointi);nntunit :,uniti);nntlength :%1.0f,lengthi);nntEI :%1.1f,
6、EIi);nntFp :,Pi);nntq :,qi);nntm :,mi); Gauss(); Mlasti0=ki00*anglejointi-1+ki01*anglejointi+1-1+MPi0+Mqi0; Mlasti1=ki10*anglejointi-1+ki11*anglejointi+1-1+MPi1+Mqi1;n-nThe angle(1/EI):nnnumber;%12.6f,anglei);nunit number%6d nnleft M ti+) printf(%12.5f,Mlasti0);nnright Mt,Mlasti1);void Gauss() int l
7、,m;double box; double BOX7=0;for(j=0;j(number-1);j+) if(Kij!=0) for(m=0;mm+) BOXm=Kim;Kim=Kjm;Kjm=BOXm; box=tatleMi;tatleMi=tatleMj;tatleMj=box; break; for(m=j+1; Kjm/=Kjj; tatleMj/=Kjj; Kjj=1; for(l=j+1;l=j;m-) Klm+=-Kjm*Klj; tatleMnumber-1/=Knumber-1number-1; Knumber-1number-1=1; anglei=tatleMi; for(i=number-2;i=0;i-) for(j=number-1;ji;j-) anglei=anglei-Kij*anglej;