Программа 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.