P46.mws

Программа 46. Задача 63

>    restart; #Маплет. Линии вл. в разр.балке

>    with(plots):

>    InfLin:=proc() local j,omega,k,n,n1,qf,d,f,eq,q,r,qv,qp,xo,N,N1,sr,i,

>    LV2,LV,GR,Vp,Vmax,Vmin,VvrMax,VvrMin,a,b,c,plt,mx,mn,so1,so2,Ev:

>    use Maplets[Tools] in

>     N1:=Get('TN1'::posint);# Опора, длЯ которой строим линию

>     xo:=Get('Txo'::list);  # Координаты опор

>     sr:=Get('Tsr'::list);  # Координаты шарниров

>     qp:=Get('Tqp'::algebraic): # Значение распределенных нагрузок, кН/м

>     qv:=Get('Tqv'::algebraic):

>     N:=Get('TN'::list);# Число опор на балку

>    end use:

>    n:=nops(N):      # Число балок

>    n1:=n+1:         # Число опор

>    d:=[0$n1]:       # Все смещениЯ = 0, кроме № N1

>    d[N1]:=1:        # Единичное смещение на опоре N1

>    f:=proc(x,i) a[i]*x+b[i] end:

>    for i to n-1 do  # Условие непрерывности на шарнирах

>     eq[i]:=f(sr[i+1],i)-f(sr[i+1],i+1):

>    od:

>    k:=0:

>    for i to n do

>     for j to N[i] do

>      k:=k+1:

>      eq[k+n-1]:=f(xo[k],i)=d[k];

>     od;

>    od;

>     r:=solve({seq(eq[i],i=1..2*n)},

>             {seq(op({a[i],b[i]}),i=1..n)}): assign(r);

>     LV:=piecewise(seq(op([sr[i]<X and X<sr[i+1],f(X,i)]),i=1..n)):

>     GR:=plot(LV,X=0..sr[n1],filled=true,color=green):

>     omega[]:=int(LV,X=0..sr[n1]);

>     LV2:=piecewise(seq(op([sr[i]<X and X<sr[i+1],abs(f(X,i))]),i=1..n)):

>     omega[mins]:=int((LV-LV2)/2,X=0..sr[n1]);

>     omega[plus]:=omega[]-omega[mins];  

>     Vp:=qp*omega[]:        # Усилие от постоЯнной нагрузки

>     VvrMin:=omega[mins]*qv:# Усилие от временной нагрузки

>     VvrMax:=omega[plus]*qv:

>     Vmax:=Vp+VvrMax;       # МаксимальнаЯ нагрузка

>     Vmin:=Vp+VvrMin;       # МинимальнаЯ нагрузка

>     Vmax,Vmin,GR;

>    end proc:#InfLin

>   

>    Xo:=[1,4,5,8,12,14]:

>    Xs:=[0,3,7,10,13,15]:

>    Tn:=[1,2,1,1,1]:

>    a1:='editable' = 'false',1..8:

>    with(Maplets[Elements]):

>    c[1]:=["[Xo]=",TextField['Txo'](14,'value'=Xo)]:

>    c[2]:=["[Xs]=",TextField['Tsr'](14,'value'=Xs)]:

>    c[3]:=["[N]=", TextField['TN'](14,'value'=Tn)]:

>    c[4]:=["N1=", TextField['TN1'](14,'value'=2)]:

>    c[5]:=["qp=", TextField['Tqp'](14,'value'=2)]:

>    c[6]:=["qv=", TextField['Tqv'](14,'value'=5)]:

>    plt:=Plotter['PL1']('height=190','width=320'):

>    mx:="max=",TextBox['Tmx'](a1):

>    mn:="min=",TextBox['Tmn'](a1):

>    bmx:=Button("max",Evaluate('Tmx' = "InfLin()[1]")):

>    bmn:=Button("min",Evaluate('Tmn' = "InfLin()[2]")):

>    so1:=SetOption('Tqv'=" "):

>    so2:=SetOption('Tqp'=" "):

>    bcl:=Button("Clear",Action(so1,so2)):

>    bsd:=Button("OK", Shutdown(['Tsr','Tmx','Tmn','PL1'])):

>    mplt:= Maplet(Window('title'="ЛИНИЯ ВЛИЯНИЯ В РАЗРЕЗНОЙ БАЛКЕ",[

>        "Сопротивление материалов",

>        [[seq(c[i],i=1..6)],plt],

>        [mx,mn],

>        [bmx,bmn,Button('width=90',"plot",Evaluate('PL1' = 'display(InfLin()[3])')),

>         bcl,bsd]])):

>         Maplets[Display](mplt):

Initializing Java runtime environment.