・(旧タイトル)トラス「2部材トラス,3部材トラス いろいろ」
・一部分を(2)へ移動しました。
・作図はありません。(V形),(-∠形)でイメージして下さい。
\|/ の方がよかったかも。
・Lとlで使い分けています。lでなくて,hの意味です。
(その1/2) 本ページ
(その2/2) sympyのTrussで
材料力学 上
・δVは、あきらめました。
# (-∠形) 2部材トラス 剛体壁に直角に取り付けられたトラス 中原一郎著 養賢堂 P30[2章 例題5]
from sympy import *
var('P,Q1,Q2,λ1,λ2,θ,l,δH,δV,σ1,σ2')
var('sinθ,cosθ,tanθ,A,E')
equ1=Eq(Q1*cos(θ),Q2)
equ2=Eq(Q1*sin(θ),P )
sol =solve([equ1,equ2],[Q1,Q2]) #;print(sol)
λ1 =sol[Q1]/(A*E)*(l/cos(θ)) #;print(λ1)
λ2 =sol[Q2]/(A*E)* l #;print(λ2)
δH = λ2.simplify() ;print("#",δH)
#
δV =(λ1/sin(θ)+λ2/tan(θ)).simplify() ;print("#",δV)
δV =P*l/(A*E)*(1+cosθ**3)/(sinθ**2*cosθ) ;print("#",δV)
rep1={sin(θ):sinθ,cos(θ):cosθ,tan(θ):tanθ}
rep2={A:250,E:2.1*10**4,l:1500,P:1000,
sinθ:0.39,cosθ:0.92,tanθ:0.42}
σ1 =(P/(A*sinθ)) .subs(rep1).subs(rep2) ;print("#",Float(σ1,3))
σ2 =(P/(A*tanθ)) .subs(rep1).subs(rep2) ;print("#",Float(σ2,2))
δH =δH.subs(rep1).subs(rep2) ;print("#",Float(δH,2))
δV =δV.subs(rep1).subs(rep2) ;print("#",Float(δV,3))
# P*l/(A*E*tan(θ))
# P*l*(tan(θ)**(-2) + 1/(sin(θ)**2*cos(θ)))/(A*E)
# P*l*(cosθ**3 + 1)/(A*E*cosθ*sinθ**2)
# 10.3
# 9.5
# 0.68
# 3.63
# (V形) 3部材トラス 不静定トラス 中原一郎著 養賢堂 P45[2章 例題11]
from sympy import *
var('P,Q1,Q2,λ1,λ2,θ,l,δ,σ1,σ2,A,E')
eq226 =Eq(P,2*Q1*cos(θ)+Q2)
eq227 =Eq(λ1,λ2*cos(θ))
rep ={λ1:Q1/(A*E)*l/cos(θ),λ2:Q2*l/(A*E)}
sol =solve([eq227.subs(rep)] ,[Q1]) #;print(sol)
sol_Q2=solve([eq226.subs(sol)] ,[Q2]) #;print(sol_Q2)
sol_Q1=solve([eq226.subs(sol_Q2)],[Q1]) #;print(sol_Q1)
σ1 =sol_Q1[Q1]/A ;print("#",σ1)
σ2 =sol_Q2[Q2]/A ;print("#",σ2)
δ =(Q2*l/(A*E)).subs(sol_Q2) ;print("#",δ)
rep ={P:2000,l:500,A:150,E:2.1*10**4,cos(θ):0.697}
print("#",Float(σ1.subs(rep),3))
print("#",Float(σ2.subs(rep),3))
print("#",Float(δ .subs(rep),3))
# P*cos(θ)**2/(A*(2*cos(θ)**3 + 1))
# P/(A*(2*cos(θ)**3 + 1))
# P*l/(A*E*(2*cos(θ)**3 + 1))
# 3.86
# 7.95
# 0.189
# (V形) 3部材トラス 最小仕事の原理 中原一郎著 養賢堂 P270[11章 例題12]
from sympy import *
var('P,Q1,Q2,δ1,δ2,θ,l,AE')
var('L')
Q1=solve(Eq(2*Q1*cos(θ),P-Q2),Q1)[0] #; print("#",Q1)
U1=2*Q1**2/(2*AE)*l/cos(θ) ; δ1=diff(U1,Q2).simplify() #;print("#",δ1)
U2= Q2**2/(2*AE)*l ; δ2=diff(U2,Q2).simplify() #;print("#",δ2)
Q2_sol=solve(Eq(diff(U1+U2,Q2),0),Q2)[0] ;print("#",Q2_sol)
# P/(2*cos(θ)**3 + 1)
#
print("#",(δ1.subs({Q2:Q2_sol,l:L*cos(θ)}).subs({θ:pi/6})).simplify())
# -2*sqrt(3)*L*P/(AE*(4 + 3*sqrt(3)))
材料力学
# 3部材トラス(1)カスチリアノの定理 で
from sympy import *
var('P,P1,P2,λ1,λ2,θ,L,AE')
QAB=QBC=P1/(2*cos(θ));QBD=P2
UAB=QAB**2*L/(2*AE)
UBC=QBC**2*L/(2*AE)
U1 =UAB+UBC #;print("#",U1)
U2 =UBD=QBD**2*(L*cos(θ))/(2*AE) #;print("#",U2)
λ1 =diff(U1,P1) #;print("#",λ1)
λ2 =diff(U2,P2) #;print("#",λ2)
sol=solve([Eq(λ1,λ2),Eq(P,P1+P2)],[P1,P2]) #;print("#",sol)
print("#",λ1.subs(sol))
# L*P*cos(θ)/(AE*(2*cos(θ)**3 + 1))
# 3部材トラス(2)仮想仕事の原理 で
from sympy import *
var('P,λ,δλ,θ,l,AE,QAB,QBD')
var('λAB,δBD')
δλAB=δλBC=δλ *cos(θ);δλBD=δλ
δUAB=δUBC=QAB*δλAB
δUBD =QBD*δλBD
λAB=cos(θ)*λ ;λBD=λ
rep={QAB:AE/L*λAB,QBD:AE/(L*cos(θ))*λBD} #;print("#",rep)
δU =(δUAB+δUBC+δUBD).subs(rep) #;print("#",δU)
δU =(δUAB+δUBC+δUBD).subs(rep) #;print("#","(",expand(δU/δλ),")*",δλ)
equ=Eq(δU,P*δλ)
print("#",solve(equ,λ)[0])
# L*P*cos(θ)/(AE*(2*cos(θ)**3 + 1))
# 3部材トラス(3)最小ポテンシャルエネルギーの原理 で
from sympy import *
var('P,λ,δλ,θ,L,AE,QAB,QBD')
λAB=λBC=λ*cos(θ) ;λBD=λ
QAB=AE/L*λAB ;QBD=AE/(L*cos(θ))*λBD
UAB=UBC=QAB*λAB/2 ;UBD =QBD*λBD/2 #;print("#",UAB) ;print("#",UBD)
U =UAB+UBC+UBD #;print(Poly(U,λ).args[0])
print("#",solve(Eq(diff(U-P*λ,λ),0),λ)[0])
# L*P*cos(θ)/(AE*(2*cos(θ)**3 + 1))
# 3部材トラス(4)トラス で
from sympy import *
var('P,λAB,λBD,δV,θ,L,AE,QAB,QBD,QBC')
equ_a1=Eq(-QAB*sin(θ)+QBC*sin(θ) ,0)
equ_a2=Eq(-QAB*cos(θ)-QBD-QBC*cos(θ)+P,0)
equ_b =Eq( λAB,QAB*L/AE) #;print("#",λAB)
equ_c =Eq( δV ,λAB/cos(θ))
#δV =λBD # ???私の 間違いです。solveを飛ばしています。
equ_e =Eq(QAB,QBD*cos(θ)**2)
sol =solve([equ_a1,equ_a2,equ_e],[QAB,QBC,QBD]) #;print("#",sol)
print("#",solve([equ_b.subs(sol),equ_c.subs(sol)],[δV,λAB])[δV].simplify())
# # L*P*cos(θ)/(AE*(2*cos(θ)**3 + 1))
いつもの? sympyの実行環境と 参考のおすすめです。
いつもと違うおすすめです。
wikipedia
Qiita
文献
・
・