・作図はアメリカ式です。
Qiita_建築士
https://qiita.com/mrrclb48z/items/893cb0967e4ddb2945f7
オリジナル
Youtube 建築士試験マニア/はまちゃん 様
ひとえだ、ひとえだ、4回に分けて解説してもらいました。ありがとうございました。
(1)一級建築士【構造105】構造力学H27/A点の鉛直反力(vol.0301)
(0:00~04:27) https://youtu.be/WurnzJ4-HCA
(2)一級建築士【構造106】構造力学H27/B点の曲げモーメント(vol.0302)
(0:00~03:54) https://youtu.be/1uFRQLwewog
(3)一級建築士【構造107】構造力学H27/B点の曲げモーメント(vol.0303)
(0:00~03:42) https://youtu.be/BVN9Ci-o8vs
(4)一級建築士【構造108】構造力学H27/B点の曲げモーメント(vol.0304)
(0:00~05:33) https://youtu.be/w7OlrFjNCmw
>落ち着いて。落ち着いて。指を中心に。
ChatGPT先生へ
・最初から先生に聞けばよかった。
https://qiita.com/mrrclb48z/items/0b98a7ffe97faa027168
いつもの? sympyのweb上での実行方法
SymPy Live Shellで。ver0.1とver0.3は実行確認済み。
・sympyのBeamは、エラーがでます。開発環境は、ページ後半です。
https://qiita.com/mrrclb48z/items/00dd08b0317069be9342#web%E4%B8%8A%E3%81%AE%E5%AE%9F%E8%A1%8C%E6%96%B9%E6%B3%95sympy-live-shell%E3%81%A7
sympyで(オリジナル 様の方法で)
ver0.1
>(左端に)鉛直反力のピンローラーが無かったら...
# ver0.1
from sympy import *
var('w,L,EI,P,x')
RA=solve(Eq(w*L**4/(8*EI),x*L**3/(3*EI)),x)[0] ;print("# (1) ",RA)
MB=RA*L-(w*L)*L/2 ;print("# (2) ",MB)
MC=RA*L/2-(w*L/2)*(L/4)-w*L**2/8 ;print("# (3)x",MC)
x =solve(Eq(RA-w*x,0),x)[0] ;print("# (4) ",x ) #RA/wでも
# (1) 3*L*w/8
# (2) -L**2*w/8
# (3)x -L**2*w/16
# (4) 3*L/8
ver0.2
>自作(右端に)固定壁が無かったら...
>たわみ角です。
# ver0.2
from sympy import *
var('w,L,MB,RA,RB,x,EI')
MB=solve(Eq( Rational(1,24)*w*L**3/EI,
-Rational(1, 3)*MB*L /EI),MB)[0] ;print("# (2) ",MB)
RA=w*L-solve(Eq(RB*L-Rational(1,2)*w*L**2+MB,0),RB)[0] ;print("# (1) ",RA)
MC=RA*L/2-(w*L/2)*(L/4)-w*L**2/8 ;print("# (3)x",MC)
x =solve(Eq(RA-w*x,0),x)[0] ;print("# (4) ",x ) #RA/wでも
# # (1) 3*L*w/8
# # (2) -L**2*w/8
# # (3)x -L**2*w/16
# # (4) 3*L/8
sympyで(いつもの方法で省略)
ver0.3
・(勉強中)
sympyで(釣り合いで)
ver0.4
・いつもの方法がいいです。
・普通は?ΣX=とか、ΣY=とか、ΣM=で十分です。MABに、solveを使わなくてもです。
・5元連立方程式で。
# ver0.4
from sympy import *
var('RA,RB,x,MAB,w,L,MB,θA,vA,EI')
MAB=solve(Eq(MAB+w*(L-x)*Rational(1,2)*(L-x)-RB*(L-x)+MB,0),MAB)[0] # 普通は∑Mです。MBは固定端モーメントです。
θAB=1/EI*integrate(MAB,x)+θA
vAB=1/EI*integrate(θAB,x)+vA
sol=solve([Eq(vAB.subs({x:0}),0),Eq(MAB.subs({x:0}),0),
Eq(vAB.subs({x:L}),0),Eq(θAB.subs({x:L}),0),
Eq(-RA+w*L-RB,0)],[RA,RB,MB,θA,vA]) # print("#",sol)
MAB=MAB.subs(sol)
print("# (1) ",sol[RA])
print("# (2) ",MAB.subs({x:L }))
print("# (3)x",MAB.subs({x:L/2}))
print("# (4) ",solve(Eq(diff(MAB,x),0),x)[0])
# (1) 3*L*w/8
# (2) -L**2*w/8
# (3)x L**2*w/16
# (4) 3*L/8
ver0.5
次と同じです。
https://qiita.com/mrrclb48z/items/ae55d11120841ebd8a34
・分布荷重wの微分方程式を直接解いてたわみ曲線を求めてからが、ラクかも。
・(4)diff(M,x)=0,最大曲げモーメント位置に同じ。?アタリマエ
???教えて下さい。固定端モーメントはどこへいきましたか。
# ver0.5
from sympy import *
var('x,C1,C2,C3,C4,w,L,EI')
def myStr_Lw_wL(v):
return str(v).replace("L*w","w*L")
def myStr_L2w_wL2(v):
return str(v).replace("L**2*w","w*L**2")
Q= integrate(-w,x)+w*L *C1
M=1/EI*(integrate( Q,x)+w*L**2*C2)
θ= (integrate( M,x)+w*L**3*C3)
v= (integrate( θ,x)+w*L**4*C4)
sol =solve([Eq(M.subs({x:0}),0), # 幾何的境界条件
Eq(v.subs({x:0}),0),
Eq(θ.subs({x:L}),0),
Eq(v.subs({x:L}),0)
],[C1,C2,C3,C4]) #;print(sol)
M,Q=M.subs(sol),Q.subs(sol)
print("# (1) ",myStr_Lw_wL (Q.subs({x:0 })))
print("# (2) ",myStr_L2w_wL2(M.subs({x:L })))
print("# (3)x",myStr_L2w_wL2(M.subs({x:L/2})))
print("# (4) ",solve(Eq(Q,0),x)[0])
#
# rep={w:1,L:1,EI:1}
# plot(Q.subs(rep),(x,0,1))
# plot(M.subs(rep),(x,0,1),ylim=(-0.1,0.1))
# (1) 3*w*L/8
# (2) -w*L**2/(8*EI)
# (3)x w*L**2/(16*EI)
# (4) 3*L/8
・SFD(matplotlib)
・BMD(matplotlib)
sympyのBeamで
ver0.6
・値はテキトー。BMDは?省略です。いい値を教えて下さい。
・荷重図?矢印を消したらダメかもしれません。
# ver0.6
from sympy import *
from sympy.physics.continuum_mechanics.beam import Beam
from sympy import symbols
E , I =symbols('E , I ')
var('R1,R2,x')
def extract_elements_with_symbol(data_list):
"""
リストの要素のうち、最初の要素がsympyのSymbolである要素を抽出する関数。
Args:
data_list: 要素がタプルのリスト。
Returns:
最初の要素がsympyのSymbolである要素のリスト。
"""
result = []
for item in data_list:
if isinstance(item[0], Symbol):
result.append(item)
return result
def myRemoveDrawShow(b):
for item in extract_elements_with_symbol(b.applied_loads):
b.remove_load(item[0], item[1],item[2])
p = b.draw()
p.show()
return
# #######################################
w,L=1,1
M2 =5/8*w*L**2*1000
b = Beam(L, E, I)
b.apply_load (R1, 0,-1)
b.apply_load (w , 0, 0,L)
b.apply_load (R2, L,-1)
b.apply_load (M2, L,-2)
b.solve_for_reaction_loads(R1, R2)
# # #######################################
b.plot_shear_force()
# b.plot_bending_moment()
b.apply_support (0,"roller")
b.apply_support (L,"fixed" )
myRemoveDrawShow(b)
# p = b.draw()
# p.show()
・数字を消す方法がわかりません。記号を追加する方法も。
・BMD省略
・荷重図?
・(再)矢印を消したらダメかもしれません。
いつもの? sympyの実行環境と 参考のおすすめです。
いつもと違うおすすめです。
sympyのdoc
公式ホームページ
・古い問題文なので、ありません。検索中。