パイソニスタの方へ
ver1.0について、def のネストをするつもりがありませんでした。どのようにするものですか?
・sympyのTrussで作図しました。縦横比が1:1でありません。(2025-06-10)
・作図はありません。(⊿⊿形)でイメージして下さい。
オリジナル
基本例題8.30 P287
http://zairikiweb.starfree.jp/zai_enshuh/zai_enshuh_ver.3.3.pdf#page=292
「材料力学演習(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
sympyで
ver0.1
# ver0.1
from sympy import *
var('P,l,AE')
var('NAB,NAC,NBD,NBC,NCD')
var('nAB,nAC,nBD,nBC,nCD')
rep ={NAB:-P,NAC:sqrt(2)*P,NBD:-sqrt(2)*P,NBC:-P,NCD:P}
repDV={nAB:-1,nAC:sqrt(2) ,nBD:-sqrt(2) ,nBC:-1,nCD:1}
repDH={nAB: 0,nAC:sqrt(2) ,nBD:0 ,nBC:-1,nCD:1}
print("#",(1/AE*(NAB*nAB*l+NAC*nAC*sqrt(2)*l+NBC*nBC*l+NBD*nBD*sqrt(2)*l+NCD*nCD*l).subs(rep).subs(repDV).simplify()))
print("#",(1/AE*(NAB*nAB*l+NAC*nAC*sqrt(2)*l+NBC*nBC*l+NBD*nBD*sqrt(2)*l+NCD*nCD*l).subs(rep).subs(repDH).simplify()))
# P*l*(3 + 4*sqrt(2))/AE
# 2*P*l*(1 + sqrt(2))/AE
sympyのTrussで
ver1.0
・Trussの 「property member_lengths」がありました。
# ver1.0
from sympy.physics.continuum_mechanics.truss import Truss
from sympy import *
var('P,Q,l,AE',positive=True)
def myTruss(l):
def myAdd_member(*args):
def make_triples(s):
return (s,s[0],s[1])
for s in args:
t.add_member(make_triples(s))
t = Truss()
t.add_node ( ('C',l*1,l),('D',l*2,l))
t.add_node (('A',0,0),('B',l*1,0 ))
myAdd_member ('AB','AC','BD','BC','CD')
t.apply_support(('A' ,'pinned'),('B','roller'))
t.apply_load (('D',P,270))
t.solve()
return t
t=myTruss(l)
# --------------------------------------------------------------------------------------------
# 垂直方向変位 δDV
print("#",sum({k:1/(2*AE)*v1**2*v2 \
for (k,v1),(_,v2) in zip(t.internal_forces.items(),t.member_lengths.items())} \
.values()).diff(P).simplify())
# 水平方向変位 δDH
t.apply_load(('D',Q,0))
t.solve()
print("#",sum({k:1/(2*AE)*v1**2*v2 \
for (k,v1),(_,v2) in zip(t.internal_forces.items(),t.member_lengths.items())} \
.values()).diff(Q).simplify().subs({Q:0}))
# 作図のため,l=1
myTruss(1).draw().show()
# --------------------------------------------------------------------------------------------
# P*l*(3 + 4*sqrt(2))/AE
# 2*P*l*(1 + sqrt(2))/AE
いつもの? sympyの実行環境と 参考のおすすめです。
いつもと違うおすすめです。
wikipedia
Qiita内
類題