・def reorder_expression_str(expr, var_order): があります。
・作図未。イメージは、...
・呼び方いろいろ
連続はり(continous beam)
クライペイロン(Clapeyron)の3モーメントの式(equation of three moments)
3連モーメント定理(クライペイロンの定理)
三連モーメントの定理
3モーメントの方法
Theorem_of_three_moments
sympyで
プログラムでは、ありません。
・ver0.1
# ver0.1
from sympy import *
var('Ekm1,Ek,Ekp1')
var('Ikm1,Ik,Ikp1')
var('lkm1,lk,lkp1')
var('θPBkm1,θPBk,θPBk')
var('θPAkm1,θPAk,θPAk')
var('θBkm1 ,θBk ')
var('θMBkm1,θMBk')
var('MAkm1,MAk,MAkp1')
var('MBkm1,MBk,MBkp1')
var('E,I,Mk,Mkm1,Mk,Mkp1')
def reorder_expression_str(expr, var_order):
from sympy import Add, factor, sstr
terms_in_order = []
remaining_terms = list(expr.expand().args)
for var in var_order:
matching_terms = [t for t in remaining_terms if t.has(var)]
if matching_terms:
subtotal = Add(*matching_terms)
subtotal = factor(subtotal)
terms_in_order.append(sstr(subtotal))
for t in matching_terms:
remaining_terms.remove(t)
# 残りも追加
for t in remaining_terms:
terms_in_order.append(sstr(t))
return " + ".join(terms_in_order)
θMAk= (2*MAk+ MBk)*lk/(6*Ek*Ik)
θMBk=-( MAk+2*MBk)*lk/(6*Ek*Ik)
θAk =θMAk+θPAk #(6.35)
θBk =θMBk+θPBk # 〃
rep636={MBkm1:MAk,MBk:MAkp1,MAkm1:Mkm1,MAk:Mk,MAkp1:Mkp1} #;print(rep636)
rep637={θBkm1:θAk} #(6.37)
equ638=Eq(θMBkm1+θPBkm1,θMAk+θPAk) #(6.38)
equ639=Eq(-( MAkm1+2*MBkm1)*lkm1/(6*Ekm1*Ikm1)+θPBkm1, \
(2*MAk + MBk )*lk /(6*Ek *Ik )+θPAk) #;print(equ639)
equ640=equ639.subs(rep636).subs(rep637) #;print(equ640)
equ641=Eq((equ640.lhs-equ640.rhs).simplify(),0) #;print(equ641)
equ641=Eq(equ641.lhs-(θPBkm1-θPAk),-(θPBkm1-θPAk)) #;print(equ641)
equ641=Eq(-equ641.lhs.simplify(),-equ641.rhs.simplify()) #;print(equ641)
rep={Ek:E,Ik:I,Ekm1:E,Ikm1:I}
equ642=equ641.subs(rep).subs(rep636) #;print(equ642)
equ642=Eq(equ642.lhs*6*E*I,equ642.rhs*6*E*I) #;print(equ642)
equ642=Eq(equ642.lhs.expand(),equ642.rhs.simplify()) #;print(equ642)
print("#",reorder_expression_str(equ642.lhs, [Mkm1, Mk, Mkp1]),"=",equ642.rhs)
# Mkm1*lkm1 + 2*Mk*(lk + lkm1) + Mkp1*lk = 6*E*I*(-θPAk + θPBkm1)
等分布荷重を受ける4点で支持されたはり
・ver0.1
# ver0.1
from sympy import *
var('q,l,EI,M2,M3')
var('M1,M4')
var('RPAk,RPBkm1,M_1,M_2,M_3,M_4,lkm1,lk')
RA=RB =Rational(1, 2) *q*l #;print("#",RA1)
θA =Rational(1,24)/EI*q*l**3 #;print("#",RA1)
θB =-θA
sol_M2M3=solve([Eq(2*M2*(l+l)+ M3* l ,-Rational(1,2)*q*l**3),
Eq( M2* l +2*M3*(l+l),-Rational(1,2)*q*l**3)],
[M2,M3]
) # ;print(sol_M2M3)
M1=0;M2=sol_M2M3[M2];M3=sol_M2M3[M3];M4=0
equ_643=RPAk+RPBkm1+(M_1-M_2)/lkm1-(M_3-M_4)/lk
R1 =RA-(-1)*M2/l ;print("#",R1)
R2 =equ_643.subs({RPAk:RA,RPBkm1:RB, \
M_1:M1,M_2:M2,M_3:M2,M_4:M3, lkm1:l,lk:l}) ;print("#",R2)
R3 =equ_643.subs({RPAk:RA,RPBkm1:RB, \
M_1:M2,M_2:M2,M_3:M3,M_4:0 , lkm1:l,lk:l}) ;print("#",R3)
R4 =RB+M3/l ;print("#",R4)
# 2*l*q/5
# 11*l*q/10
# 11*l*q/10
# 2*l*q/5
いつもの? sympyの実行環境と 参考のおすすめです。
いつもと違うおすすめです。
Qiita内
・作業中:いろいろシリーズ(sympy)
文献