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