vibra_poutre.m 4.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. clc;clear all;close all;
  2. % Solution analytique frequence et mode de vibration d'une poutre
  3. % H.Oudin
  4. %----------------------------------------------------------
  5. % Caracteristiques de la poutre
  6. EI= 1 ; roS=1; L= 1;
  7. %----------------------------------------------------------
  8. k = 0;
  9. taille = get(0,'ScreenSize');
  10. while k < 6
  11. k = menu('Choix des conditions aux limites',...
  12. 'libre -libre','bi-appuyee','bi-encastree',...
  13. 'appuyee - libre','encastree - appuyee', 'sortir') ;
  14. tr = [1,2,3,4,5,6];
  15. nmod = 3;
  16. switch tr(k)
  17. case 1, disp('poutre libre - libre');
  18. disp('c''est l''exemple traite dans le cours');
  19. disp('il existe deux modes rigide une translation une rotation');
  20. figure('Name','3 premiers modes de vibration d''une poutre libre - libre',...
  21. 'Position',[taille(3)/2.01 taille(4)/2.6 taille(3)/2 taille(4)/2])
  22. subplot(nmod+1,1,1),hold on, fplot('[cos(x) , 1/cosh(x)]',[0,5*pi,-1,1],'b'),...
  23. title('representation de l''equation implicite cos(x)cosh(x)-1 = 0'), grid
  24. for imod = 1:nmod
  25. a= imod*pi;
  26. b=(imod+1)*pi;
  27. lx = fzero(@(x) cos(x)*cosh(x)-1,[a b])
  28. anal=(lx^2)*sqrt(EI/roS/(L^4));
  29. aa = -(cos(lx)-cosh(lx))/(sin(lx)-sinh(lx));
  30. mode = @(x) cos(lx*x/L)+cosh(lx*x/L)+aa*(sin(lx*x/L)+sinh(lx*x/L));
  31. %mode2= @(x) (cos(lx*x/L)+cosh(lx*x/L)+aa*(sin(lx*x/L)+sinh(lx*x/L))).*...
  32. %(cos(lx*x/L)+cosh(lx*x/L)+aa*(sin(lx*x/L)+sinh(lx*x/L)));
  33. %m = roS*quad(mode2,0,L); % Les modes sont M norme m=1
  34. subplot(nmod+1,1,imod+1), fplot(mode,[0 L],'r'),...
  35. title(['poutre libre - libre ',num2str(imod),'ieme mode de pulsation ',num2str(anal),...
  36. ' Hz ' ]), grid
  37. end
  38. case 2, disp('poutre bi-appuyee les solutions sont lx = i*pi');
  39. figure('Name','3 premiers modes de vibration d''une poutre bi-appuyee',...
  40. 'Position',[taille(3)/2.01 taille(4)/2.6 taille(3)/2 taille(4)/2])
  41. for imod = 1:nmod
  42. lx = imod*pi
  43. anal=(lx^2)*sqrt(EI/roS/(L^4));
  44. subplot(nmod,1,imod), fplot(@(x) sin(imod*pi*x/L),[0 L],'r'),...
  45. title(['poutre bi-appuyee ',num2str(imod),'ieme mode de pulsation ',num2str(anal),...
  46. ' Hz ' ]), grid
  47. end
  48. case 3, disp('poutre bi-encastree');
  49. figure('Name','3 premiers modes de vibration d''une poutre bi-encastree',...
  50. 'Position',[taille(3)/2.01 taille(4)/2.6 taille(3)/2 taille(4)/2])
  51. subplot(nmod+1,1,1),hold on, fplot('[cos(x) , 1/cosh(x)]',[0,5*pi,-1,1],'b'),...
  52. title('representation de l''equation implicite cos(x)cosh(x)-1 = 0'), grid
  53. for imod = 1:nmod
  54. a= imod*pi;
  55. b=(imod+1)*pi;
  56. lx = fzero(@(x) cos(x)*cosh(x)-1,[a b])
  57. anal=(lx^2)*sqrt(EI/roS/(L^4));
  58. aa = -(cos(lx)-cosh(lx))/(sin(lx)-sinh(lx));
  59. mode = @(x) cos(lx*x/L)-cosh(lx*x/L)+aa*(sin(lx*x/L)-sinh(lx*x/L));
  60. subplot(nmod+1,1,imod+1), fplot(mode,[0 L],'r'),...
  61. title(['poutre bi - encastree ',num2str(imod),'ieme mode de pulsation ',num2str(anal),...
  62. ' Hz ' ]), grid
  63. end
  64. case 4, disp('poutre appuyee - libre');
  65. disp('il existe un mode rigide de rotation');
  66. figure('Name','3 premiers modes de vibration d''une poutre appuyee - libre',...
  67. 'Position',[taille(3)/2.01 taille(4)/2.6 taille(3)/2 taille(4)/2])
  68. subplot(nmod+1,1,1),hold on, fplot('[tan(x) , tanh(x)]',[0,4*pi,-1.5,1.5],'b'),...
  69. title('representation de l''equation implicite tan(x) = th(x)'), grid
  70. for imod = 1:nmod
  71. a= imod*pi/2+.1;
  72. b=(2*imod+1)*pi/2-.1;
  73. lx = fzero(@(x) tan(x)-tanh(x),[a b])
  74. anal=(lx^2)*sqrt(EI/roS/(L^4));
  75. aa = sin(lx)/sinh(lx);
  76. mode = @(x) sin(lx*x/L)+aa*sinh(lx*x/L);
  77. subplot(nmod+1,1,imod+1), fplot(mode,[0 L],'r'),...
  78. title(['poutre appuyee - libre ',num2str(imod),'ieme mode de pulsation ',num2str(anal),...
  79. ' Hz ' ]), grid
  80. end
  81. case 5, disp('poutre encastree - appuyee');
  82. figure('Name','3 premiers modes de vibration d''une poutre encastree - appuyee',...
  83. 'Position',[taille(3)/2.01 taille(4)/2.6 taille(3)/2 taille(4)/2])
  84. subplot(nmod+1,1,1),hold on, fplot('[tan(x) , tanh(x)]',[0,4*pi,-1.5,1.5],'b'),...
  85. title('representation de l''equation implicite tan(x) = th(x)'), grid
  86. for imod = 1:nmod
  87. a= imod*pi/2+.1;
  88. b=(2*imod+1)*pi/2-.1;
  89. lx = fzero(@(x) tan(x)-tanh(x),[a b])
  90. anal=(lx^2)*sqrt(EI/roS/(L^4));
  91. aa = (cos(lx)+cosh(lx))/(sin(lx)+sinh(lx));
  92. mode = @(x) cos(lx*x/L)-cosh(lx*x/L)-aa*(sin(lx*x/L)-sinh(lx*x/L));
  93. subplot(nmod+1,1,imod+1), fplot(mode,[0 L],'r'),...
  94. title(['poutre encastree - appuyee ',num2str(imod),'ieme mode de pulsation ',num2str(anal),...
  95. ' Hz ' ]), grid
  96. end
  97. end
  98. end
  99. disp('les autres cas seront simples a programmer en utilisant le cours');