単純梁×単純梁 後半のたわみだけ「改15 一級建築士【構造力学個別問題】軸方向変形・たわみ－04」sympyで。作図も

・タイトルを変更予定です。
・後半のたわみだけです。軸方向変形はこれからです。
・作図は、sympyとFreeCADの2通りです。

**パイソニスタの方へ**
・計算と作図を別々にしました。
　ひとつにする方法のアドバイスをいただけると幸いです。

# オリジナル Youtube
**たわみ ＜「改15 一級建築士【構造力学個別問題】軸方向変形・たわみ－04」** (6:07~9:36)
でめまる構造 様 
https://www.youtube.com/watch?v=clkmFbw8-zI#?t=427
＞...Aはかなり、サボっている。。
＞...長い部材の方が小さい力でたわむ...

# wolframalphaで(オリジナル 様の方法を参考に)

https://www.wolframalpha.com/input?i=P%3DA%2BB%2CA*%284l%29**3%2F%283*+E*+I%29%3D%3DB*%282l%29**3%2F%283*+E*+I%29%2CA%2CB&lang=ja

結果
A = P/9 , B = (8 P)/9 , E!=0

# 以下,sympyのweb上での実行方法
SymPy Live Shellで
https://qiita.com/mrrclb48z/items/00dd08b0317069be9342#web%E4%B8%8A%E3%81%AE%E5%AE%9F%E8%A1%8C%E6%96%B9%E6%B3%95sympy-live-shell%E3%81%A7

# sympyで(オリジナル 様の方法を参考に)
```python
# ver0.1
from sympy import *
var('P,PA,PB,δ,EI,L') 
δ  =P*L**3/(48*EI)
print("#",solve([Eq(P,PA+PB), 
                 Eq(δ.subs({P:PA,L:4*L}),
                    δ.subs({P:PB,L:2*L}))],
                [PA,PB]))
# {PA: P/9, PB: 8*P/9}  # 支点反力RA,RBを省略
```
# sympyで(エネルギー法で)
 ・???偶然の一致かも 偏微分
```python
# ver0.2
from sympy import *
var('P,X,L,x,EI') 
def myU(P,L,a):
    return  1/EI \
            *( integrate((-P*(a-x)+P/2*(L-x))**2,(x,0,a)) \
              +integrate((         P/2*(L-x))**2,(x,a,L)))
X=solve(Eq( diff(myU(P-X,4*L,2*L),X), \
           -diff(myU(X  ,2*L,  L),X)),X)[0]
print("#",((P-X)/2)/(X/2))
# 1/8
```

# sympyで(積分公式で)

https://qiita.com/mrrclb48z/items/c9a5732ca8b6a545a355
 
・ 集中荷重、実荷重、単位荷重
 ```python
# ver0.3
from sympy import *
var('P,X,L,x,EI') 
def myMRMR(P,L): # (L/3)*(P/2*L/2)*(1/2*L/2)
    return (L*Rational(1,3))*(P*Rational(1,2)*L*Rational(1,2))*(Rational(1,2)*L*Rational(1,2))
X=solve(Eq( myMRMR(P,4*L)-myMRMR(X,4*L), \
            myMRMR(X,2*L)              ),X)[0]
print("#",((P-X)/2)/(X/2))
# 1/8
```

# sympyで(Beamで)作図
**・計算をあきらめました。作図だけです。**
```python
from sympy import *
from sympy.physics.continuum_mechanics.beam import Beam
from sympy import symbols
E,I,P= symbols('E,I,P')
l=symbols('l',positive=True)
var("R,x,M,A1,A2,M1,M2,L")
var("p0,m0")
R1,M1=symbols('R1,M1')
R2,M2=symbols('R2,M2')
def myBeam_Tanjun___Sakuzu(l,E,I,P):
    b=Beam(l,E,I)
    b.apply_load(P ,l*Rational(1,2),-1) 
    b.apply_support(0,'pin')
    b.apply_support(l,'roller')
    p = b.draw()  
    p.show() 
    return 
# def myBeam_Tanjun___Tawami(l,E,I,P):
#     b=Beam(l,E,I)
#     b.apply_load(P,l*Rational(1,2),-1) 
#     b.apply_load(R1,0,-1)
#     b.apply_load(R2,l,-1)
#     b.bc_deflection.append((0,0))
#     b.bc_deflection.append((l,0))
#     b.solve_for_reaction_loads(R1,R2)
#     return b.deflection()
# sol_R=solve(Eq(myBeam_Tanjun___Tawami(4*L,E,I,P).subs({x:2*L}).subs({P:P-R}),    
#                myBeam_Tanjun___Tawami(2*L,E,I,P).subs({x:1*L}).subs({P:  R})
#               ),R)[0]
# print("#",sol_R  )
# 作図
myBeam_Tanjun___Sakuzu(1,1,1,1)
```
#### 単純梁 梁A,梁B(作図を省略) 
![111.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109698/f06471e7-b9d2-4c1b-b556-ebb2c2e9fe9b.png)
# FreeCADで作図
```python
import FreeCAD
import Part
import Draft
import Mesh
#########################################################################################################
# 計算
##############################################################
from sympy import *
l=1
O =  Point(   0,   0,0   )
A1=O+Point(   0,-2*l,0   )
A2=O+Point(   0, 2*l,0   )
B1=O+Point(-1*l,   0,0   )
B2=O+Point( 1*l,   0,0   )
P =O+Point(   0,   0,5/10)
##########################################################################################################
### 作図用 私の以下の３D作図バージョン古いです。2024-11-03
##########################################################################################################
### 3D作図
def myXYZ2Txt(A):
    #return '(' + str(A.x) + ',' + str(A.y) + ',' + str(A.z) + ')'
    return ''
def myTxtXYZ(A,myWedgei):
    P5x=float(A.x)
    P5y=float(A.y)
    P5z=float(A.z)
    p5 = FreeCAD.Vector(P5x, P5y, P5z)
    myText = Draft.makeText(myWedgei, p5)
    myText.Label = myWedgei
    FreeCADGui.ActiveDocument.ActiveObject.FontSize = '0.2 mm'
    return
def myTxtXYZ_S(*xy_tx):
    for i in range(1,int(len(xy_tx)/2)+1):
        myTxtXYZ(xy_tx[2*i-2],xy_tx[2*i-1]+myXYZ2Txt(xy_tx[2*i-2]) )
    return
def myLine(A,B):
    Ax,Ay,Az=float(A.x),float(A.y),float(A.z)
    Bx,By,Bz=float(B.x),float(B.y),float(B.z)
    pl = FreeCAD.Placement()
    pl.Rotation.Q = (0.4247081540122249, 0.17592004639554645, 0.33985110062924484, 0.8204732460821097)
    pl.Base = FreeCAD.Vector(-3.9166066876399563, -2.1670824762243774, 1.7495260956243028)
    points = [FreeCAD.Vector(Ax,Ay,Az), FreeCAD.Vector(Bx,By,Bz)]
    line = Draft.make_wire(points, placement=pl, closed=False, face=True, support=None)
    Draft.autogroup(line)
    return
def myLine_S(*args):
    for i in range(1,len(args)):
        myLine(args[i-1],args[i])
    return
def myLine_C(*args):
    for i in range(1,len(args)):
        myLine(args[i-1],args[i])
    myLine(args[i],args[0])
    return
def myLine_H(*args):
    for i in range(1,len(args)):
        myLine(args[0],args[i])
    return
#######################################################
myLine_S  (A1,A2)
myLine_S  (B1,B2)
myLine_S  (O ,P )
myTxtXYZ_S(A1,"A1(0,-2L)",A2,"A2(0,2L)",B1,"B1(-1L,0)",B2,"B2(1L,0)",P,"P")
#
doc = App.activeDocument()
App.ActiveDocument.addObject("App::Origin", "Origin")
# App.ActiveDocument.getObject('Origin').Visibility = True
App.ActiveDocument.recompute()
Gui.activeDocument().activeView().viewAxonometric()
Gui.SendMsgToActiveView("ViewFit")
```
#### ??? 全体図　isometric方向
・(省略)
#### 拡大図
・矢印の書き方を勉強中。
・黄緑色は、CAD操作で着色です。勉強中。
・座標軸は、非表示です。
![111.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/109698/148631cd-6d78-41e9-b5b0-a53392ce3011.png)

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

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

#### Qiita内の類題

https://qiita.com/mrrclb48z/items/4f7953311bb3b21df6b5