真的有必要考试考求惯性矩吗?

Python

引言

我一直认为没有必要在考试中求截面矩和质心一类玩意(某校有一门课好像主要就在考求L形啊,I形的截面矩,我就不点名了)。因为现在的电脑(其实手机也可以)太容易求出这些几何性质的量了,而且实际上,这个求惯性矩的代码只有几行长,可以参见今天下午的另外一个文章里的代码。况且,ANSYS和AutoCAD都内置了相关函数。有人可能会说,那几个软件里只能求数值解,我要说其实就算要求解析解也不困难,这里就做个演示。

from sympy import Polygon, Point, var, init_printing, simplify
import sympy
init_printing()
var('b,h,t')
from second_moments import second_moments

矩形截面:

假设宽为b,高为h。

p = map(Point,((0,0),(b,0),(b,h),(0,h)))
poly = Polygon(*p)
poly.area
poly.centroid
Ix, Iy, Ixy = second_moments(poly)
Ix, Iy, Ixy

L形截面

假设厚度都是t,宽为b,高为h

p = map(Point,((0,0),(b,0),(b,t),(t,t),(t,h),(0,h)))
poly = Polygon(*p)
poly.area
simplify(poly.centroid)
Ix, Iy, Ixy = simplify(second_moments(poly))
Ix, Iy, Ixy

你实际上还可以得到$t$是小量时候的二阶近似

simplify(sympy.series(Ix,t,n=2).removeO())
simplify(sympy.series(Iy,t,n=2).removeO())
simplify(sympy.series(Ixy,t,n=2).removeO())

六边形:

外接圆半径为R的吧!

var('R')
p = [(sympy.cos(i)*R,sympy.sin(i)*R) for i in arange(6)/sympy.S.One/3*sympy.pi]
poly = Polygon(*p)
p
poly.area
poly.centroid
second_moments(poly)
亲,给点评论吧!