Программа для определения моментов инерции сечений

Кирсанов М.Н. (МЭИ, 2010)

vuz.exponenta.ru

Вот сама программа: 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

Другой вариант разбиения фигуры на части