座標法と数式処理ソフト maxima で断面性能の計算式を求めるやり方を紹介します。
座標法でも 形状寸法を変数とすれば 計算式を 求めることができます。多角形に限られますが 積分をする必要はありません。
数式処理ソフトを利用すれば 多角形の頂点の座標を定義するだけで 断面積から主軸の角度まで算定することができます。いまのところ、円弧や放物線は 折れ線に置き換える必要があるのですが、今後の研究によって 合理的な手法が提案されてくると思われます。
多角形の断面性能の計算式は
となります。座標に数値を代入すれば 断面性能が算定できます。
ただし
座標 = [x1, y1], [x2, y2], [x3, y3], …, [xn, yn]
Ax = S, Ix = Jx, Iy = Jy, Ixy = Jxy
図心回りの2次モーメント
Ixc = Ix - Ax * gy ** 2
Iyc = Iy - Ax * gx ** 2
図心回りの相乗モーメント
Ixyc = Ixy - Ax * gx * gy
Xc軸からの主軸の角度 α
α = atan2(2 * Ixyc, Iyc - Ixc) / 2
Σ は i = 1, n-1
座標は閉鎖形の頂点でそれを結ぶ線が交差しないようにする
※参考文献
○材料力学本論 / 前澤・吉峯訳 / コロナ社 付録2 平面図形の諸元
○建造力学 / 谷口著 / 裳華房 第20章 断面の主軸
さて、今回は 円弧の補正について考えます。
ただし
sgn は数値を単位整数で返す。
(area 座標).a は座標から断面性能を求めて面積を返す。
例 1 下図で r = 1 とする
つぎのプログラムを 100-11-1.bat で保存して実行すると
/* rectangle + arc
@echo off & cls
path C:\maxima-5.47.0\bin;%path%
type %0 | maxima --very-quiet
pause
goto:eof
*/
Pt : matrix([0, 0], [1, 0], [0, 1])$
n : length(Pt)-1$
x : col(Pt, 1)$
y : col(Pt, 2)$
Ax : sum( (s[i] : x[i] * y[i+1] - x[i+1] * y[i]) / 2, i, 1, n)[1]$
r : 1$
a : (%pi / 2) / 2$
ac : r * r * (2*a - sin(2*a)) / 2$
print("area")$
print(" Ax =", float(Ax+ac))$
quit()$
計算結果は
となります。
例 2 下図で r = 1 とする
つぎのプログラムを 100-11-2.bat で保存して実行すると
/* rectangle + arc
@echo off & cls
path C:\maxima-5.47.0\bin;%path%
type %0 | maxima --very-quiet
pause
goto:eof
*/
Pt : matrix([0, 0], [1, 0], [0, 1])$
n : length(Pt)-1$
x : col(Pt, 1)$
y : col(Pt, 2)$
Ax : sum( (s[i] : x[i] * y[i+1] - x[i+1] * y[i]) / 2, i, 1, n)[1]$
r : 1$
a : (%pi * 3 / 2) / 2$
ac : r * r * (2*a - sin(2*a)) / 2$
print("area")$
print(" Ax =", float(Ax+ac))$
quit()$
計算結果は
となります。
参考までに ruby でライブラリーを作っておけば
: rectangle + arc
@echo off
set RUBYLIB=\jww\Lite\pro\ruby\lib
ruby -x %~f0
pause
goto:eof
#!ruby -Ku -rjw
pt = [[0, 0], [1, 0], [0, 0, 1, 0, 90, 1, 0], [0, 1]]
puts "area"
puts " Ax = %s" % pt.a
pt = [[0, 0], [1, 0], [1, 1, 1, -90, 180, 1, 0], [0, 1]]
puts "area"
puts " Ax = %s" % pt.a
__END__
のようにできます。
座標法で円弧をそのまま使うことはできませんが補正すればなんとかなることがわかりました。計算精度が必要なときは、円弧を細かく分割するよりも、弓形部分を補正したほうが経済的です。
次回は 一筆書き です。