Программа 34. Задача 60. Расчет статически неопределимой стержневой системы
> | restart; |
> | read "C:\\Podpr1.m": |
> | n:=4:# Число опорных стержней |
> | with(LinearAlgebra): |
Координаты шарниров на пластине
> | xb:=<1,3,3,1>: yb:=<3,3,1,1>: |
Координаты опорных шарниров
> | x:=<0,4,2,1>: y:=<2,2,0,0>: |
Длины и орты стержней
> | for i to n do |
> | S[i]:=Vector([x[i]-xb[i],y[i]-yb[i],0]): |
> | L[i]:=VectorNorm(S[i],2); |
> | s1[i]:=s[i]*Normalize(S[i],Euclidean); |
> | r[i]:=Vector([xb[i],yb[i],0]): |
> | od: |
Координаты точек приложения сил
> | h:=1:# плечо пары (для рисунка) |
> | r[n+1]:=Vector([2,2,0]): |
> | r[n+2]:=Vector([2+h/2,2,0]): |
> | r[n+3]:=Vector([2-h/2,2,0]): |
Нагрузки
> | m0:=10:# Момент |
> | s1[n+1]:=Vector([0,-5,0]): |
> | s1[n+2]:=Vector([0,m0/h,0]): |
> | s1[n+3]:=Vector([0,-m0/h,0]): |
> | Моменты:=add(CrossProduct(r[i],s1[i]),i=1..n+1): |
> | ОртX:=Vector([1,0,0]): ОртY:=Vector([0,1,0]): |
> | eq[1]:=add(DotProduct(ОртX,s1[i]),i=1..n+1); |
> | eq[2]:=add(DotProduct(ОртY,s1[i]),i=1..n+1); |
> | eq[3]:=Моменты[3]+m0; |
> | assume(vx,real,vy,real,w,real);interface(showassumed=0): |
> | V[1]:=Vector([vx,vy,0]): |
> | omega:=Vector([0,0,w]): |
> | for i from 2 to n do |
> | V[i]:=V[1]+CrossProduct(omega,r[i]-r[1]): |
> | od; |
> | for i to n do |
> | Eq[i]:=DL[i]-simplify(DotProduct(V[i],s1[i])/s[i]); |
> | od; |
> | z:=solve({seq(Eq[k],k=1..4)},{vx,vy,w,DL[1]}): |
> | eq[n]:=DL[1]-subs(z,DL[1]); |
> | for i to n do DL[i]:=s[i]*L[i]/(E*F);od; |
> | eq[n]; |
> | evalf(solve({seq(eq[i],i=1..n)},{seq(s[i],i=1..n)})); |
Warning, solve may be ignoring assumptions on the input variables.
РИСУНОК
> | with(plots): with(plottools): |
Стержни
> | for i to n do |
> | R[i]:=PLOT(CURVES([[xb[i],yb[i]],[x[i],y[i]]])): |
> | od: |
Параметры стрелки (толщина,толщина наконечника,относит.длина наконечника)
> | Параметры:=0.1,0.5,0.2,color=red: |
> | Нагрузка:=PLOT(seq(arrow([r[n+i][1],r[n+i][2]],s1[n+i]/6,Параметры),i=1..3)): |
> | Пластина:=PLOT(POLYGONS([seq([xb[j],yb[j]],j=1..4)],COLOR(HUE,0.5))): |
> | display(seq(Опора(i,0.1),i=1..n),Нагрузка,Пластина,seq(R[i],i=1..n), scaling=constrained,axes=none); |