function [def] = simpbeam(P,a,L,E,I,incr) % [def] = SIMPBEAM(P,a,L,E,I,incr) returns an array with % the deflection [def]. [def] is also plotted. % % ALL CALCULATIONS ARE FOR A SIMPLE BEAM SUPPORTED AT EITHER END % % P is the force applied to the beam in NEWTONS % a is the distance from the left end that the force is applied in METERS % L is the length of the beam in METERS % E is the young's modulus of the material in Pa % I is the cross sectional inertia in METER^4 % icnr is the number of increments to sample along the beam % % Multiple forces can be entered in P, however, a must be the same length % to give a position for each force. P can be positive or negative. % % all values of a may not be greater then L % E, I, a, incr, and L must be greater then 0 % % def arrary is in meters (plotted in mm) % %By Roger Cortesi (Course 2 Class of 1999) for 2.007 if size(a)==size(P) else error('P and a must be the same length') end if (E < 0 | E ==0) error('E must be greater then 0'); end if (I < 0 | I ==0) error('I must be greater then 0'); end if (incr < 0 | incr ==0) error('incr must be greater then 0'); end if (L < 0 | L ==0) error('L must be greater then 0'); end for j = 1:size(a,2) if a(j) > L error('a must be less then or equal then L'); end if a(j) < 0 error('a may not be negative'); end end %for b=L-a; stepp = L/incr; x = [0:stepp:L]; def=zeros(size(x)); slp=zeros(size(x)); for j = 1:size(a,2) c1 = P(j)/(6*L*E*I); i=1; for x= 0:stepp:L if x < a(j) tempdef(i) = c1*b(j)*x*(L^2-b(j)^2-x^2); %tempslp(i) = c1*b(j)*(L^2-b(j)^2-3*x^2); elseif (x==a(j) | x>a(j)) xx=L-x; tempdef(i) = c1*a(j)*xx*(L^2-a(j)^2-xx^2); %tempslp(i) = c1*a(j)*(L^2-a(j)^2-3*xx^2); end %if i=i+1; end %for i def = def + tempdef; %slp = slp + tempslp; end %for j x = [0:stepp:L]; % theta = atan(slp); figure(1); clf; plot(x,def.*1000); hold on; grid on; title('SIMPLE BEAM deflection vs position'); xlabel('position [meters] Forces shown at location, in Newtons'); ylabel('deflection [mm]'); q=0.2; stdlength = (max(def)-min(def))*1000*q; for i = 1:size(a,2) k = find(x0 ty=def(g)*1000-stdlength; else ty=def(g)*1000+stdlength; end h = line([a(i) a(i)],[def(g)*1000 ty]); text(a(i),ty,num2str(P(i),5)); set(h,'color','red'); end %for % figure(2); % clf; % plot(x,theta.*(180/pi)); % hold on; % grid on; % title('SIMPLE BEAM slope vs position'); % xlabel('position [meters]'); % ylabel('angle from horizontal [degrees]'); % q=0.2; % stdlength = (max(theta.*(180/pi))-min(theta.*(180/pi)))*q; % for i = 1:size(a,2) % k = find(x0 % h = line([a(i) a(i)],[theta(g).*(180/pi)+stdlength/2 theta(g).*(180/pi)-stdlength/2]); % else % h = line([a(i) a(i)],[theta(g).*(180/pi)-stdlength/2 theta(g).*(180/pi)+stdlength/2]); % end % set(h,'color','red'); % end %for