ポテンシャルエネルギーを考えれば フック則からたわみ角法の基本式を求めることができました。
今回は 数式処理ソフト maxima で たわみ角法の基本式の荷重項を算定します。
(16), (17)式は 集中曲げの せん断変形には対応できません。
つぎのプログラムを 300-11.bat で保存して実行すると
: たわみ角法の基本式の荷重項
@echo off
path C:\maxima-5.47.0\bin;%path%
ruby -x %~f0
pause
goto:eof
#!ruby
$BETA_FLG = 1 # 0=曲げ 1=曲げ+せん断
def CD_1()
f = open "| maxima --very-quiet", "w"
f.print <<~Maxima
assume(L > 0, a >= 0, L >= a)$
L: a+b$
PM: 0$
p1: -0$
Q1: C1 + integrate(p1, x)$
M1: C2 + integrate(Q1, x)$
p2: -0$
Q2: C5 + integrate(p2, x)$
M2: C6 + integrate(Q2, x)$
/* 単純支持ばりのせん断応力、曲げモーメント */
s: solve([
ev(M1, x = 0) = 0,
ev(Q1, x = a) - ev(Q2, x = a) = P, /* P は 上向きが正 */
ev(M1, x = a) - ev(M2, x = a) = -PM, /* PM は 右回りが正 */
ev(M2, x = L) = 0],
[C1, C2, C5, C6])$
[Q1, M1]: ev([Q1, M1], s)$
[Q2, M2]: ev([Q2, M2], s)$
if #{$BETA_FLG} = 0 then [
A1: integrate( (1 - x / L) ^ 2 / EI, x, 0, L),
A2: integrate( (1 - x / L) * x / L / EI, x, 0, L),
B1: A2,
B2: integrate( (x / L) ^ 2 / EI, x, 0, L),
A3: integrate(M1 * (1 - x / L) / EI, x, 0, a) + integrate(M2 * (1 - x / L) / EI, x, a, L),
B3: -integrate(M1 * x / L / EI, x, 0, a) - integrate(M2 * x / L / EI, x, a, L)]
else [
A1: integrate( (1 - x / L) ^ 2 / EI, x, 0, L) + integrate(κ / GA / L ^ 2, x, 0, L),
A2: integrate( (1 - x / L) * x / L / EI, x, 0, L) - integrate(κ / GA / L ^ 2, x, 0, L),
B1: A2,
B2: integrate( (x / L) ^ 2 / EI, x, 0, L) + integrate(κ / GA / L ^ 2, x, 0, L),
A3: integrate(M1 * (1 - x / L) / EI, x, 0, a) + integrate(M2 * (1 - x / L) / EI, x, a, L) +
integrate(κ * Q1 / GA / L, x, 0, a) + integrate(κ * Q2 / GA / L, x, a, L),
B3: -integrate(M1 * x / L / EI, x, 0, a) - integrate(M2 * x / L / EI, x, a, L) +
integrate(κ * Q1 / GA / L, x, 0, a) + integrate(κ * Q2 / GA / L, x, a, L)]$
C1: -(A3 * B2 + B3 * A2) / (A1 * B2 - A2 * B1)$
C2: -(A3 * B1 + B3 * A1) / (A1 * B2 - A2 * B1)$
print("c1 =", string(factor(ratsubst(__g__, κ * EI / GA / L ^ 2, factor(ev(C1, x = 0))))))$
print("c2 =", string(factor(ratsubst(__g__, κ * EI / GA / L ^ 2, factor(ev(C2, x = L))))))$
D1: -ev(Q1, x=0) + (C1 + C2) / L$
D2: -ev(Q2, x=L) - (C1 + C2) / L$
print("d1 =", string(factor(ratsubst(__g__, κ * EI / GA / L ^ 2, factor(D1)))))$
print("d2 =", string(factor(ratsubst(__g__, κ * EI / GA / L ^ 2, factor(D2)))))$
quit()$
Maxima
f.close
end
CD_1()
__END__
計算結果は
となります。
わかりづらいので 整理しました。
[ 集中荷重 ]
c1 = -P*a*b^2/L^2
c2 = P*a^2*b/L^2
d1 = -P*b^2*(b+3*a)/L^3
d2 = P*a*(2*b^2+a*b+a^2)/L^3
[ 集中荷重 曲げ+せん断 ]
c1 = -P*a*b*(b+6*__g__*L)/( (12*__g__+1)*L^2)
c2 = P*a*b*(a+6*__g__*L)/( (12*__g__+1)*L^2)
d1 = -P*b*(b^2+3*a*b+12*__g__*L^2)/( (12*__g__+1)*L^3)
d2 = P*a*(2*b^2+a*b+a^2+12*__g__*L^2)/( (12*__g__+1)*L^3)
ただし __g__ は κ * EI / GA / L ^ 2
数式処理ソフトによって (16), (17)式 からでも 荷重項が求められることはわかったのですが、弾性曲線式を解いたほうが わかりやすい気がします。
次回は 番外 荷重項のまとめ です。