等分布荷重
・申し訳ありません。sympyのBeamができていません。数をこなして戻ってきます。
・Slope と BMDがでました。
・SFDはエラーがでたので?、SFDは、自作plotです。
オリジナル
基本例題4.23 P101<「材料力学演習(20221021)一括(ver.3.3)」を勉強したい。#sympy
???タブレット等で、pdfを開く事ができないかも。???
sympyで。微分で(オリジナル 様の方法です。)
・ver0.1 基本例題4.23 P101
# ver0.1 基本例題4.23 P101
from sympy import *
from decimal import Decimal, ROUND_HALF_UP
var('q,RA,RA,RB,l,x' ,real=True)
def myRound1(x, d=1):
p = Decimal(str(x)).quantize(Decimal(str(1/10**d)), rounding=ROUND_HALF_UP)
p = float(p)
return p
M=RA*x-Rational(1,2)*q*x**2 ;print("# M =",M)
F=diff(M,x) ;print("# F =",F)
RA_sol=solve(Eq(M.subs({x:l}),0),RA)[0];print("# RA =",RA_sol)
print()
rep={l:1.0,q:1000.0,RA:RA_sol}
print("# RA =",myRound1(RA.subs(rep),1))
print("# F =", F .subs(rep) )
# M = RA*x - q*x**2/2
# F = RA - q*x
# RA = l*q/2
# RA = 500.0
# F = 500.0 - 1000.0*x
sympyのBeamで
・ver0.2 基本例題4.23 P101
??? 以下はエラーです。
(1)SFDで、...ValueError: value of A was not passed.
SFDはエラーがでたので?、SFDは、自作plotです。
(2)計算と作図が、同時にできませんでした。?b2にしてもだめでした。
以下のため。def remove_last_term(expr):
# ??? 以下はエラーです。
# ver0.2 基本例題4.23 P101
from sympy import *
from decimal import Decimal, ROUND_HALF_UP
from sympy.physics.continuum_mechanics.beam import Beam
from sympy import symbols
E ,I =symbols('E ,I ')
l,myl=symbols('l,myl',postive=True)
R1,M1=symbols('R1,M1')
R2,M2=symbols('R2,M2')
var(' q,x')
var('myq,myE,myI')
def remove_last_term(expr):
# 式を項ごとに分解し、最後の項を除去
terms = expr.as_ordered_terms()[:-1] # 最後の項を取り除く
# 残りの項を使って式を再構成
return Add(*terms)
def myRound1(x, d=1):
p = Decimal(str(x)).quantize(Decimal(str(1/10**d)), rounding=ROUND_HALF_UP)
p = float(p)
return p
def myBeam_Tanjun_reaction_loads(l,E,I,q):
b1=Beam(l,E,I)
b1.apply_load(R1,0,-1)
b1.apply_load(q ,0, 0,end=l)
b1.apply_load(R2,l,-1)
b1.solve_for_reaction_loads(R1,R2)
R1R2=b1.reaction_loads
return R1R2[R1],R1R2[R2]
def myBeam_Tanjun_Sakuzu_draw (l,E,I,q):
b2=Beam(l,E,I)
b2.apply_load (q ,0, 0,end=l)
b2.apply_support(0 ,'pin')
b2.apply_support(l ,'roller')
p = b2.draw()
p.show()
return
def MYshear_stress(expr):
var('A')
return remove_last_term(sympify(expr.subs({A:1})))
def myBeam_Tanjun_Sakuzu_SFDBMD (l,E,I,q):
b3=Beam(l,E,I)
b3.apply_load(R1,0,-1)
b3.apply_load(q ,0, 0,end=l)
b3.apply_load(R2,l,-1)
b3.bc_deflection = [(0,0),(l,0)]
b3.solve_for_reaction_loads(R1,R2)
b3.plot_slope()
b3.plot_bending_moment()
# b3.plot_shear_stress()
plot (MYshear_stress(b3.shear_stress()),(x,0,l))
return
# --------------------------------------------------------------------------------------------------------------------
myl,myE,myI,myq=1.0,200*(10**9),400*(10**6),1000
R1,R2 =myBeam_Tanjun_reaction_loads(myl,myE,myI,myq);print ("#",myRound1(R1),myRound1(R2))
myBeam_Tanjun_Sakuzu_draw (myl,myE,myI,myq)
myBeam_Tanjun_Sakuzu_SFDBMD (myl,myE,myI,myq)
# -500.0 -500.0
??? SFDは、自作plotです。
(勉強中) Mathematicaで
(勉強中) MATLAB 追加のオプションSymbolic Math Toolbox で
いつもの? sympyの実行環境と 参考のおすすめです。
いつもと違うおすすめです。
参考文献
>一部に等分布荷重を受ける単純支持はり
>JSME p89
>単純ばり 2)
>構造力学公式集 表5.2 単純ばりの公式 p134