Программа для определения моментов инерции сечений
Кирсанов М.Н. (МЭИ, 2010)
Вот сама программа: MMinerc.rar Ее можно запускать в Maple 11(12 или 13).
Если в задаче полукруг или круг - возьмите 2 или 4 сектора
> | restart; |
> | with(plots):with(plottools): |
> | Clr[1]:=COLOR(RGB,0,0,1): i:=0: |
> | Прямоугольник:=proc(x,y,b,h,zn) global i,F,Jx,Jy,Jxy,X,Y: |
> | #x,y- координаты левого нижнего угла,b-ширина,h-высота, zn=1 добавленная фигура, zn=-1 вырезанная. |
> | i:=i+1: |
> | F[i]:=b*h*zn: X[i]:=b/2+x: Y[i]:=h/2+y: |
> | Jx[i]:=b*h^3/12*zn+F[i]*Y[i]^2: |
> | Jy[i]:=h*b^3/12*zn+F[i]*X[i]^2: |
> | Jxy[i]:=F[i]*X[i]*Y[i]: |
> | PLOT(translate(POLYGONS([[0,0],[0,h],[b,h],[b,0]],Clr[zn]),x,y)); |
> | end: |
> |
> | Треугольник:=proc(x,y,b,h,ux,uy,zn) global i,F,Jx,Jy,Jxy,X,Y: |
> | #x,y- координаты вершины прямого угла, b-ширина,h-высота, ux,uy: (1,1),(-1,1),(-1,-1),(1,-1)- 1,2,3,4 четверть, |
> | # zn=1 добавленная фигура, zn=-1 вырезанная. |
> | i:=i+1: |
> | F[i]:=b*h*zn/2: X[i]:=b/3*ux+x: Y[i]:=h/3*uy+y: |
> | Jx[i]:=b*h^3/36*zn+F[i]*Y[i]^2: |
> | Jy[i]:=h*b^3/36*zn+F[i]*X[i]^2: |
> | Jxy[i]:=-h^2*b^2/72*zn*ux*uy+F[i]*X[i]*Y[i]: |
> | PLOT(translate(POLYGONS([[0,0],[0,h*uy],[b*ux,0]],Clr[zn]),x,y)); |
> | end: |
> |
> | Сектор:=proc(x,y,R,ux,uy,zn) global i,F,Jx,Jy,Jxy,X,Y,cl: |
> | local a,n,J: |
> | #x,y- координаты центра,R-радиус, ux,uy: (1,1),(-1,1),(-1,-1),(1,-1)- 1,2,3,4 четверть, |
> | # zn=1 добавленная фигура, zn=-1 вырезанная. |
> | a[1,1]:=1:a[-1,1]:=2:a[-1,-1]:=3:a[1,-1]:=4: |
> | cl:=white:if zn=1 then cl:=blue:fi: |
> | n:=a[ux,uy]: |
> | i:=i+1: |
> | F[i]:=Pi*R^2/4*zn: X[i]:=4*R/3/Pi*ux+x: Y[i]:=4*R/3/Pi*uy+y: |
> | J:=R^4*(Pi/16-4/9/Pi): |
> | Jx[i]:=J*zn+F[i]*Y[i]^2: |
> | Jy[i]:=J*zn+F[i]*X[i]^2: |
> | Jxy[i]:=R^4*(1/8-4/9/Pi)*zn*ux*uy+F[i]*X[i]*Y[i]: |
> | PLOT(pieslice([x,y],R,Pi/2*(n-1)..Pi/2*n,color=cl)); |
> | end: |
Надо отредактировать только эти строки:: |
> | display(Прямоугольник(0,6,5,1,-1), # левый нижний угол в точке (0,6), размер 5х1, и он вырезан (последний аргумент -1) |
> | Сектор(0,4,2,1,1,-1), # Центр в точке (0,4), радиус 2, вырезан (-1) |
> | Треугольник(7,4,2,4,-1,-1,-1), # прямой угол в точке (7,4), гориз.катет=2, вертикальный 4, 3-я четверть, вырезан (-1) |
> | Треугольник(2,0,2,2,-1,1,-1), |
> | Прямоугольник(0,0,7,7,1)); # Большой прямоугольник. Он имеет положительную площадь. Его рекомендуется указывать последним в списке фигур. |
> |
> | F0:=evalf(add(F[k],k=1..i)); |
> | xc:=add(F[k]*X[k],k=1..i)/F0; |
> | yc:=evalf(add(F[k]*Y[k],k=1..i)/F0); |
> | #Моменты инерции осей x,y |
> | Jx0:=evalf(add(Jx[k],k=1..i)); |
> | Jy0:=evalf(add(Jy[k],k=1..i)); |
> | Jxy0:=evalf(add(Jxy[k],k=1..i)); |
> | #Моменты инерции относительно центральных осей |
> | Jxc:=evalf(Jx0-F0*yc^2); |
> | Jyc:=evalf(Jy0-F0*xc^2); |
> | Jxyc:=evalf(Jxy0-F0*yc*xc); |
> | S2:=sqrt((Jxc-Jyc)^2/4+Jxyc^2): S1:=(Jxc+Jyc)/2: |
> | Jmax:=S1+S2; Jmin:=S1-S2; |
F0 := 34.85840735
xc := 3.681560434
yc := 3.206312945
Jx0 := 480.5929248
Jy0 := 590.1917406
Jxy0 := 437.6666667
Jxc := 122.2330654
Jyc := 117.7248184
Jxyc := 26.1898390
Jmax := 146.2656066
Jmin := 93.69227723
Другой вариант разбиения фигуры на части