パイソニスタの方へ
・??? 何かいい方法がありませんか。変な質問で申し訳ありません。
・私のver0.2の「symbol」の使い方を教えて下さい。(2023/12/22追加)
以下で問い合わせ中。
・私のver0.3の「doble integral」の使い方を教えて下さい。(2023/12/24追加)
あと2息です。
オリジナル
発展例題4.24 p102<「材料力学演習(20221021)一括(ver.3.3)」を勉強したい。
???タブレット等で、pdfを開く事ができないかも。???
latexで(勉強中)
(2023/12/26追加)
基本事項3の4関係式 P94より
\begin{array}{ll}
\dfrac{dQ}{dx}=q\\
\dfrac{dM}{dx}=Q\\
\end{array}
(2023/12/22追加)
・左端を揃えたいです。
・左端のスペースを削除したいです。
F = \left\{
\begin{array}{ll}
R_A & (0 \leq x \leq a)\\
R_A-q(x-a) & (a \leq x \leq l)
\end{array}
\right.
Fを積分
Mを微分
M = \left\{
\begin{array}{ll}
R_Ax & (0 \leq x \leq a)\\
R_Ax-1/2q(x-a)^2 & (a \leq x \leq l)
\end{array}
\right.
sympyで
ver0.3 重複積分法で
・「double integral」の使い方を教えて下さい。(2023/12/24追加)
# ver0.3 (2023/12/22追加)
# 発展例題4.24 p102
from sympy import *
from decimal import Decimal, ROUND_HALF_UP, ROUND_HALF_EVEN
var('l,q,a',real=True)
var('x' ,real=True)
var('u,v' ,real=True)
# var('RA' ,real=True)
RA = Symbol('RA')
def myDic (myStrKey,myValue):
return {sympify(myStrKey):myValue}
#
u0x = (u,0,x)
MAC = integrate(RA ,u0x) .simplify() ;print("# MAC =",MAC)
FAC = diff(MAC,x) .simplify() ;print("# FAC =",FAC)
#
uav = (u,a,v)
vax = (v,a,x)
MCB = (MAC-integrate(integrate(q,uav),vax)) .simplify() ;print("# MCB =",MCB)
FCB = diff(MCB,x) .simplify() ;print("# FCB =",FCB)
RA = solve(MCB.subs({x:l}),RA) [0] ;print("# RA =",RA );print()
#
rep = {l:1.0,a:0.4,q:1670}
rep|= myDic("RA" ,RA.subs(rep).simplify() ) ;print("# rep =",rep)
#
print("# RA =",Decimal(str(RA .subs(rep))).quantize(Decimal('0'), ROUND_HALF_UP))
print("# FAC =",Decimal(str(FAC.subs(rep))).quantize(Decimal('0'), ROUND_HALF_UP))
print("# FCB =", FCB.subs(rep) .simplify() )
print("# MAC =", MAC.subs(rep) .simplify() )
print("# MCB =", MCB.subs(rep) .simplify() )
# MAC = RA*x
# FAC = RA
# MCB = RA*x - a**2*q/2 + a*q*x - q*x**2/2
# FCB = RA + a*q - q*x
# RA = q*(a**2 + l*(-2*a + l))/(2*l)
# rep = {l: 1.0, a: 0.4, q: 1670, RA: 300.600000000000}
# RA = 301
# FAC = 301
# FCB = 968.6 - 1670*x
# MAC = 300.6*x
# MCB = -835*x**2 + 968.6*x - 133.6
ver0.2 うごきません。
・repに全部の値を、辞書へ。辞書から要素を取り出したい。
・変数RAを,varだと、RAでした。symbolで対応しました。
# ver0.2 (2023/12/22追加)
# 発展例題4.24 p102
from sympy import *
var('l,q,a' ,real=True)
var('MAC,x' ,real=True)
var('MCB' ,real=True)
var('FAC,FCB' ,real=True)
var('RB' ,real=True)
var('F0x' ,real=True)
# var('RA' ,real=True)
RA = Symbol('RA')
def myDic (myStrKey,myValue):
return {sympify(myStrKey):myValue}
MAC = RA*x ;print("# MAC=",MAC)
MCB = solve(-RA*x-Rational(1,2)*q*(x - a)**2+MCB,MCB)[0] ;print("# MCB=",MCB)
FAC = diff(MAC,x) ;print("# FAC=",FAC)
FCB = diff(MCB,x).simplify() ;print("# FCB=",FCB)
RA = solve(MCB.subs({x:l}),RA)[0] ;print("# RA =",RA )
RB = q*(l - a)-RA ;print("# RB =",RB )
print()
rep={l:1.0,a:0.4,q:1.67*1000} # ;print("# ",rep )
rep |= myDic("RA" ,RA .subs(rep)) # ;print("# ",rep )
rep |= myDic("FAC",FAC.subs(rep)) # ;print("# ",rep )
rep |= myDic("RB" ,RB .subs(rep)) # ;print("# ",rep )
rep |= myDic("FCB",FCB.subs(rep)) # ;print("# ",rep )
rep |= myDic("MAC",MAC.subs(rep)) # ;print("# ",rep )
rep |= myDic("MCB",MCB.subs(rep)) ;print("# ",rep,type(rep) )
print("# RA =",rep[RA] )
# print("# RB =",rep[RB] )
# print("# FAC=",rep[FAC])
# print("# FCB=",rep[FCB])
# print("# MAC=",rep[MAC])
# print("# MCB=",rep[MCB])
# MAC= RA*x
# MCB= RA*x + q*(a - x)**2/2
# FAC= RA
# FCB= RA - q*(a - x)
# RA = -q*(a - l)**2/(2*l)
# RB = q*(-a + l) + q*(a - l)**2/(2*l)
# {l: 1.0, a: 0.4, q: 1670.0, RA: -300.600000000000, FAC: -300.600000000000, RB: 1302.60000000000, FCB: 1670.0*x - 968.6, MAC: -300.6*x, MCB: -300.6*x + 835.0*(0.4 - x)**2} <class 'dict'>
File "/home/xxx/xxx.py", line 32, in
print("# RA =",rep[RA] )
KeyError: -q*(a - l)**2/(2*l)
ver0.1
# ver0.1 (2023/12/19作成)
# 発展例題4.24 p102
from sympy import *
var('l,q,a' ,real=True)
var('MAC,RA,x',real=True)
var('MCB' ,real=True)
var('FAC,FCB' ,real=True)
var('RB' ,real=True)
var('F0x' ,real=True)
def myEq_RepLR(eq):
return {eq.lhs:eq.rhs}
eqMAC=Eq(MAC,RA*x) ;print("#",eqMAC)
eqMCB=Eq(-RA*x+Rational(1,2)*q*(x-a)**2+MCB,0) ;print("#",eqMCB)
eqMCB=Eq(MCB,solve([eqMAC,eqMCB],MCB)[MCB]) ;print("#",eqMCB)
eqFAC=Eq(FAC,diff(eqMAC.rhs,x)) ;print("#",eqFAC)
eqFCB=Eq(FCB,diff(eqMCB.rhs,x)) ;print("#",eqFCB)
eqRA =Eq(RA,solve(Eq(eqMCB.rhs.subs({x:l}),0),RA)[0].factor() ) ;print("#",eqRA )
print()
rep={l:1.0,a:0.4,q:1.67*1000} ;print("#",rep )
eqRA =Eq(RA,eqRA.rhs.subs(rep)) ;print("#",eqRA)
eqRB =Eq(RB,solve(Eq(RB,q*(l-a)-RA),RB)[0]) ;print("#",eqRB)
eqRB =eqRB.subs(rep).subs(myEq_RepLR(eqRA)) ;print("#",eqRB)
eqFAC=eqFAC.subs(myEq_RepLR(eqRA)) ;print("#",eqFAC)
eqFCB=eqFCB.subs(rep).subs(myEq_RepLR(eqRA)) ;print("#",eqFCB)
eqMAC=eqMAC.subs(myEq_RepLR(eqRA)) ;print("#",eqMAC)
eqMCB=eqMCB.subs(rep).subs(myEq_RepLR(eqRA)) ;print("#",eqMCB)
print()
eqF0x=Eq(F0x,solve(Eq(eqFCB.rhs,0),x)[0]) ;print("#",eqF0x)
# Eq(MAC, RA*x)
# Eq(MCB - RA*x + q*(-a + x)**2/2, 0)
# Eq(MCB, RA*x - a**2*q/2 + a*q*x - q*x**2/2)
# Eq(FAC, RA)
# Eq(FCB, RA + a*q - q*x)
# Eq(RA, q*(a - l)**2/(2*l))
# {l: 1.0, a: 0.4, q: 1670.0}
# Eq(RA, 300.6)
# Eq(RB, -RA - a*q + l*q)
# Eq(RB, 701.4)
# Eq(FAC, 300.6)
# Eq(FCB, 968.6 - 1670.0*x)
# Eq(MAC, 300.6*x)
# Eq(MCB, -835.0*x**2 + 968.6*x - 133.6)
# Eq(F0x, 0.58)
いつもの? sympyの実行環境と 参考のおすすめです。
(テンプレート)
いつもと違うおすすめです。
>一部に等分布荷重を受ける単純支持はり
>JSME p89
>単純支持ばり 10)
>構造力学公式集 p138