材料力学「衝撃荷重 いろいろ」sympyで。

**パイソニスタの方へ**
　subs,simplifyで、できませんでした。
　いい方法があれば、アドバイスいただけると助かります。
　私のコードは、文字列のreplaceで対応しています。
```
(g*l*m + sqrt(g*l*m*(2*A*E*h + g*l*m)))/l
    ↓
 g*m*(sqrt(2*A*E*h/(g*l*m) + 1) + 1)
```

# sympyで
・衝撃荷重
#### ver0.1  
```python
# ver0.1
from sympy import *
var('A,σ,E,ε,l,P,λ,m,g,h,λ0,σ0')
def myTaiou(sol_P):
    # (g*l*m + sqrt(g*l*m*(2*A*E*h + g*l*m)))/l
    #     ↓
    #  g*m*(sqrt(2*A*E*h/(g*l*m) + 1) + 1)
    sol_P=sol_P.expand()                          #;print("#",sol_P)
    mg=m*g                                        #;print("#",sol_P)
    f    =sqrt(2*A*E*g*h*l*m + g**2*l**2*m**2)/l  #;print(f)
    ff   =(f**2).expand()                         #;print(ff)
    fff  =(ff/(g**2*m**2)).expand()               #;print(fff)
    return (mg+mg*sqrt(fff)).factor()
equ906=[Eq(P,σ*A),Eq(λ,ε*l),Eq(σ,E*ε)]
rep=solve([Eq(P,σ*A),Eq(λ,ε*l),Eq(σ,E*ε)],[ε,λ,σ])              #;print(rep)
equ930=Eq(Rational(1,2)*P*λ,m*g*(h+λ))
equ931=Eq(Poly((equ930.lhs-equ930.rhs).subs(rep),P).args[0],0)  #;print("#",equ931)
sol_P =solve(equ931,P)[1]                                       #;print("#",sol_P)
P     =myTaiou(sol_P)                                           ;print("# P=",P)
σ     =P/A                                                      ;print("# σ=",σ)
λ     =σ*(l/E)                                                  ;print("# λ=",λ)
print()
str_P_936 =str(P).replace("*A*E","")   .replace("(g*l*m)","λ0")                                                 ;print("# P=",str_P_936)
str_σ_936 =str(σ).replace("*A*E","")   .replace("(g*l*m)","λ0").replace("/A","")       .replace("g*m","σ0")     ;print("# σ=",str_σ_936) 
str_λ_936 =str(λ).replace("*/(A*E)","").replace("(g*l*m)","λ0").replace("(g*l*m)","λ0").replace("g*l*m","λ0").replace("/(A*E)","").replace("*A*E","") ;print("# λ=",str_λ_936) 
print()
str_P =str_P_936 .replace("(sqrt(2*h/λ0 + 1) + 1)","sqrt(2*h/λ0)") ;print("# P=",str_P)
str_σ =str_σ_936 .replace("(sqrt(2*h/λ0 + 1) + 1)","sqrt(2*h/λ0)") ;print("# σ=",str_σ) 
str_λ =str_λ_936 .replace("(sqrt(2*h/λ0 + 1) + 1)","sqrt(2*h/λ0)") ;print("# λ=",str_λ) 
print()
rep={h:0}
print("# P=",sympify(str_P_936).subs(rep))
print("# σ=",sympify(str_σ_936).subs(rep))
print("# λ=",sympify(str_λ_936).subs(rep))
# P= g*m*(sqrt(2*A*E*h/(g*l*m) + 1) + 1)
# σ= g*m*(sqrt(2*A*E*h/(g*l*m) + 1) + 1)/A
# λ= g*l*m*(sqrt(2*A*E*h/(g*l*m) + 1) + 1)/(A*E)

# P= g*m*(sqrt(2*h/λ0 + 1) + 1)
# σ= σ0*(sqrt(2*h/λ0 + 1) + 1)
# λ= λ0*(sqrt(2*h/λ0 + 1) + 1)

# P= g*m*sqrt(2*h/λ0)
# σ= σ0*sqrt(2*h/λ0)
# λ= λ0*sqrt(2*h/λ0)

# P= 2*g*m
# σ= 2*σ0
# λ= 2*λ0
```

# sympyで
・衝撃荷重
#### ver0.1  
```python
# ver0.1
from sympy import *
var('m,v,P,δ,l,A,E')
equ_a=Eq(1/2*m*v**2,P*δ/2)
rep_b={δ:P*l/(A*E)}
equ_c=equ_a.subs(rep_b)
P    =solve(equ_c,P)[1]   ;print("#",P)
print("#",P/A)
# v*sqrt(A*E*m/l)
# v*sqrt(A*E*m/l)/A
```

# いつもの? 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)

#### web
・動荷重
＞動負荷係数(dynamic load factor)

http://www.md.ams.eng.osaka-u.ac.jp/~nakatani/Lectures/Strength_of_Materials/PDFs/2024zairikislides11.pdf#page=39

>中谷彰宏の「かけがえのない材料力学」（大阪大学）様
>http://www.md.ams.eng.osaka-u.ac.jp/~nakatani/Lectures/Strength_of_Materials/


#### 文献

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