「令和6年一級建築士試験学科Ⅳ(構造)〔Ｎｏ．2〕」両端固定梁に中間ヒンジをsympyのBeamで できませんでした。

パイソニスタの方へ
**・sympyのBeamでできませんでした。**
　**Piecewise と SingularityFunction　のオススメのページを教えて下さい。**
・タイトルを変更予定です。

# 公式ホームページ
学科Ⅳ(構造)〔Ｎｏ．2〕と正答肢 3 4:1
https://www.jaeic.or.jp/shiken/1k/1k-mondai.files/1k-2024-1st-gakka4_5.pdf#page=3
https://www.jaeic.or.jp/shiken/1k/1k-mondai.files/1k-2024-1st-gokakukijun.pdf
「学科の試験」< 一級建築士を志す者に対して、...
https://www.jaeic.or.jp/smph/shiken/1k/1k-mondai.html
「学科の試験」< 二級建築士を志す者に対して、...
https://www.jaeic.or.jp/smph/shiken/2k/2k-mondai.html

# オリジナル

Youtube「令和6年学科構造」　構造力学問題No1-No6　解説　一級建築士試験　構造力学対策講座　
やまもと構造塾+kakeno塾 様 (0:00~34:32) 〔Ｎｏ．2〕 4:21~10:50

https://youtu.be/DKm2Mjg5xmc?t=261

# sympyで(オリジナル 様の方法を参考に)
　https://live.sympy.org/
```python
# 令和6年一級建築士試験学科Ⅳ(構造)〔Ｎｏ． 2 〕
# ver0.1
from sympy import *
var('EI,l'   ,real=True,positive=True)
var('P,PA,PC',real=True)
sol=solve([Eq(P-PA-PC,0),Eq(PA*l**3/(3*EI),PC*(2*l)**3/(3*(2*EI)))],[PA,PC])
print("#",sol[PA]/sol[PC])
# 4
```
# sympyのintegrate(多重積分)で
(参考)　「弘前大学 Home Sweet Home - 弘大ホーム」様

https://home.hirosaki-u.ac.jp/relativity/%E7%90%86%E5%B7%A5%E7%B3%BB%E3%81%AE%E6%95%B0%E5%AD%A6c/sympy-%E3%81%A7%E7%90%86%E5%B7%A5%E7%B3%BB%E3%81%AE%E6%95%B0%E5%AD%A6c/sympy-%E3%81%A7%E5%A4%9A%E9%87%8D%E7%A9%8D%E5%88%86/

https://docs.sympy.org/latest/modules/integrals/integrals.html
・2重積分は累次積分で
```python
# 令和6年一級建築士試験学科Ⅳ(構造)〔Ｎｏ． 2 〕
# ver 0.2 
# ??? 偶然かも。点Cでたわみ0です。
from sympy import *
var("E,I,P,PA,PC,l,x")
sol=solve([Eq(P,PA+PC),
           Eq( 1/(  E*I)*integrate( PA* x   ,(x,0,  l),(x,0,  l))
              +1/(2*E*I)*integrate(-PC*(x-l),(x,l,3*l),(x,l,3*l)),0)],
          [PA,PC])
print("#",sol[PA]/sol[PC])
# 4
```
# sympyで、エネルギー法で
・3元連立方程式。たわみの一致とエネルギー法で。???ヒンジ 偶然かも
```python
# 令和6年一級建築士試験学科Ⅳ(構造)〔Ｎｏ． 2 〕
# ver 0.3 
from sympy import *
var("E,I,w,P,PA,PB,l,x")
UA=integrate( (PA*x)**2/(2*  E*I),(x,0,  l))
UB=integrate( (PB*x)**2/(2*2*E*I),(x,0,2*l))
sol=solve( [Eq(PA+PB,P),
            Eq(   UA/(Rational(1,2)*PA),
                  UB/(Rational(1,2)*PB)),
            Eq(UA+UB, Rational(1,2)*P*w )
           ],[PA,PB,w])
print("#",sol)
print("#",sol[0][0]/sol[0][1])
# [(4*P/5, P/5, 4*P*l**3/(15*E*I))]
# 4
```
# sympyで、単位荷重法で
・??? 連立方程式。左ひずみエネルギー と 右のひずみエネルギーで
```python
# 令和6年一級建築士試験学科Ⅳ(構造)〔Ｎｏ． 2 〕
# ver 0.3 
from sympy import *
var('E,I,P,l',positive=True)
var('PA,PB,x',positive=True)
MA=-PA*x;MA_bar=MA.subs({PA:1})
MB=-PB*x;MB_bar=MB.subs({PB:1})
sol=solve([Eq(PA+PB,P),
           Eq(1/(  E*I)*integrate(MA*MA_bar,(x,0,   l )),
              1/(2*E*I)*integrate(MB*MB_bar,(x,0,(2*l)))),
          ],[PA,PB])
print("#",sol)
print("#",sol[PA]/sol[PB])
# {PA: 4*P/5, PB: P/5}
# 4
```
# sympyで、カスチリアノの第2定理で
・??? 連立方程式。左ひずみエネルギー と 右のひずみエネルギーで
```python
# 令和6年一級建築士試験学科Ⅳ(構造)〔Ｎｏ． 2 〕
# ver 0.4 
from sympy import *
var('E,I,P,l',positive=True)
var('PA,PB,x',positive=True)
MA=-PA*x;UA=1/(  E*I)*integrate(MA**2,(x,0,   l ))
MB=-PB*x;UB=1/(2*E*I)*integrate(MB**2,(x,0,(2*l)))
sol=solve([Eq(PA+PB,P),Eq(diff(UA,PA),diff(UB,PB)),],[PA,PB])
print("#",sol)
print("#",sol[PA]/sol[PB])
# {PA: 4*P/5, PB: P/5}
# 4
```

# sympyで、片持ちはりのたわみ性マトリックス　より
・??? 勉強中　wの方程式
```python
# 令和6年一級建築士試験学科Ⅳ(構造)〔Ｎｏ．2 〕
# ver 0.5 
from sympy import *
var('E,I,P,l',positive=True)
var('PA,PB,x',positive=True)
var('F2,M2')
w=Rational(1,6)*1/(E*I)*(Matrix([2*l**3,-3*l**2]).transpose()*Matrix([F2,M2]))[0]
print("#",w)
sol=solve([Eq(P,PA+PB),
           Eq(w                    .subs({F2:PA,M2:0}),
              w.subs({l:2*l,E:2*E}).subs({F2:PB,M2:0}))
          ],[PA,PB])
print("#",sol)
print("#",sol[PA]/sol[PB])
# (2*F2*l**3 - 3*M2*l**2)/(6*E*I)
# {PA: 4*P/5, PB: P/5}
# 4
print("#",w)
print("#",w.subs({F2:P,M2:0}))
# (2*F2*l**3 - 3*M2*l**2)/(6*E*I)
# P*l**3/(3*E*I)
```


# sympyのBeamで できませんでした。
???

https://github.com/sympy/sympy/issues/26570

```python
# 令和6年一級建築士試験学科Ⅳ(構造)〔Ｎｏ． 2 〕
# ver0.3
from sympy import *
from sympy.physics.continuum_mechanics.beam import Beam
from sympy import symbols
E, I = symbols('E, I')
l=symbols('l',positive=True)
var("x")
b1  =Beam(  l,    E,  I)
b2  =Beam(2*l,  2*E,  I) # ???
# b2=Beam(2*l,    E,2*I)
# b2=Beam(2*l,2*E*I,1  )
# b2=Beam(2*l,1,2*E*I  )
b=b1.join(b2,"hinge")
M1, A1, M2, A2, P = symbols('M1 A1 M2 A2 P')
b.apply_load(A1  ,0,-1)
b.apply_load(M1  ,0,-2)
b.apply_load(P,l              ,-1)   # ????
# b.apply_load(P,l*1.000000001,-1)   # ????
b.apply_load(A2,3*l,-1)
b.apply_load(M2,3*l,-2)
b.bc_slope     =[(0,0), (3*l, 0)]
b.bc_deflection=[(0,0), (3*l, 0)]
b.solve_for_reaction_loads(M1, A1, M2, A2)
print("#",b.reaction_loads[A1]/b.reaction_loads[A2])
print("#",b.reaction_loads[A1]+b.reaction_loads[A2])
# 8
# -2*P
```

# 単位荷重法も、できませんでした
```python
# 令和6年一級建築士試験学科Ⅳ(構造)〔Ｎｏ． 2 〕
# ver 0.4
# 単位荷重法です。積分計算が1回。sympyだと,私はあんまり回数が気になりません。
from sympy import *
var("E,I,P,PA,PC,l,x")
sol=solve([Eq(P,PA+PC),
           Eq( 1/(  E*I)*integrate(( PA* x   )*( PA* 1   ),(x,0,  l))
              +1/(2*E*I)*integrate((-PC*(x-l)),(-PC*(1-l)),(x,l,3*l)),0)],
          [PA,PC])
print("#",sol[PA]/sol[PC])
```

# 参考
#### sympyのdoc

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

#### Qiita

https://qiita.com/mrrclb48z/items/66cbc2ec2e5c1174c7d9

https://qiita.com/mrrclb48z/items/c3274daf5f7a99cfe027

https://qiita.com/mrrclb48z/items/893cb0967e4ddb2945f7