・長文です。7通り。できなかったものを含めて。
パイソニスタの方へ
・vr0.6で、matplotlib 目盛りを非表示にすると、 ??? backend
??? matplotlib 作図が3回でます。アドバイスをいただけると幸いです。
https://matplotlib.org/
・ver0.7で、Beamで
計算と作図を一つにできませんでした。分けました。
作図を一つにできませんでした。分けました。
オリジナル
でめまる構造 様 (0:00〜16:32)
>前半問題 (0:00〜10:07) 比を求めよ。
https://youtu.be/0o7XS0_0zK4
・私は、未知数の数を理解できていません。???時計回り ???反時計回り
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で(オリジナル 様の方法で)
・ver 0.1 >②へ③を代入し... いつも通り...。 2:00
2つの式をイコールで結ぶ。私には難しいです。。
# ver 0.1 >②へ③を代入し... いつも通り...。 2:00
from sympy import *
var('P,wL,L,VB,VC')
# sgm_Y_maru1=VB-P+VC-wL
sgm_MC_maru2 =((VB*3*L-P*2*L+wL*L/2)/(3*L)).expand() ;print("# ②",sgm_MC_maru2)
hidari =VB*2*L-P*L
VB_sol_maru3 =solve(Eq(hidari,0),VB)[0] ;print("# ③",VB_sol_maru3)
NiHeMaru3 =str(sgm_MC_maru2).replace("VB",str(VB_sol_maru3)) ;print("#" ,NiHeMaru3 )
print("#",solve(Eq(sympify(NiHeMaru3),0),P)[0]/wL)
# ② -2*P/3 + VB + wL/6
# ③ P/2
# -2*P/3 + P/2 + wL/6
# 1
・ver 0.2 "※別解" >または、①へ③を代入し... 私は、どうやっていいかわからない。とりあえず.. 6:31
# ver 0.2 >または、①へ③を代入し... 私は、どうやっていいかわからない。とりあえず.. 6:31
from sympy import *
var('P,wL,L,VB,VC')
sgm_Y_maru1=VB-P+VC-wL
# sgm_MC_maru2 =((VB*3*L-P*2*L+wL*L/2)/(3*L)).expand() ;print("# ②",sgm_MC_maru2)
hidari =VB*2*L-P*L
VB_sol_maru3 =solve(Eq(hidari,0),VB)[0] ;print("# ③",VB_sol_maru3)
migi =-VC*L+wL*(L*1.5)
VC_sol_maru3 =solve(Eq(migi,0),VC)[0] ;print("# ③",VC_sol_maru3)
ItiHeMaru3 =str(sgm_Y_maru1).replace("VC",str(VC_sol_maru3)) ;print("#" ,ItiHeMaru3 )
print("#",solve(Eq(sympify(ItiHeMaru3).subs({VB:VB_sol_maru3}),0),P)[0]/wL)
# ③ P/2
# ③ 1.5*wL
# -P + VB + 1.5*wL - wL
# 1
・ver 0.3 "おまけ" モーメント図を書いて求める。7:33
# ver 0.3 >おまけ モーメント図を書いて求める。7:33
from sympy import *
var('P,wL,L')
print("#",solve(Eq((P*L)*(1/3),(wL*(L/2))*(2/3)),P)[0]/wL)
# 1
sympyで(私のいつも通りで)
・ver 0.4 左自由体の右断面の断面位置での左側のモーメントつりあい。日本語が変かも。
・3元連立方程式です。2元連立方程式(RB,RC)と1元方程式(P)でも可。
# ver 0.4 左自由体の右断面の断面位置での左側のモーメントつりあい。
from sympy import *
var('VB,VC,P,L,wL,x')
MBP=VB*x
MPC=MBP -P*(x-L)
MCD=MPC +VC*(x-3*L)-wL*(x-3*L)/L*(x-3*L)*Rational(1,2)
print("#",solve([Eq(MCD.subs({x:4*L}),0),
Eq(VB+VC-P-wL ,0),
Eq(MPC.subs({x:2*L}),0)
],[VB,VC,P])[P]/wL)
# 1
・ver 0.5 右自由体の左断面の断面位置での右側のモーメントつりあい。
3元連立方程式です。2元連立方程式(RB,RC)と1元方程式(P)でも可。
# ver 0.5 右自由体の左断面の断面位置での右側のモーメントつりあい。
from sympy import *
var('VB,VC,P,L,wL,x')
MCD= -wL*(4*L-x)**2*Rational(1,2)
MPC= VC*(3*L-x)-wL*((4-Rational(1,2))*L-x)
MBP=P*(x-L)+VC*(3*L-x)-wL*((4-Rational(1,2))*L-x)
print("#",solve([Eq(MBP.subs({x:0}) ,0),
Eq(VB+VC-P-wL ,0),
Eq(MPC.subs({x:2*L}),0)
],[VB,VC,P])[P]/wL)
# 1
・ver 0.6 Piecewiseを作図に使いました。
・Piecewiseはの交点計算ができませんでした。
# ver 0.6 # Piecewiseは作図に使いました。# Piecewiseはの交点計算ができませんでした。
# ??? matplotlib 作図が3回でます。
from sympy import *
var('P,wL,L,VB,VC,x')
VB_Tanjunn=Rational(2,3)*P # 集中荷重をかけた単純梁と同じ。外力に辺の比をかけたもの。
VC_Tanjunn=Rational(1,3)*P
VA_Tobunpu=wL/6 # 等分布荷重の片持ち梁と同じかたちですよね。
MBP_Tanjunn=-integrate(VB_Tanjunn,x)
MPC_Tanjunn=-integrate(VB_Tanjunn,(x,0,L))+integrate(VC_Tanjunn,x).subs({x:x-L})
MBC_Tobunpu= integrate(VA_Tobunpu,x)
y_Tanjunn=Piecewise((MBP_Tanjunn,(x>=0 )&(x< L)),
(MPC_Tanjunn,(x>=L )&(x<3*L)),
(0,True)
)
y_Tobunpu=Piecewise((MBC_Tobunpu,(x>=0 )&(x<3*L)),
(0,True)
)
# print("#",solve(Eq(( y_Tanjunn+ y_Tobunpu).subs({x:2*L}),0),P) ) # Piecewiseの交点計算が、できませんでした。
print ("#",solve(Eq((MPC_Tanjunn+MBC_Tobunpu).subs({x:2*L}),0),P)[0]/wL)
# 1
# 作図 P=wLの条件以外、値はテキトウにしました。
rep={P:1,L:1,wL:1}
p=plot((y_Tanjunn.subs(rep),(x,0,3*L.subs(rep))),
(y_Tobunpu.subs(rep),(x,0,3*L.subs(rep))),
(y_Tanjunn.subs(rep)+y_Tobunpu.subs(rep),(x,0,3*L.subs(rep)))
,show=False)
p._backend.process_series()
backend = p._backend # MatplotlibBackendのインスタンスを取得
ax = backend.ax # MatplotlibのAxesオブジェクト
# ax.tick_params(left=False, bottom=False, labelleft=False, labelbottom=False)
ax.tick_params (left=False, bottom=False, labelleft=False )
p.show()
・作図 等分布荷重の部分は勉強中。
・P=wLの条件以外、値はテキトウにしました。
・??? Piecewiseはの交点計算ができませんでした。
・??? matplotlib 作図が3回でます。
緑=橙+青
sympyで(Beamで)
・計算と作図を一つにできませんでした。分けました。
・作図を一つにできませんでした。分けました。
# ver 0.7 sympyのBeamで。
from sympy import *
from sympy.physics.continuum_mechanics.beam import Beam
var('E,I,VB,VC,P,w,L,a,b,x')
def myBeam_Tanjun_PwL_Keisan(E,I,P,w,L):
b=Beam(4*L,E,I)
b.apply_load ( VB,0*L,-1)
b.apply_load ( VC,3*L,-1)
b.apply_load ( P ,1*L,-1)
b.apply_load ( w ,3*L, 0,end=4*L)
b.bc_deflection=[(0,0),(3*L,0)]
b.solve_for_reaction_loads(VB,VC)
return b.bending_moment().subs({x:2*L})
def myBeam_Tanjun_PwL_Sakuzu_draw(E,I,P,w,L):
b=Beam(4*L,E,I)
b.apply_support(0 ,'pin' )
b.apply_support(3*L ,'roller')
b.apply_load (P,L ,-1)
b.apply_load (w,3*L, 0,end=4*L)
p = b.draw()
p.show()
return
def myBeam_Tanjun_PwL_Sakuzu_bending_moment(E,I,P,w,L):
b=Beam(4*L,E,I)
b.apply_load (P,L , -1)
b.apply_load (w,3*L, 0,end=4*L)
b.apply_load (VB,0*L,-1)
b.apply_load (VC,3*L,-1)
b.bc_deflection=[(0,0),(3*L,0)]
b.solve_for_reaction_loads(VB,VC)
b.plot_bending_moment()
b.plot_slope()
b.plot_deflection()
return
# myMoment=myBeam_Tanjun_PwL_Keisan(E,I,P,w,L) # だめでした。
myMoment=myBeam_Tanjun_PwL_Keisan (E,I,P,w,1) # しょうがないです。
print("# ?",solve(Eq(myMoment,0),P)[0])
# ? w
# 作図
# mySakuzu=myBeam_Tanjun_PwL_Sakuzu_draw (E,I,P,w,L) # だめでした。。
mySakuzu=myBeam_Tanjun_PwL_Sakuzu_draw (E,I,1,1,1) # 作図を一つにできませんでした。
mySakuzu=myBeam_Tanjun_PwL_Sakuzu_bending_moment(1,1,1,1,1)
plot_shear_force(subs=None) を忘れていました。申し訳ありません。
b.plot_bending_moment()
b.plot_slope()
b.plot_deflection()
いつもの? sympyの実行環境と 参考のおすすめです。
いつもと違うおすすめです。
ver 0.1
ver 0.2
・sympify
ver 0.3
ver 0.4 (私のいつも通りで)
>符号の決め方
ver 0.5
ver 0.6
class sympy.functions.elementary.piecewise.Piecewise(*_args)
ver 0.7 (Beamで)