[求助]请教大虾用MATLAB计算发动机固有频率和主振型的问题
最近毕业设计要答辩了但是matlab计算这一块的问题还没有解决 急上眉梢了都<br>有没有哪位前辈 搞过类似的课题 帮我写个程序 <br>程序主要是通过已知的 质量矩阵和刚度矩阵 来求固有频率和主振型的<br>跪求了急急急!![此贴子已经被cdwxg于2006-6-3 0:41:22编辑过]
<P>具体没有什么公式吗?<BR>没学过这方面的不懂咯</P> =eig(inv(M)*K); %M质量矩阵(对角阵),K刚度矩阵(对称阵)<BR>W=sqrt(W2) %固有频率<BR>ZX %振型 看看振动的书,大概是求inv(M)*K的特征值和特征向量就行了 W阵主对角线元素即为固有频率。对应的ZX阵列向量即为该频率下的振型。当然你也可以按频率大小排序,但要注意对应关系。 楼上的 能把控制画出固有频率和主振形图形的那部分程序给具体写下么
你说的这个程序是计算这个的
恩 我看过曾令贤的一篇论文 也是用的这个程序 导师说这样做的精度不够 但是没办法了 时间紧太紧!!
呵呵 谢谢大家回帖 这个论坛热心的前辈真不少
还请有能力的各位把后面 排序和PLOT曲线的那部分帮下忙 嘿嘿 惭愧了
[ 本帖最后由 ChaChing 于 2010-3-31 00:55 编辑 ] <P>M=;<BR>K=;</P>
<P>p=[];<BR>=eig(inv(M)*K);<BR>W=sqrt(W2);<BR>n=size(inv(M)*K);<BR>for i=1:n<BR> p(i)=W(i,i);<BR> ZX(:,i)=ZX(:,i)/ZX(1,i);<BR>end<BR>for j=1:n-1<BR>for i=j+1:n<BR>if p(j)>p(i)<BR>t=p(i);<BR>p(i)=p(j);<BR>p(j)=t;<BR>q=ZX(:,i);<BR>ZX(:,i)=ZX(:,j);<BR>ZX(:,j)=q;<BR>end<BR>end<BR>end<BR>for i=1:n<BR>subplot(6,1,i)<BR>plot(ZX(:,i))<BR>ylabel('主振型')<BR>xlabel('x')<BR>grid on<BR>end</P>
<P>这个是我按照提示编写的程序 我在软件上运行时画出的图特征不明显不知道是哪里出了错误请前辈门帮看看哪有错误!1</P> 你的K阵写错了吧,它不是对称阵,2行6列和6行2列的数差一个数量级。
当然,还可以用现成的函数sort进行排序,这里用起泡法进行的排序。不知你的x轴单位是什么?这个程序你运行下吧,看看符合你的要求不?
[ 本帖最后由 ChaChing 于 2010-3-31 00:58 编辑 ] <P>clc<br>clear<br>M=;<br>K=;</P>
<P>=eig(inv(M)*K);<br>W=sqrt(W2);<br>n0=size(inv(M)*K);<br>n=n0(2);</P>
<P>for i=1:n<br>p(i)=W(i,i);<br>ZX_max=max(ZX(:,i));<br>ZX(:,i)=ZX(:,i)/ZX_max;<br>end</P>
<P>for j=1:n-1<br> for i=1:n-j<br> ifp(i)>p(i+1)<br> tmp=p(i);<br> p(i)=p(i+1);<br> p(i+1)=tmp;<br> ZX_tmp=ZX(:,i);<br> ZX(:,i)=ZX(:,i+1);<br> ZX(:,i+1)=ZX_tmp;<br> end<br> end<br>end</P>
<P>for i=1:n<br>subplot(6,1,i)<br>plot(ZX(:,i))<br>ylabel_1=['第' num2str(i) '阶主振型'];<br>ylabel(ylabel_1)<br>xlabel('x')<br>grid on<br>end<br></P>
[此贴子已经被作者于2006-6-6 18:48:04编辑过]
<P>谢谢您花时间帮我解决这个问题 在你的程序中把p(i)=W(i,i);句改为p(i)=10*W(i,i)/(2*pi);所得到的固有频率与书上答案一致不知道是为什么不管怎么样 还是十分感谢你的帮助有机会还希望得到您的指导和帮助!~我QQ52976010 希望我门能成为朋友<BR></P> p(i)=10*W(i,i)/(2*pi)这是什么意思?W(i,i)就是固有频率啊。还有你的K阵,M阵数值看一下,和书上一致不? 刚度矩阵是不是有问题??求自振频率要处理边界条件,在质量矩阵和刚度矩阵中划去相应的行列,再用eig命令求解不会有错的!!!!!!
回复:(bulobuloo)谢谢您花时间帮我解决这个问题 在...
<DIV class=quote><B>以下是引用<I>bulobuloo</I>在2006-6-6 22:44:52的发言:</B><BR><P>谢谢您花时间帮我解决这个问题 在你的程序中把p(i)=W(i,i);句改为p(i)=10*W(i,i)/(2*pi);所得到的固有频率与书上答案一致不知道是为什么不管怎么样 还是十分感谢你的帮助有机会还希望得到您的指导和帮助!~我QQ52976010 希望我门能成为朋友<BR></P></DIV>
<br>不会吧?!W是在这句命令之前算出来的啊!p(i)对W没有影响的。<BR>我试过了:把p(i)=W(i,i);改为p(i)=10*W(i,i)/(2*pi);对结果没有任何影响!(不影响W也不影响排序!) 感谢<STRONG><FONT face=Verdana color=#61b713>wangzi629</FONT></STRONG>坛友的精彩回答
回复:(bulobuloo)[求助]请教大虾用MATLAB计算发动机...
<P><FONT color=#ff0000>wangzi629加威望3点,bulobuloo加威望2点,realyyy、michael111、yangzj加威望1点</FONT></P><P>多情清秋<BR>2006年6月19日</P>
页:
[1]
2