Программа 8. Линии влияния
> | 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.