# OpenStax University Physics/V1/Ch 13 P 37: torque

Not every item in a professor's bag of tricks needs to be introduced to students, but the **line of action concept** can be used to present the reader with a visually convincing argument that the calculation shown in the appendix is correct for the following problem from Volume I of CNX University Physics:

*To get up on the roof, a person (mass 70.0 kg) places a 6.00-m aluminum ladder (mass 10.0 kg) against the house on a concrete pad with the base of the ladder 2.00 m from the house. The ladder rests against a plastic rain gutter, which we can assume to be frictionless. The center of mass of the ladder is 2.00 m from the bottom. The person is standing 3.00 m from the bottom. Find the normal reaction and friction forces on the ladder at its base.*

## Verifying the Python-generated solution[edit | edit source]

The next section shows the Python code used to solve the problem for the parameters given in the textbook. Here we use the result of that calculation, which is that the force of friction at the base is where:

The 6-m long ladder is depicted in the center of this figure. The 2-m base, as well as the locations of the person (p) and ladder's center of gravity (l) are indicated. The short blue arrows (not to scale) represent the directions of the forces. The normal force at the wall, as well as the two weights are depicted, but the reaction forces at the bottom are not shown because they are easily deduced from the forces shown: the vertical component equals the net weight and the horizontal component (friction) is cancelled by the normal force.

The blue dashed lines display the lines of force, which are used to identify the length of the lever arms, which are shown in red. The moment arms for the normal force (n), ladder (l) and person (p) are easily verified from the to be approximately 5.67, 0.67, and 1.0 meters, respectively, as shown by the solid red lines in the central figure.

The three forces are shown in blue as the length of one side of the three yellow rectangles. Since the mass of the person and ladder were given in kg (70 and 10 respectively), it is convenient to express the force of friction as an effective mass: 13.55 kg. It is easily verified both visually and by arithmetic that the figure is consistent with the areas associated with the vertical "forces" (70-kg and 10-kg kg) being equal to the area associated with the normal "force" of 13.55-kg. Hence we conclude that the calculated answer seems to be correct.

## Appendix: Python calculation[edit | edit source]

This Python not only solves the problem for the parameters stated in the textbook, it also generates a series of similar problems with different parameters in LaTeX markup. Only the portion of the program that needs to be edited by authors is shown. Students not familiar with LaTex and/or Python can generate a CSV file using another programmable language (or even a spreadsheet). The question can be stated is simple text. The CSV table needs only generate the input and output values, and converting the question ascii text form into LaTeX markup is a simple task.

```
######## AUTHOR OF NEW QUESTION STARTS HERE ############
def writeQA(firstRendition):
#Step 1: Fill in author, attribution, and short explanation
author=r'''OpenStax College University Physics'''
attribution=r'''CC-BY copyright information available at \\
\url{https://cnx.org/contents/1Q9uMg\_a@12.3:Gofkr9Oy@20/Preface}'''
about=r'''We are grateful to David Marasco and Annie Chase
of Foothill College Physics. Their effort greatly facilitated
this attempt to turn the odd problems in OpenStax
University physics into a question bank that is also
an open educational resource'''
#Step 2: To insert image, change False to True, add width and image name:
insertImage=[False, 0.3,
'Roller_coaster_energy_conservation.png']
# The "images" folder must contain this image file
#Step 3: Declare variables/image using the QuesVar class:
mPers = QuesVar(70, 41, 69, firstRendition) #kg
mLadd = QuesVar(10, 11, 19, firstRendition) #kg
base=QuesVar(2, 1.7, 2.3, firstRendition)#m base of ladder
if insertImage[0]: #This inserts image, but only if requested
questionString='\\includegraphics[width='+str(insertImage[1])+\
'\\textwidth]{images/'+insertImage[2]+r'}\\'+'\n'
#the standard is for the first line to be the image
else:
questionString='' #Initializes question if no image is needed
#Step 4: Write the question
questionString+=' To get up on the roof, a person (mass '+mPers.t+' kg) places '\
+'a 6.00-m aluminum ladder (mass '+mLadd.t+' kg) against the house '\
+'on a concrete pad with the base of the ladder '\
+base.t+' m from the house. '\
+'The ladder rests against a plastic rain gutter, which we can assume to '\
+'be frictionless. The center of mass of the ladder is 2.00 m from the '\
+'bottom. The person is standing 3.00 m from the bottom. '\
+'Find the friction force on the ladder at its base.'\
#Step 5: Solve the problem, defining (non-magic) variables as needed:
wPers=9.8*mPers.v
wLadd=9.8*mLadd.v
lenLadd=6 #distance from ground to point of contact
lenCM=2 #distance from ground to cm
lenPers=3 #distance from ground to person
b=base.v
cosine=b/lenLadd
sine=(1-cosine**2)**.5
#friction force on ground = normal at top:
# fric*lenLadd*sine= (wPers*lenPers+wLadd*lenLadd)*cosine
fric=(wPers*lenPers+wLadd*lenCM)*cosine/sine/lenLadd
print('base',b)
print("person's mass/position:",mPers.v,lenPers)
print("ladder's mass/position:",mLadd.v,lenCM)
print('person/ladder torque ratio',wPers*lenPers/wLadd/lenCM)
print('m_eff', fric/9.8)
## Typical print outputa for the first 3 renditions:
## base 2
## person's mass/position: 70 3
## ladder's mass/position: 10 2
## person/ladder torque ratio 10.5
## m_eff 13.55287997274216
## answer2question 132.81822373287318
##
## base 1.9
## person's mass/position: 66 3
## ladder's mass/position: 16 2
## person/ladder torque ratio 6.1875
## m_eff 12.79748745751316
## answer2question 125.41537708362898
##
## base 2.08
## person's mass/position: 42 3
## ladder's mass/position: 16 2
## person/ladder torque ratio 3.9375000000000004
## m_eff 9.732411374720561
## answer2question 95.3776314722615
#Step 6: Use magic words to state answer, units (if needed)
prefix2answer=""# Or set to "" (empty string)
answer2question = fric #28.9
print('answer2question',answer2question,'\n')
units2answer = "N" #Blank to "" if dimensionless
#Step 7 (optional): Adjust the wrong answers (called detractors)
#offByFactors is usually True: causing the RATIO of two consecutive
#detractors to equal "detractorsOffBy"
offByFactors=True
detractorsOffBy=1.08
#If offByFactors is False, the DIFFERENCE between two consecutive
#detractors to equal "detractorsOffBy"
############ No need to edit beyond this point ######
#########################################################################
questionString+=createFootnote(author,attribution)
questionString+=makeAnswers(prefix2answer, answer2question,
units2answer,detractorsOffBy,offByFactors)
return[questionString,prefix2answer,answer2question,
units2answer,insertImage,author,attribution,about]
```

8700