梁弯曲分析,自由振动分析的C程序.doc
1、梁弯曲分析,自由振动分析的C程序程序:#include <math.h>#include <stdio.h>float zgxj(float b,float h)/*轴惯性矩计算子程序*/float I;I=b*h*h*h/12;return(I);void main() /*主函数*/*/ int i,j;float a44;float L,b,h,jz,l; /*设置轴的长度、周截面的高度h、宽带b、轴惯性矩、梁单元长度*/int N;/*设置节点数量N*/float E; /*刚度系数模量*/printf("请输入刚度系数:");scanf("%f",&E);printf("n");printf("请输入杆的长度:");scanf("%f",&L);printf("n");printf("请输入杆的宽带和高度(数据之间用空格隔开):");scanf("%f %f",&b,&h);printf("n");printf("请需要输入划分的节点数量(建议不要太大<20):");scanf("%d",&N);printf("n");jz=zgxj(b,h);/*计算轴惯性矩的值*/l=L/(N+1);/*求梁单元长度*/a00=12*E*jz/(l*l*l); /*计算刚度矩阵*/a01=6*E*jz/(l*l);a02=(-12)*E*jz/(l*l*l);a03=6*E*jz/(l*l);a10=6*E*jz/(l*l);a11=4*E*jz/l;a12=(-6)*E*jz/(l*l);a13=2*E*jz/l;a20=(-12)*E*jz/(l*l*l);a21=(-6)*E*jz/(l*l);a22=12*E*jz/(l*l*l);a23=(-6)*E*jz/(l*l);a30=6*E*jz/(l*l);a31=2*E*jz/(l*l);a32=(-6)*E*jz/(l*l);a33=4*E*jz/l;printf("梁单元刚度矩阵K:n");for(i=0;i<=3;i+) /*输出刚度矩阵*/for(j=0;j<=3;j+)printf(" %.1f ",aij);printf("n");#include<stdio.h>#include<math.h>float zgxj(float b,float h)/*轴惯性矩计算子程序*/float I;I=b*h*h*h/12;return(I);(2)求振动频率的程序float zizhen(float E,float I,float m,float L,int i) /*模特分析子程序,用于输出前各阶自振频率*/float f;float a4=3.516,22.03,61.7,120.9;f=ai*sqrt(E*I/m)/L/L);/*计算前四阶自振频率*/return(f);/*返回单前频率*/void main()/*主函数*/float L,b,h,iz; /*设置轴的长度、周截面的高度h、宽带b、轴惯性矩*/int i,j;/*设置节点数量N*/float E,m;float a4=3.516,22.03,61.7,120.9,f4;/*定义影响系数和自振频率的字符*/printf("请输入刚度系数:");scanf("%f",&E);printf("n");printf("请输入杆的长度:");scanf("%f",&L);printf("n");printf("请输入杆的宽带和高度(数据之间用空格隔开):");scanf("%f %f",&b,&h);printf("n");printf("请输入线密度(单位:kg/立方米):");scanf("%f",&m);printf("n");iz=zgxj(b,h); for(i=0;i<=3;i+) /*循环计算各阶频率*/ fi=zizhen(E,iz,m,L,i);j=i+1;printf("第 %d 阶的频率为 %f rad/s n",j,fi); 运算结果如图1.1所示图1.1