Программа 47.  Статически неопределимая рама

>    restart:

>    read "C:\\epura.m";

>    read "C:\\Risepura.m";

>    read "C:\\Podpr1.m";

Ввод данных

>    fd := fopen("C:/M13/p65.txt",READ):# Открываем файл (SoprM-G.txt,p65, p65a.txt, p65d.txt, StrMech.txt,SoprM-S.txt)

>    x:=[parse(readline(fd))]:# x

>    y:=[parse(readline(fd))]:# y

>    n:=nops(x):   #Число узлов

>    P1:=[parse(readline(fd))]:#Нагрузки в узлах

>    P2:=[parse(readline(fd))]:#

>    P3:=[parse(readline(fd))]:#

>    str:=[parse(readline(fd))]:#Стержни. Номера узлов

>    m:=nops(str):              # Число стержней

>    Vns:=[parse(readline(fd))]: #

>    U:=[parse(readline(fd))]:   # Номер элемента множества Vns

>    OPOR:=[parse(readline(fd))]:# Опоры

>    Qx:=[parse(readline(fd))]:# Распределенная нагрузка

>    Qy:=[parse(readline(fd))]:# Распределенная нагрузка

>    EJ:=[parse(readline(fd))]:;# Относительная жесткость

>    Nms:=[parse(readline(fd))]:# Неизвестные метода сил[Узел, направление (1-X, 2-Y, 3-M)]

>    fclose(fd):                # Закрываем файл

>    ks:=nops(Vns):             # Число внутренних шарниров

>    Vns1:=Vector(n):

>    nv:=nops(U):              # Число внутренних неизвестных

>    ko:=nops(OPOR):           # Число опор

>    printf("Число  неизвестных  %d + %d, уравнений %d + %d + %d",ko,6*m,ks,3*m,3*n);

        

>    no:=nops(Nms): # Число внешних неизвестных

>    nn:=no+nv:     # Общее число  неизвестных

  Решение

>    Lxy():

>    RisRama();

Число  неизвестных  3 + 18, уравнений 0 + 9 + 12

[Maple Plot]

>    EpuraM(P1,P2,P3):#Моменты в основной системе

>    Реакции=seq(Ro[i],i=1..ko);

`Реакции` = (-24, 6, 60)

>    RQ(Rx,Ry):       #Поперечная сила в осн.сист.

>    PrintRez(Q1,"Qp");

 N    Qp(1)     Qp(2) 

1   24.00    0.00  

2    6.00    6.00  

3    0.00    0.00  

>    QP:=Matrix(m,2,Q1):

>    RisEpur(QP,'QP',0);

[Maple Plot]

>     MP:=Matrix(m,2,Rm):

>     RisEpur(MP,'MP',1);

>     PrintRez(Rm,"Mp");

>     Qx0:=Qx:  Qy0:=Qy: #Сохраняем данные(распр.нагр)

[Maple Plot]

 N    Mp(1)     Mp(2) 

1   60.00  -24.00  

2   24.00    0.00  

3    0.00    0.00  

>    for j to no do

>      P1:=Vector(n):P2:=Vector(n):P3:=Vector(n): #Обнуляем нагрузки

>      Qx:=Vector(m):Qy:=Vector(m):   

>      z:=Nms[j,2]:

>      P||z[Nms[j,1]]:=1:           #Прикладываем единичную нагрузку

>      EpuraM(P1,P2,P3):

>      m||j:=Matrix(m,2,Rm):

>      RisEpur(m||j,cat("m",j),1);

>      RQ(Rx,Ry):

>      q||j:=Matrix(m,2,Q1):

>      RisEpur(q||j,cat("q",j),0);

>    od:

>    for j to nv do

>      P1,P2,P3:=Vector(n)$3: #Обнуляем нагрузки

>      Qx,Qy:=Vector(m)$2:

>      Vns1:=Vector(n):

>      Vns1[U[j]]:=1;    #Прикладываем единичную нагрузку

>      EpuraM(P1,P2,P3):j1:=j+no:

>      m||j1:=Matrix(m,2,Rm):

>      RisEpur(m||j1,cat("m",j1),1);

>      RQ(Rx,Ry):

>      q||j1:=Matrix(m,2,Q1):

>      RisEpur(q||j1,cat("q",j1),0);

>    od:

>    for j to nn do

>      PrintRez(m||j,cat("m",j));

>      PrintRez(q||j,cat("q",j));

>      Эпюраq||j;

>      Эпюраm||j;

>    od;

 N    m1(1)     m1(2) 

1    3.00    0.00  

2    0.00    0.00  

3    0.00    0.00  

 N    q1(1)     q1(2) 

1    1.00    1.00  

2    0.00    0.00  

3    0.00    0.00  

[Maple Plot]

[Maple Plot]

 N    m2(1)     m2(2) 

1   -6.00    6.00  

2   -6.00    2.00  

3   -2.00    0.00  

 N    q2(1)     q2(2) 

1    0.00    0.00  

2   -1.00   -1.00  

3   -1.00   -1.00  

[Maple Plot]

[Maple Plot]

>    Deltap:=Vector(nn): delta:=Matrix(nn):

>    for i to nn do

>     Deltap[i]:=evalf(add(int(EM(MP,1,u,k)*EM(m||i,0,u,k)/EJ[k],u=0..L[k]),k=1..m));

>     for j to nn do

>      delta[i,j]:=evalf(add(int(EM(m||i,0,u,k)*EM(m||j,0,u,k)/EJ[k],u=0..L[k]),k=1..m));

>     od:

>    od:

Решаем систему канонических уравнений

>    X:=-delta^(-1).Deltap:

>    delta,X,Deltap;#Коэфф.канонических уравнений, неизвестные

Matrix(%id = 156565504), Vector(%id = 150939980), Vector(%id = 156574892)

Моменты в статически неопр. раме

>    MR:=add(m||i*X[i],i=1..nn)+MP:

Поперечные силы в статически неопр. раме  

>    QR:=add(q||i*X[i],i=1..nn)+QP:

>    PrintRez(QR,`Q`);

>    Qx:=Qx0: Qy:=Qy0: #Восстанавливаем нагрузки

 N    Q(1)     Q(2) 

1   12.24  -11.76  

2    2.92    2.92  

3   -3.08   -3.08  

>    PrintRez(MR,`M`);

 N    M(1)     M(2) 

1    6.24   -5.52  

2    5.52    6.16  

3   -6.16    0.00  

>    RisEpur(MR,`M`,1);

[Maple Plot]

>    RisEpur(QR,`Q`,0);

[Maple Plot]