simple beam,uniformly distributed load はりの応力とSFD,BMD 発展例題4.24 p102「材料力学演習」をsympyでやってみたい。

**パイソニスタの方へ**
~~・??? 何かいい方法がありませんか。変な質問で申し訳ありません。~~
・私のver0.2の「symbol」の使い方を教えて下さい。(2023/12/22追加)
　以下で問い合わせ中。

https://ja.stackoverflow.com/questions/98125/sympy%e3%81%aesubs%e3%81%ae%e4%bd%bf%e3%81%84%e6%96%b9%e3%82%92%e6%95%99%e3%81%88%e3%81%a6%e4%b8%8b%e3%81%95%e3%81%84

・私のver0.3の「doble integral」の使い方を教えて下さい。(2023/12/24追加)
　あと2息です。

 # オリジナル
[発展例題4.24 p102](http://zairikiweb.starfree.jp/zai_enshuh/zai_enshuh_ver.3.3.pdf#page=107)[＜「材料力学演習(20221021)一括(ver.3.3)」を勉強したい。](https://qiita.com/mrrclb48z/items/c3274daf5f7a99cfe027#%E4%BD%9C%E6%A5%AD%E4%B8%AD%E7%A7%81%E3%81%AE%E8%A7%A3%E7%AD%94sympy)
？？？タブレット等で、pdfを開く事ができないかも。？？？　

# latexで
[2025/03/10 移動しました。](https://qiita.com/mrrclb48z/items/09b7cc73f0a22bf651b8#:~:text=%E8%8B%A6%E5%8A%B4%E3%81%97%E3%81%BE%E3%81%97%E3%81%9F%E3%80%82-,%EF%BC%94,-.(%E6%8A%9C%E7%B2%8B)%20%EF%BC%9E%E6%86%B6%E3%81%88%E3%81%A6)



# sympyで

#### ver0.3 重複積分法で
・「double integral」の使い方を教えて下さい。(2023/12/24追加)
```python
# ver0.3 (2023/12/22追加)
# 発展例題4.24 p102

from sympy import *
from decimal import Decimal, ROUND_HALF_UP, ROUND_HALF_EVEN

var('l,q,a',real=True)
var('x'    ,real=True)
var('u,v'  ,real=True)
# var('RA'     ,real=True)
RA = Symbol('RA')
def myDic (myStrKey,myValue):
    return {sympify(myStrKey):myValue}
#
u0x = (u,0,x)
MAC = integrate(RA ,u0x)                    .simplify()               ;print("# MAC =",MAC)                      
FAC = diff(MAC,x)                           .simplify()               ;print("# FAC =",FAC)                      
# 
uav = (u,a,v)
vax = (v,a,x)
MCB = (MAC-integrate(integrate(q,uav),vax)) .simplify()               ;print("# MCB =",MCB)                      
FCB = diff(MCB,x)                           .simplify()               ;print("# FCB =",FCB)                      
RA  = solve(MCB.subs({x:l}),RA) [0]                                   ;print("# RA  =",RA );print()                     
# 
rep = {l:1.0,a:0.4,q:1670}
rep|= myDic("RA" ,RA.subs(rep).simplify() )                           ;print("# rep =",rep)
# 
print("# RA  =",Decimal(str(RA .subs(rep))).quantize(Decimal('0'), ROUND_HALF_UP))
print("# FAC =",Decimal(str(FAC.subs(rep))).quantize(Decimal('0'), ROUND_HALF_UP))
print("# FCB =",            FCB.subs(rep)  .simplify()                           )
print("# MAC =",            MAC.subs(rep)  .simplify()                           )
print("# MCB =",            MCB.subs(rep)  .simplify()                           )
# MAC = RA*x
# FAC = RA
# MCB = RA*x - a**2*q/2 + a*q*x - q*x**2/2
# FCB = RA + a*q - q*x
# RA  = q*(a**2 + l*(-2*a + l))/(2*l)

# rep = {l: 1.0, a: 0.4, q: 1670, RA: 300.600000000000}
# RA  = 301
# FAC = 301
# FCB = 968.6 - 1670*x
# MAC = 300.6*x
# MCB = -835*x**2 + 968.6*x - 133.6
```

#### ver0.2 うごきません。
・repに全部の値を、辞書へ。辞書から要素を取り出したい。
・変数RAを,varだと、RAでした。symbolで対応しました。
```python
# ver0.2 (2023/12/22追加)
# 発展例題4.24 p102

from sympy import *

var('l,q,a'   ,real=True)
var('MAC,x'   ,real=True)
var('MCB'     ,real=True)
var('FAC,FCB' ,real=True)
var('RB'      ,real=True)
var('F0x'     ,real=True)
# var('RA'      ,real=True)
RA = Symbol('RA')

def myDic (myStrKey,myValue):
    return {sympify(myStrKey):myValue}
MAC = RA*x                                                           ;print("# MAC=",MAC)                                                              
MCB = solve(-RA*x-Rational(1,2)*q*(x - a)**2+MCB,MCB)[0]             ;print("# MCB=",MCB)
FAC = diff(MAC,x)                                                    ;print("# FAC=",FAC)
FCB = diff(MCB,x).simplify()                                         ;print("# FCB=",FCB)   
RA  = solve(MCB.subs({x:l}),RA)[0]                                   ;print("# RA =",RA )
RB  = q*(l - a)-RA                                                   ;print("# RB =",RB )
print()
rep={l:1.0,a:0.4,q:1.67*1000}                                     #  ;print("# ",rep )
rep |= myDic("RA" ,RA .subs(rep))                                 #  ;print("# ",rep )
rep |= myDic("FAC",FAC.subs(rep))                                 #  ;print("# ",rep )
rep |= myDic("RB" ,RB .subs(rep))                                 #  ;print("# ",rep )
rep |= myDic("FCB",FCB.subs(rep))                                 #  ;print("# ",rep )
rep |= myDic("MAC",MAC.subs(rep))                                 #  ;print("# ",rep )
rep |= myDic("MCB",MCB.subs(rep))                                    ;print("# ",rep,type(rep) )
print("# RA =",rep[RA]  )
# print("# RB =",rep[RB] )
# print("# FAC=",rep[FAC])
# print("# FCB=",rep[FCB])
# print("# MAC=",rep[MAC])
# print("# MCB=",rep[MCB])

# MAC= RA*x
# MCB= RA*x + q*(a - x)**2/2
# FAC= RA
# FCB= RA - q*(a - x)
# RA = -q*(a - l)**2/(2*l)
# RB = q*(-a + l) + q*(a - l)**2/(2*l)

#  {l: 1.0, a: 0.4, q: 1670.0, RA: -300.600000000000, FAC: -300.600000000000, RB: 1302.60000000000, FCB: 1670.0*x - 968.6, MAC: -300.6*x, MCB: -300.6*x + 835.0*(0.4 - x)**2} <class 'dict'>
```
  File "/home/xxx/xxx.py", line 32, in <module>
    print("# RA =",rep[RA]  )
KeyError: -q*(a - l)**2/(2*l)

#### ver0.1
```python
# ver0.1 (2023/12/19作成)
# 発展例題4.24 p102
from sympy import *

var('l,q,a'   ,real=True)
var('MAC,RA,x',real=True)
var('MCB'     ,real=True)
var('FAC,FCB' ,real=True)
var('RB'      ,real=True)
var('F0x'     ,real=True)
def myEq_RepLR(eq):
     return {eq.lhs:eq.rhs}
eqMAC=Eq(MAC,RA*x)                                                ;print("#",eqMAC)
eqMCB=Eq(-RA*x+Rational(1,2)*q*(x-a)**2+MCB,0)                    ;print("#",eqMCB)
eqMCB=Eq(MCB,solve([eqMAC,eqMCB],MCB)[MCB])                       ;print("#",eqMCB)
eqFAC=Eq(FAC,diff(eqMAC.rhs,x))                                   ;print("#",eqFAC)
eqFCB=Eq(FCB,diff(eqMCB.rhs,x))                                   ;print("#",eqFCB)
eqRA =Eq(RA,solve(Eq(eqMCB.rhs.subs({x:l}),0),RA)[0].factor() )   ;print("#",eqRA ) 
print()
rep={l:1.0,a:0.4,q:1.67*1000}                                     ;print("#",rep )
eqRA =Eq(RA,eqRA.rhs.subs(rep))                                   ;print("#",eqRA)
eqRB =Eq(RB,solve(Eq(RB,q*(l-a)-RA),RB)[0])                       ;print("#",eqRB) 
eqRB =eqRB.subs(rep).subs(myEq_RepLR(eqRA))                       ;print("#",eqRB) 
eqFAC=eqFAC.subs(myEq_RepLR(eqRA))                                ;print("#",eqFAC)
eqFCB=eqFCB.subs(rep).subs(myEq_RepLR(eqRA))                      ;print("#",eqFCB)
eqMAC=eqMAC.subs(myEq_RepLR(eqRA))                                ;print("#",eqMAC)
eqMCB=eqMCB.subs(rep).subs(myEq_RepLR(eqRA))                      ;print("#",eqMCB)
print()
eqF0x=Eq(F0x,solve(Eq(eqFCB.rhs,0),x)[0])                         ;print("#",eqF0x)
# Eq(MAC, RA*x)
# Eq(MCB - RA*x + q*(-a + x)**2/2, 0)
# Eq(MCB, RA*x - a**2*q/2 + a*q*x - q*x**2/2)
# Eq(FAC, RA)
# Eq(FCB, RA + a*q - q*x)
# Eq(RA, q*(a - l)**2/(2*l))

# {l: 1.0, a: 0.4, q: 1670.0}
# Eq(RA, 300.6)
# Eq(RB, -RA - a*q + l*q)
# Eq(RB, 701.4)
# Eq(FAC, 300.6)
# Eq(FCB, 968.6 - 1670.0*x)
# Eq(MAC, 300.6*x)
# Eq(MCB, -835.0*x**2 + 968.6*x - 133.6)

# Eq(F0x, 0.58)
```

# いつもの? sympyの実行環境と 参考のおすすめです。
(テンプレート)

https://qiita.com/mrrclb48z/items/00dd08b0317069be9342



# いつもと違うおすすめです。
＞一部に等分布荷重を受ける単純支持はり
＞JSME p89
　
＞単純支持ばり 10)
＞構造力学公式集 p138

- 村上敬宜. (2023). *材料力学* (新装版). 森北出版.　
問題5.3 p83