vibra_barre_exo2.m 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. clc;clear all;close all;
  2. % Solution analytique frequence et mode de vibration d'une barre
  3. % Barre bi-encastree ;libre -libre ; encastree - ressort
  4. % H.Oudin
  5. %----------------------------------------------------------
  6. % Caracteristiques de la barre
  7. ES= 1 ; roS=1; L= 1;
  8. %----------------------------------------------------------
  9. k = 0;
  10. taille = get(0,'ScreenSize');
  11. while k < 5
  12. k = menu('Choix des conditions aux limites',...
  13. 'bi-encastree','encastree - libre','libre -libre',...
  14. 'encastree - ressort', 'sortir') ;
  15. tr = [1,2,3,4,5];
  16. nmod = 3;
  17. switch tr(k)
  18. case 1, disp('Barre bi-encastree');
  19. figure('Name','solution analytique : 3 premiers modes de vibration d''une barre',...
  20. 'Position',[taille(3)/2.01 taille(4)/2.6 taille(3)/2 taille(4)/2])
  21. for imod = 1:nmod
  22. anal=imod*pi*sqrt(ES/roS/L/L);
  23. subplot(nmod,1,imod), fplot(@(x) sin(imod*pi*x/L),[0 L],'r'),...
  24. title(['barre bi-encastree : ',num2str(imod),'ieme mode de pulsation ',num2str(anal),...
  25. ' Hz ' ]), grid
  26. end
  27. case 2, disp('encastree -libre');
  28. figure('Name','solution analytique : 3 premiers modes de vibration d''une barre',...
  29. 'Position',[taille(3)/2.01 taille(4)/2.6 taille(3)/2 taille(4)/2])
  30. for imod = 1:nmod
  31. aa=(2*imod-1)*pi/2;
  32. anal=aa*sqrt(ES/roS/L/L);
  33. subplot(nmod,1,imod), fplot(@(x) sin(aa*x/L),[0 L],'r'),...
  34. title(['barre encastree -libre : ',num2str(imod),'ieme mode de pulsation ',num2str(anal),...
  35. ' Hz ' ]), grid
  36. end
  37. case 3, disp('libre - libre');
  38. figure('Name','solution analytique : 3 premiers modes de vibration d''une barre',...
  39. 'Position',[taille(3)/2.01 taille(4)/2.6 taille(3)/2 taille(4)/2])
  40. for imod = 1:nmod
  41. anal=imod*pi*sqrt(ES/roS/L/L);
  42. subplot(nmod,1,imod), fplot(@(x) cos(imod*pi*x/L),[0 L],'r'),...
  43. title(['barre libre -libre : ',num2str(imod),'ieme mode de pulsation ',num2str(anal),...
  44. ' Hz ' ]), grid
  45. end
  46. case 4, disp('encastree - ressort');
  47. alpa = input('donner la valeur du rapport ES/kl ? [1/2]: ');
  48. if isempty(alpa) alpa=0.5; end
  49. figure('Name',['equation implicite tan(x)+alpa*x = 0 pour alpa =',...
  50. num2str(alpa)],'Position',[taille(3)/2.01 taille(4)/2.6 taille(3)/2 taille(4)/2])
  51. subplot(nmod+1,1,1),hold on, fplot(@(x) tan(x),[0,3*pi,-6,6],'r'),...
  52. fplot(@(x) -alpa*x,[0,3*pi,-6,6],'g'),
  53. title('representation de l''equation implicite'), grid
  54. %figure('Name','solution analytique : 3 premiers modes de vibration d''une barre',...
  55. % 'Position',[taille(3)/2.01 taille(4)/2.6 taille(3)/2 taille(4)/2])
  56. for imod = 1:nmod
  57. a= (2*imod-1)*pi/2+0.01;
  58. b=(2*imod+1)*pi/2-0.01;
  59. lx = fzero(@(x) tan(x)+alpa*x,[a b]);
  60. anal=lx*sqrt(ES/roS/L/L);
  61. subplot(nmod+1,1,imod+1), fplot(@(x) sin(lx*x/L),[0 L],'r'),...
  62. title(['barre encastree - ressort : ',num2str(imod),'ieme mode de pulsation ',num2str(anal),...
  63. ' Hz ' ]), grid
  64. end
  65. end
  66. end