P49.mws

 ѕрограмма 49. «адачи 66, 67

>     restart:with(plottools):with(plots):

>     Archћодуль:=module()

>     export –ешение,ѕускArch:

>     –ешение:=proc() local    величина,шарниры,m0,qA,NA,нагр,вид,распрнагр,L,f,y,a,

>     F,b,q,l,n1,n2,n_1,m_1,q_1,c1,c2,mA2,qA2,NA2,X1,d11,D1p,

>     X,h,—трелка,Ra,Rb,cosf,sinf,qB,mB,mA,H,i,j,qBF,mBF,

>     јрка,ЁпюрQ,ЁпюрM,ЁпюрN,ЁпюрQ2,ЁпюрM2,ЁпюрN2,–ис:

>     use Maplets[Tools] in

>     a:=Get('Ta'::list); # координаты точек прилож. сил, м

>     F:=Get('TF'::list); # силы, кЌ

>     b:=Get('Tb'::list); # координата начала q, м

>     q:=Get('Tq'::list); # распр. нагрузка q, кЌ/м

>     l:=Get('Tl'::list): # длина распр. нагрузка q, м

>     h:=Get('Th'::float);# высота сеч, м

>     f:=Get('Tf'::float);# стрела подъема, м

>     L:=Get('TL'::float);# 0.5 пролета, м

>     n1:=nops(a): n2:=nops(q): # „исло F, q

>    Rb:=-(add(F[i]*a[i],i=1..n1)+add(q[i]*l[i]*(b[i]+l[i]/2),i=1..n2))/2/L: # ѕрав реакц

>    Ra:=-add(F[i],i=1..n1)-add(q[i]*l[i],i=1..n2)-Rb:                       # Ћев реакци

>    cosf:=x->subs(t=x,1/sqrt(1+diff(y(t),t)^2)):

>    sinf:=x->subs(t=x,diff(y(t),t))*cosf(x):

>    c1:=(h/f)^2/12; c2:=h^2/f/12;

>    m_1:=x-> y(x)/f:   #единичн эпюра m

>    q_1:=x-> sinf(x)/f:#единичн эпюра q

>    n_1:=x-> cosf(x)/f:#единичн эпюра n

>    y:=proc(x) f/L^2*(2*L-x)*x:end: # ‘орма оси арки

>    n1:=n1+1:

>    F:=[Ra,op(F)]:#ƒобавл реакц опоры в число сил

>    a:=[0,op(a)]: #коорд лев опоры

Ѕалочн поперечн сила

>    qBF:=x->add(piecewise(x>=a[i],F[i],x<=a[i],0),i=1..n1):

>    qB:=qBF+add(piecewise(x>=b[i] and x<=b[i]+l[i],q[i]*(x-b[i]),x<=b[i],0,x>=b[i]+l[i],q[i]*l[i]),i=1..n2):          

  Ѕалочный момент

>    mBF:=x->add(piecewise(x>=a[i],(x-a[i])*F[i],x<=a[i],0,0),i=1..n1):

>    mB:=mBF+add(piecewise(x>b[i] and x<b[i]+l[i],(x-b[i])^2/2*q[i],x>=b[i]+l[i],(x-b[i]-l[i]/2)*l[i]*q[i],0),i=1..n2):

>    —трелка:=width=0.05,head_length=0.4,head_width=0.2,color=red:# ѕараметры стрелки

>    распрнагр:=CURVES(seq([[b[i],f+0.5],[b[i]+l[i],f+0.5]],i=1..n2),THICKNESS(10)):

>    нагр:=arrow({seq([a[i],y(a[i])+1],i=2..n1)},{seq([0,-1],i=2..n1)},—трелка):

>    величина:=PLOT(seq(TEXT([a[i],y(a[i])+1],convert(abs(F[i]),symbol),ALIGNRIGHT),i=2..n1)):#

>    шарниры:=PLOT(POINTS([L,f],[0,0],[2*L,0],SYMBOL(CIRCLE)),COLOR(RGB,1,0,0)):

>    m0:=0: for j to n1 do if a[j]<L then m0:=m0+(L-a[j])*F[j]; fi; od:

>    for i  to n2 do if b[i]<L then

>       if b[i]+l[i]<L then m0:=m0+(L-b[i]-l[i]/2)*q[i]*l[i];

>       else m0:=m0+q[i]*(L-b[i])^2/2;

>    fi;

>    fi:

>    od:

>    H:=m0/f;# –аспор

>    qA:=x->qB(x)*cosf(x)-H*sinf(x):    # ѕоперечн сила в арке

>    NA:=x->-qB(x)*sinf(x)-H*cosf(x):   # ѕродольн сила в арке

>    mA:=x->mB(x)-H*y(x): # ћомент в 3-х шарнирной арке

>    вид:=color=[red,blue],thickness=[1,2],legend=["Arch","Beam"]:

>    D1p:=int(m_1(x)*mA(x)/cosf(x)+c2*NA(x),x=0..2.*L);

>    d11:=int(m_1(x)^2/cosf(x)+c1*cosf(x),x=0..2.*L);

>    X1:=-D1p/d11;

>    mA2:=x->m_1(x)*X1+mA(x):

>    qA2:=x->q_1(x)*X1+qA(x):

>    NA2:=x->n_1(x)*X1+NA(x):

>    Set (TRa=Ra): Set (TRb=Rb): Set (TX1=X1):Set(TD1p=D1p): Set(Td11=d11):

>    X:=x=0..2*L:

>    јрка:=display(plot(y(x),X,color=blue)):

>    ЁпюрM:=display(plot([mA(x),mB(x)],X,вид,title="Epure M3"));

>    ЁпюрQ:=display(plot([qA(x),qB(x)],X,вид,title="Epure Q3"));

>    ЁпюрN:=display(plot(NA(x),X,title="Epure N3"));

>    ЁпюрM2:=display(plot([mA2(x),mB(x)],X,вид,title="Epure M2"));

>    ЁпюрQ2:=display(plot([qA2(x),qB(x)],X,вид,title="Epure Q2"));

>    ЁпюрN2:=display(plot(NA2(x),X,title="Epure N2"));

>    –ис:=display(распрнагр,величина,шарниры,јрка,нагр);# јрка и силы

>    end use:

>    –ис,ЁпюрM,ЁпюрQ,ЁпюрN,ЁпюрM2,ЁпюрQ2,ЁпюрN2

>    end proc:

>    ѕускArch:=proc()

>    local  нопка,Ev,i,Txt,a,c,mplt,Ёкран;

>    use Maplets:-Elements in

>    Ёкран:=Plotter['PL1']('height=300'):

>    a[1]:=["[xP]=",TextField['Ta'](9,'value'=[4,10],'tooltip'="¬ведите координаты сил")]:

>    a[2]:=["[P]=", TextField['TF'](9,'value'=[-9,-6],'tooltip'="¬ведите  силы")]:

>    a[3]:=["[xq]=",TextField['Tb' ](9,'value'=[6],'tooltip'="¬ведите координаты левых концов q")]:

>    a[4]:=["[q]=", TextField['Tq'](9,'value'=[-2],'tooltip'="¬ведите распределенные силы q")]:

>    a[5]:=["Lq=",TextField['Tl' ](9,'value'=[6],'tooltip'="¬ведите длины участков q")]:

>    a[6]:=["h=", TextField['Th' ](9,'value'=0.6,'tooltip'="¬ведите высоту сечен")]:

>    a[7]:=["f=", TextField['Tf' ](9,'value'=4.0,'tooltip'="¬ведите высоту арки")]:

>    a[8]:=["L=", TextField['TL' ](9,'value'=6.0,'tooltip'="¬ведите 0.5 пролета арки")]:

>    a[9]:=["Ra",TextField['TRa'](9)]:

>    a[10]:=["Rb",TextField['TRb'](9)]:

>    a[11]:=["D1p",TextField['TD1p'](9)]:

>    a[12]:=["d11",TextField['Td11'](9)]:

>    a[13]:=["X1",TextField['TX1'](9)]:

>    Ev:=proc(n) Evaluate(PL1 = 'display(–ешение()[n])'):end;

>     нопка:="јрка","M3","Q3","N3","M2","Q2","N2":

>    for i to 7 do

>     c[i]:=Button( нопка[i],Ev(i)):

>    od:

>    mplt:= Maplet(Window('title'="јрка",

>           [ BoxRow(Ёкран,BoxColumn(seq(a[i],i=1..8)),[seq(c[i],i=1..7)]),[seq(a[i],i=9..13)]]        

>                        )   #Window

>                 ):#Maplet

>        Maplets:-Display(mplt):

>    end use;

>    end proc;

>    end module:

>    Archћодуль:-ѕускArch():

Initializing Java runtime environment.

>   

>