<SYSTEM_TASK:>
Given the following text description, write Python code to implement the functionality described below step by step
<END_TASK>
<USER_TASK:>
Description:
 Example 9.4.1, Beaufait 1977
From, Basic Concepts of Structural Analysis, Beaufait, Fred W., Prentice-Hall, 1977.
Step1:  Compare Solution Here with that in the Book
<ASSISTANT_TASK:>
Python Code:
from Frame2D import Frame2D
from Frame2D.Members import Member
# because units are kips, inches
Member.E = 30000.    #ksi
Member.G = 11500.
from IPython import display
display.Image('data/Beaufait-9-4-1.d/fig1.jpg')
frame = Frame2D('Beaufait-9-4-1')   # Example 9.4.1, p. 460
frame.input_all()
rs = frame.solve()
frame.print_input()
frame.print_results(rs,mult=[1.,1.,1./12.])
Explanation: Example 9.4.1, Beaufait 1977
From, Basic Concepts of Structural Analysis, Beaufait, Fred W., Prentice-Hall, 1977.
End of explanation
import pandas as pd
efs = [('M1',11.77,2.72,33.06,-11.77,-2.72,7.75),  # end forces from soln, Beaufait, p 473
       ('M2',9.40,8.85,-7.83,0.60,15.15,-74.11),
       ('M3',14.18,5.27,74.10,-14.18,-5.27,57.81)]
BOOK_MEFS = pd.DataFrame(efs,columns='ID,FXJ,FYJ,MZJ,FXK,FYK,MZK'.split(',')).set_index('ID')
BOOK_MEFS[['MZJ','MZK']] *= 12.   # convert ft-kips to in-kips
BOOK_MEFS
HERE_MEFS = pd.DataFrame(frame.list_member_end_forces(rs),
                         columns='ID,FXJ,FYJ,MZJ,FXK,FYK,MZK'.split(',')).set_index('ID')
HERE_MEFS
pdiff = (100*(HERE_MEFS-BOOK_MEFS)/BOOK_MEFS)
pdiff.round(2)
Explanation: Compare Solution Here with that in the Book
End of explanation
<END_TASK>