0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

トラス「2部材トラス,3部材トラス いろいろ(1)」sympyで

Last updated at Posted at 2025-05-30

・(旧タイトル)トラス「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

文献

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?