Кирсанов М.Н. 
Решебник.Теоретическая механика.
 М.:ФИЗМАТЛИТ, 2002.
Иллюстрации и программы к книге

 15.1. Расчет фермы

 Программа 1

  restart: with(LinearAlgebra):

1. Ввод данных    
 Число узлов и стержней фермы.   Нагрузки (кН), угол наклона опорного стрежня
N:=7:  M:=2*N:  P:=30: Q:=15: F:=20:
alpha:=evalf(Pi/3):beta:=evalf(Pi/3):

    Длина опорных стержней на рисунке
  d:=1.:                

     Координаты узлов
  x:=<0|2|6|8|1|4|7|-d|0|8-cos(beta)*d>:      y:=<0|0|0|0|2|2|2|0|-d|-sin(beta)*d>:

     Номер узла начала и конца стержня-вектора
  Nbeg:=<1|2|3|1|2|2|3|3|4|5|6|1|1|4>:      Nend:=<2|3|4|5|5|6|6|7|7|6|7|8|9|10>:

   2. Рисунок фермы

Шрифт для номеров шарниров и стержней
Шрифт:=FONT(TIMES,BOLD,8):
with(plots):with(plottools):
for i to M do     R[i]:=PLOT(CURVES([[x[Nbeg[i]],y[Nbeg[i]]],[x[Nend[i]],y[Nend[i]]]])):
od:
for i to N+3 do
 Шарнир[i]:=PLOT(TEXT([x[i],y[i]+0.3],convert(i,symbol)),
                  Шрифт,COLOR(HUE,1)):
od:
for i to M do
       Стержень[i]:=PLOT(TEXT([(x[Nbeg[i]]+x[Nend[i]])/2,
                         (y[Nbeg[i]]+y[Nend[i]])/2+0.3],
                          convert(i,symbol)),
                  Шрифт,COLOR(HUE,0.3)):
od:
Параметры стрелки на рисунке
arw:=0.05,0.2,0.2,color=red:

     Проекции наклонной силы
  Fx:=F*cos(alpha):Fy:=-F*sin(alpha):
     Изображение нагрузок
  F1:=arrow([x[2],y[2]],evalm([Fx,Fy]*0.05),arw):
  Q1:=arrow([x[5],y[5]],evalm([-Q,0]*0.05),arw):
  P1:=arrow([x[3],y[3]],evalm([0,-P]*0.05),arw):
  
Изображение фермы
    display(F1,Q1,P1,seq(R[i],i=1..M),seq(Шарнир[i],i=1..N+3),
    seq(Стержень[i],i=1..M),
    scaling=constrained,axes=none);

[Maple Plot]

3. Вычисления

   Заполнение матрицы
  G[i,j]:=0:
    for i to M do
      Lx:=x[Nend[i]]-x[Nbeg[i]]:
      Ly:=y[Nend[i]]-y[Nbeg[i]]:
      L:=evalf(sqrt(Lx^2+Ly^2)):
      G[2*Nbeg[i]-1,i]:=Lx/L:G[2*Nbeg[i],i]:=Ly/L:
      if i<M-2 then G[2*Nend[i]-1,i]:=-Lx/L:G[2*Nend[i],i]:=-Ly/L:fi:
    od:

       Правая часть системы - вектор нагрузок
    
 B:=<0|0|Fx|Fy|0|-P|0|0|-Q|0|0|0|0|0>:

       Решение системы
      
S := LinearSolve(Matrix(M,G),-B):
printf(`%s\n`,`__________________________`);
printf(`%s\n`,`  n      S     n      S   `);
for i to M/2 do
   printf(`%3.0f%9.3f %3.0f%9.3f\n`,2*i-1,S[2*i-1],2*i,S[2*i]);
od;
4. Таблица результатов (кН)

__________________________

  n      S     n      S   

  1   20.446   2   29.486

  3   24.865   4  -27.102

  5   27.102   6   -9.786

  7    9.786   8   25.804

  9  -25.804  10   -9.240

 11  -23.080  12    8.325

 13  -24.240  14  -26.651