The Fixed Supports Beam Problem:
Constant Distributed Load Case

Van Warren
Warren Design Vision
Little Rock, Arkansas
December 9, 1996

Problem

A simply supported beam is subjected to a truncated distributed load that varies linearly along its span:

Determine the reactions at each of the supports, the deflection along the span, the slope at the endpoints, the shear and the bending moment.

Variables

L  = beam length
	Ra = the reaction at support A
	Rb = the reaction at support B
	Va = the shearing force at support A
	Vb = the shearing force at support B
	w  = spanwise load (units of force per unit length)
	y(x)  = deflection as a function of x
	V(x)  = shear as a function of x
	M(x)  = bending moment as a function of x

Initializations

x =.
Ra =.
Rb =.
w =.
Ma =.

strip2[u_] := First[First[u]] ;
ruleToEquality[u_] :=  u /. Rule -> Equal ;
equalityToRule[u_] :=  u /. Equal -> Rule ;
ruleToSet[u_] :=  u /. Rule -> Set ;
ruleToFunction[u_] :=  u /. Rule -> SetDelayed ;
rePresent[u_] := strip2[u] ;
enSconce[u_] := ruleToEquality[u] ;

srf[s_, l_]:=StringReplace[s,Join[{"["->"(", "]"->")"},l]];

numFix[s_]:=
StringReplace[s,
{
	"EI"->"(E*I)",
	"1.*"->"",
	"0.3333333333333333333"->"(1/3)",
	"(-x^2"->"(-(x^2)",
	"(-a^2"->"(-(a^2)",
	"(-b^2"->"(-(b^2)",
	"(-x^4"->"(-(x^4)",
	"(-a^4"->"(-(a^4)",
	"(-b^4"->"(-(b^4)"
}
];

tsf[s_] := ToString[s, FormatType->InputForm];

fix[e_, l_] := srf[tsf[e], l];

outPut[e_] := Print[numFix[numFix[ToString[InputForm[e]]]]];

Sum Forces & Moments

First we sum forces and moments to deduce the values of the reactions at supports A and B.  Then we will produce expressions to describe the deflection, shear and bending moments.


The distributed load is a constant, w, producing an effective resultant of magnitude w * L at x = L/2.

Summing forces and moments with Mathematica™ we have:

SumOfForcesInY = -w * L + Ra + Rb == 0;
SymmetryCondition = Ra == Rb;

reactions =
	First	[
	Simplify	[
				Solve[{SumOfForcesInY, SymmetryCondition}, {Ra, Rb}]
				]
			];
reactions =
{
Ra -> Simplify[Collect[Last[First[reactions]], {w, L}]],
Rb -> Simplify[Collect[Last[Last [reactions]], {w, L}]]
}

outPut[First[reactions]];
outPut[Last [reactions]];

By inspection of the above free body diagram we generate the expression for the bending moment as a function of station variable x:

momentEqn = M[x] -> -Ma + (w*L/2)*x - (w/2)*x^2
shearEqn = D[momentEqn, x]

Shear and Bending

So now we have the reactions in terms of the load distribution and beam length.  Now we need to compute the shear, bending moment, beam deflection and end slopes.  We will begin with shear.  First we note that the shear at the endpoints A and B in the free body diagram above correspond to the reactions Ra and Rb.  So we have the trivial result at the endpoints:

Va == Ra == w*L/2;
Vb == Rb == w*L/2;

We now also have an expression for the bending moment as a function of x which makes it possible to integrate the approximate elastica directly:

We can now employ the trick of premultiplying both sides by EI and integrate to produce the following solutions:

elastica = {dydx'[x] == M[x]/(EI) /. momentEqn}

slopeEqn = rePresent[DSolve[elastica, dydx[x], x]] /.
           C[1] -> C1

y'[x] == Last[slopeEqn]

deflectEqn = rePresent[DSolve[%, y[x], x]] /.
           C[1] -> C2

Boundary Conditions

Having completed our slope and displacement integration we now evaluate the constants. 
Boundary Condition 1) is that y = 0 at x = 0.  This yields the result that C2 = 0;
Boundary Condition 2) is that dy/dx = 0 at x = 0.  This yields the result that C1 = 0;
Boundary Condition 3) is that y = 0 at x = L.  This yields the result that Ma = wL^2/12;

BC1result = equalityToRule[ Reverse [ enSconce [
					deflectEqn /. x->0 /.    y[0]->0 ]]]
BC2result = equalityToRule[ Reverse [ enSconce [
					slopeEqn   /. x->0 /. dydx[0]->0 ]]]
BC3result = equalityToRule[strip2[Solve[enSconce[
			equalityToRule[ Reverse [ enSconce [
					deflectEqn /. x->L /.    y[L]->0 ]]]
					 /. BC1result /. BC2result], Ma]]]

deflectEqn /. BC1result /. BC2result /. BC3result

We check remaining boundary condition: 
Boundary Condition 4) is that dy/dx = 0 at x = L.  This is automatically satisfied.

BC4result = equalityToRule[ Reverse [ enSconce [
					slopeEqn   /. x->L /. dydx[L]->0 ]]]
					
BC4result /. BC2result
BC4result /. BC2result /. BC3result

Summary

Summarizing our results we have to "fix" them for inclusion in an evaluation program.  In this case Excel is used, and we must account for a problem with operator precedence on unary minus for odd powered exponents.

outPut[First[reactions]]
outPut[Last [reactions]]
outPut[V[x] -> Last[shearEqn]]
outPut[momentEqn  /. BC3result             ]
outPut[momentEqn  /. BC3result /. x->(L/2) ]
outPut[slopeEqn   /. BC2result /. BC3result]
outPut[deflectEqn /. BC1result /. BC2result
                  /. BC3result             ]
outPut[deflectEqn /. BC1result /. BC2result
                  /. BC3result /. x->(L/2) ]