「(2022)令和4年二級建築士試験学科Ⅲ（建築構造）〔Ｎｏ．３〕」張出し梁の左端集中荷重と右端に一部にかかる等分布荷重をsympyのBeamでやってみた。

・タイトルを直しました。(2025-03-17)
(旧)「(2022)令和4年二級建築士試験学科Ⅲ（建築構造）〔Ｎｏ．３〕」張出し梁の一部にかかる等分布荷重をsympyのBeamでやってみた。
　　↓
(新)「(2022)令和4年二級建築士試験学科Ⅲ（建築構造）〔Ｎｏ．３〕」張出し梁の**左端集中荷重と右端に**一部にかかる等分布荷重をsympyのBeamでやってみた。

**Qiita_建築士**
https://qiita.com/mrrclb48z/items/893cb0967e4ddb2945f7

#### 公式ホームページ
**・問題〔Ｎｏ．３〕PDFページ下**
(2022)令和4年二級試験問題〔Ｎｏ．３〕と正答肢
https://www.jaeic.or.jp/shiken/2k/2k-mondai.files/2k-2022-1st-gakka3_4.pdf#page=3
https://www.jaeic.or.jp/shiken/2k/2k-mondai.files/2k-2022-1st-gokakukijun-r1.pdf

# オリジナル
・Youtube 検索中
# sympyで(オリジナル 様の方法を参考に)
#### ver0.1
# sympyで(いつもの方法で省略)
#### ver0.2
# sympyで(釣り合いで)
#### ver0.3
```python
# ver0.3
from sympy import *
var('RB,RD,x')
var('L,a,b,P,w') ;L,a,b,P,w=11,3,4,4,3
MBC=RB*(a-x)-w*(L-a-b)*(a+b-x+Rational(1,2)*(L-a-b))+RD*(L-x)
MCA=        -w*(L-a-b)*(a+b-x+Rational(1,2)*(L-a-b))+RD*(L-x)
MAD=        -w*(L-x  )*(      Rational(1,2)*(L-x  ))+RD*(L-x)
MA =MCA.subs(solve([Eq(MBC.subs({x:0}),0),Eq(-P+RB-w*(L-a-b)+RD,0)],[RB,RD])).subs({x:a+b})  ;print("#",MA)
# 6
```
#### ver0.4
・最後にsubsです。同じ事を書くなよ。です。
```python
# ver0.4
from sympy import *
var('RB,RD,x')
var('L,a,b,P,w') # ;L,a,b,P,w=11,3,4,4,3
MBC=RB*(a-x)-w*(L-a-b)*(a+b-x+Rational(1,2)*(L-a-b))+RD*(L-x)
MCA=        -w*(L-a-b)*(a+b-x+Rational(1,2)*(L-a-b))+RD*(L-x)
MAD=        -w*(L-x  )*(      Rational(1,2)*(L-x  ))+RD*(L-x)
MA =MCA.subs(solve([Eq(MBC.subs({x:0}),0),Eq(-P+RB-w*(L-a-b)+RD,0)],[RB,RD])).subs({x:a+b})  
print("#",MA)
print("#",MA.expand())
print("#",MA.expand().simplify())
rep={L:11,a:3,b:4,P:4,w:3}
print("#",MA.subs(rep))
# -w*(L/2 - a/2 - b/2)*(L - a - b) + (L - a - b)*(-L**2*w + 2*L*a*w + 2*P*a - a**2*w + b**2*w)/(-2*L + 2*a)
# -L**3*w/(-2*L + 2*a) + 3*L**2*a*w/(-2*L + 2*a) + L**2*b*w/(-2*L + 2*a) - L**2*w/2 + 2*L*P*a/(-2*L + 2*a) - 3*L*a**2*w/(-2*L + 2*a) - 2*L*a*b*w/(-2*L + 2*a) + L*a*w + L*b**2*w/(-2*L + 2*a) + L*b*w - 2*P*a**2/(-2*L + 2*a) - 2*P*a*b/(-2*L + 2*a) + a**3*w/(-2*L + 2*a) + a**2*b*w/(-2*L + 2*a) - a**2*w/2 - a*b**2*w/(-2*L + 2*a) - a*b*w - b**3*w/(-2*L + 2*a) - b**2*w/2
# (-L**2*b*w/2 + L*P*a + L*a*b*w + L*b**2*w - P*a**2 - P*a*b - a**2*b*w/2 - a*b**2*w - b**3*w/2)/(-L + a)
# 6
```

# sympyのBeamで(修正中)
#### ver0.5
```python
from sympy import *
from sympy.physics.continuum_mechanics.beam import Beam
from sympy import symbols, Piecewise
E , I  = symbols('E , I ')
R1, R2 = symbols('R1, R2')
x      = symbols('x')
P,w,a,b,c=4,3,3,4,4
L,ab     =a+b+c,a+b
b = Beam(L, E, I)
b.apply_load   ( P,   0 ,-1      )
# b.apply_load ( w,(a+b), 0,end=L)  # TypeError: unsupported operand type(s) for +: 'int' and 'Beam'
b.apply_load   ( w,ab   , 0,end=L)
# ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
b.apply_load   (R1, a,-1    )
b.apply_load   (R2, L,-1    )
# ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
b.solve_for_reaction_loads(R1, R2)
b.plot_shear_force()
b.plot_bending_moment()
print("#",b.bending_moment().subs({x:ab}))
# ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
print(b.applied_loads)
b.remove_load   (R1, a,-1   )
b.remove_load   (R2, L,-1   )
# ↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
b.apply_support ( a,"pin"   )
b.apply_support ( L,"roller")
p = b.draw()  
p.show() 
# 6
```
![111.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109698/c0248185-1194-4fad-9405-b1f75adc2042.png)

![222.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109698/c876a10f-62c2-4df0-a4f9-ea93c1331357.png)

![333.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109698/ab795bfc-f4c9-4d1b-a483-654ceb775ed6.png)

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

# いつもと違うおすすめです。

#### sympyのdoc

https://docs.sympy.org/latest/modules/physics/continuum_mechanics/beam.html