材料力学_(4)_モールの応力円（英:Mohr's stress circle）「傾斜断面の応力」をsympyでやってみたい。

・**記事タイトル変更予定です。** 材料力学_(３)は、作業中です。
・間違いをご指摘いただけると幸いです。勉強中です。

# ネット(youtube)

**福山大学工学部機械システム工学科 様**
・＞2階のテンソル(2:48)
・私は、行列による座標変換を理解していません。申し訳ありません。
**途中3:44から (0:00〜6:06)**

https://youtu.be/DPqXQ5dko9A?t=224

# ネット(pdf)
・[「材料力学演習(20221021)一括(ver.3.3).pdf」第5章　組み合わせ応力(129頁〜154頁,P134〜159) 基本事項３(モールの応力円) 134頁,P139](http://zairikiweb.starfree.jp/zai_enshuh/zai_enshuh_ver.3.3.pdf#page=139)
？？？タブレットだと、開く事ができないかもしれません。

「材料力学演習(20221021)一括(ver.3.3)」を勉強したい。＞sympy
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

# 文献
・[材料力学 (JSMEテキストシリーズ) 大型本 – 2007/8/30 135頁
](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/ref=cm_cr_arp_d_product_top?ie=UTF8)
・[JSMEテキストシリーズ　材料力学
](http://shop.jsme.or.jp/shopdetail/000000000037/jsmetext/page1/recommend/)
発行日：2007年8月
体裁：A4判/並製/2色刷り/208頁
[目次(p2)](https://gigaplus.makeshop.jp/jsmebooks/contents/5554_contents.pdf#page=2)

・[演習材料力学 (JSMEテキストシリーズ) 大型本 – 2010/11/1](https://www.amazon.co.jp/%E6%BC%94%E7%BF%92%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/4888981981/ref=pd_rhf_d_dp_s_pd_sbs_rvi_sccl_1_2/358-0144100-5604454?pd_rd_w=KczBx&content-id=amzn1.sym.b363659c-eda3-40b5-acc5-87d7776d0029&pf_rd_p=b363659c-eda3-40b5-acc5-87d7776d0029&pf_rd_r=ZRM42Q4RSH9T54XFE54R&pd_rd_wg=223mv&pd_rd_r=2fd3812a-13bf-43d3-8780-57b00ed00d11&pd_rd_i=4888981981&psc=1)

# Mathematicaで
勉強中

# sympyで(classCircleで)
・できました。できると思いませんでした。
・記号の式の順番まで、対応していません。
　自作関数で、文字列に変換したらできるような気もします。
class sympy.geometry.ellipse.Circle(*args, **kwargs)
https://docs.sympy.org/latest/modules/geometry/ellipses.html#sympy.geometry.ellipse.Circle
```python
from sympy import *
var('σ,τ,A,A0,θ,τxy,σx,σy',real=True)
eqσ=Eq(σ, τxy*sin(2*θ) + (σx - σy)*cos(2*θ)/2 + (σx + σy)/2) ;print("# ",eqσ)
eqτ=Eq(τ,-τxy*cos(2*θ) + (σx - σy)*sin(2*θ)/2)               ;print("# ",eqτ)  ;print()

eqσ=Eq(eqσ.lhs-(σx + σy)/2,eqσ.rhs-(σx + σy)/2)              #;print("# ",eqσ)
eqτ=Eq(eqτ.lhs,eqτ.rhs)                                      #;print("# ",eqτ)  ;print()

var('x,y',real=True)
f=(eqσ.lhs**2+eqτ.lhs**2)-(eqσ.rhs**2+eqτ.rhs**2)            #; print("# ",f)
f=f.subs({σ:x,τ:y})                                          #; print("# ",f)
ci=Circle(f)                                                 #; print(c)
cc=Point(ci.center.x.factor(),ci.center.y)                   #; print(cc)
po=poly((ci.radius**2).simplify() ,τxy)                      #; print("#",p)
ci=Circle(cc,sqrt( factor(po.nth(0))+τxy**2) )                ; print("# ",ci)
eq=Eq((σ-ci.center.x)**2+τxy**2,ci.radius**2)                 ; print("# ",eq)
#  Eq(σ, σx/2 + σy/2 + τxy*sin(2*θ) + (σx - σy)*cos(2*θ)/2)
#  Eq(τ, -τxy*cos(2*θ) + (σx - σy)*sin(2*θ)/2)

#  Circle(Point2D((σx + σy)/2, 0), sqrt(τxy**2 + (σx - σy)**2/4))
#  Eq(τxy**2 + (σ - (σx + σy)/2)**2, τxy**2 + (σx - σy)**2/4)
```

# sympyで(テキストより)
・多項式の分割と約分のため、polyにしました。
nth(*N)
Returns the n-th coefficient of f where N are the exponents of the generators in the term of interest.
https://docs.sympy.org/latest/modules/polys/reference.html#sympy.polys.polytools.Poly.nth
```python
# ver0.1
from sympy import *
var('σ,τ,A,A0,θ,τxy,σx,σy',real=True)
eqσ=Eq(σ,τxy*sin(2*θ) + (σx - σy)*cos(2*θ)/2 + (σx + σy)/2)  ;print("# ",eqσ)
eqτ=Eq(τ,-τxy*cos(2*θ) + (σx - σy)*sin(2*θ)/2)               ;print("# ",eqτ)  ;print()

eqσ=Eq(eqσ.lhs-(σx + σy)/2,eqσ.rhs-(σx + σy)/2)              #;print("# ",eqσ)
eqτ=Eq(eqτ.lhs,eqτ.rhs)                                      #;print("# ",eqτ)  ;print()

var('σxMσy',real=True)
rep={σx - σy:σxMσy}
eqσ=eqσ.subs(rep)                                              # ;print("# ",eqσ)
eqτ=eqτ.subs(rep)                                              # ;print("# ",eqτ)  ;print()

g=(eqσ.rhs**2+eqτ.rhs**2).expand()                             #;print("# ",f)
p=poly(g,τxy,σxMσy)                                            #;print("#",p)
g=p.nth(2,0).simplify()*τxy**2+p.nth(0,2).simplify()*σxMσy**2  #;print("# ",g)
g=g.subs({σxMσy:σx - σy})

var('h,k',real=True)
f=(eqσ.lhs**2+eqτ.lhs**2).expand()                             #;print("# ",f)
p=poly(f,τ)                                                    #;print("# ",p)
f=p.nth(0)                                                     #;print("# ",f)
q=(σ-h)**2-k
ans=solve(q-f,[h,k])
f=q.subs({h:factor(ans[0][0]),k:ans[0][1]})                    #;print("# ",f)

eq=Eq(f,g)  ;print("# ",eq)  
#  Eq(σ, σx/2 + σy/2 + τxy*sin(2*θ) + (σx - σy)*cos(2*θ)/2)
#  Eq(τ, -τxy*cos(2*θ) + (σx - σy)*sin(2*θ)/2)
#  Eq((σ - (σx + σy)/2)**2, τxy**2 + (σx - σy)**2/4)
```

# 参考

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

https://www.google.com/search?q=3%E6%AC%A1%E5%85%83+%E3%83%A2%E3%83%BC%E3%83%AB+%E5%86%86&rlz=1CAUHAM_enJP1038JP1038&oq=3%E6%AC%A1%E5%85%83%E3%80%80%E3%83%A2%E3%83%BC%E3%83%AB%E3%80%80%E5%86%86&gs_lcrp=EgZjaHJvbWUyBggAEEUYOTIHCAEQABiiBDIHCAIQABiiBDIKCAMQABiiBBiJBTIHCAQQABiiBNIBCTMwODIwajBqN6gCALACAA&sourceid=chrome&ie=UTF-8

https://www.google.com/search?q=%E7%B5%84%E3%81%BF%E5%90%88%E3%82%8F%E3%81%9B+%E5%BF%9C%E5%8A%9B&rlz=1CAUHAM_enJP1038JP1038&oq=%E7%B5%84%E3%81%BF%E5%90%88%E3%82%8F%E3%81%9B%E3%80%80%E5%BF%9C%E5%8A%9B&gs_lcrp=EgZjaHJvbWUyCQgAEEUYORiABDIGCAEQABgeMgoIAhAAGAQYBxgeMggIAxAAGAUYHjIICAQQABgIGB4yDAgFEAAYBBgIGA8YHtIBCTE2ODAzajBqN6gCALACAA&sourceid=chrome&ie=UTF-8