材料力学「2部材トラス,3部材,複雑なトラス いろいろ(その1/3)」sympyのTrussで。

・(旧タイトル)トラス「2部材トラス,3部材トラス いろいろ」
・一部分を(2)へ移動しました。

・作図はありません。(V形),(-∠形)でイメージして下さい。
　＼|／　の方がよかったかも。　　
・Lとlで使い分けています。lでなくて,hの意味です。

:::note info
(その1/3) 本ページ
[(その2/3)](https://qiita.com/mrrclb48z/items/118385a1bcc196e3540d)
[(その3/3)](https://qiita.com/mrrclb48z/items/da4e609e2b5e9713ffee)
:::


# 材料力学 上
・δVは、あきらめました。
```python
# (-∠形) 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
```
```python
# (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
```
```python
# (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部材トラス
```python
# 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))
```
```python
# 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))
```
```python
# 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))
```
```python
# 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))
```

# 材料力学 2部材トラス
```python
# ver0.1　 
from sympy import *
var('P,l,θ,λAB,QAB,QBC,AE,ABd,AD,AB,DB,DBd,δv')
equ_a1=Eq(-QAB*sin(θ)+QBC*sin(θ)  ,0)
equ_a2=Eq(-QAB*cos(θ)-QBC*cos(θ)+P,0) 
rep1  =solve([equ_a1,equ_a2],[QAB,QBC])                   #;print("#",rep1)
# λAB=λBC=(QAB*l/AE).subs(rep)                            #;print("#",λAB)
rep2  ={ABd:l+λAB   ,DBd:DB+δv}
rep3  ={AD :l*sin(θ),DB :l*cos(θ)}
equ_d =Eq(ABd**2,AD**2+DBd**2).subs(rep2).subs(rep3)      #;print("#",equ_d)
equ_d =Eq(equ_d.lhs.simplify(),equ_d.rhs.simplify())      #;print("#",equ_d)
equ_d =Eq(equ_d.lhs.expand()  ,equ_d.rhs.expand()  )      #;print("#",equ_d)
rep4  ={λAB**2:0,δv**2:0}
rep5  ={λAB:(QAB*l/AE).subs(rep1)}                        
δv    =solve(equ_d.subs(rep4).subs(rep5),δv)[0]                    
print("#",δv)                    
# P*l/(2*AE*cos(θ)**2)
# 
print("#",δv.subs({θ:pi/6}))  #村上p19と同じ 
# 2*P*l/(3*AE)
```

# いつもの? sympyの実行環境と 参考のおすすめです。
[(テンプレート)](https://qiita.com/mrrclb48z/items/00dd08b0317069be9342)
# いつもと違うおすすめです。

#### wikipedia 

#### Qiita内

https://qiita.com/mrrclb48z/items/c3274daf5f7a99cfe027#:~:text=%E4%BD%9C%E6%A5%AD%E4%B8%AD%3A-,%E3%81%84%E3%82%8D%E3%81%84%E3%82%8D,-%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA(sympy)

#### 文献

・

https://www.amazon.co.jp/%E6%9D%90%E6%96%99%E5%8A%9B%E5%AD%A6-%E4%B8%8A-%E4%B8%AD%E5%8E%9F%E4%B8%80%E9%83%8E/dp/4842501146

・

https://www.amazon.co.jp/%E6%9D%90%E6%96%99%E5%8A%9B%E5%AD%A6-JSME%E3%83%86%E3%82%AD%E3%82%B9%E3%83%88%E3%82%B7%E3%83%AA%E3%83%BC%E3%82%BA-%E6%97%A5%E6%9C%AC%E6%A9%9F%E6%A2%B0%E5%AD%A6%E4%BC%9A/dp/4888981582