Программа 41. Статически определимая рама
| > | restart: |
| > | read "C:\\epura.m"; |
| > | read "C:\\Risepura.m"; |
| > | read "C:\\Podpr1.m"; |
Ввод данных
| > | fd := fopen("C:/M13/MMiK.txt",READ):# Доступны файлы p64,p1.txt,...,p5.txt,p5a.txt,MMiK.txt,SoprM-M.txt,balka.txt,p41a.txt |
| > | x:=[parse(readline(fd))];# Координаты узлов |
| > | y:=[parse(readline(fd))]; |
| > | for i to 3 do# Нагрузки в узлах |
| > | P||i:=[parse(readline(fd))]; |
| > | od; |
| > | str:=[parse(readline(fd))]; #Стержни. Номера узлов |
| > | Vns:=[parse(readline(fd))]; #Внутр.шарниры |
| > | readline(fd); #строка-комментарий |
| > | OPOR:=[parse(readline(fd))];#Опоры |
| > | Qx:=[parse(readline(fd))];#Qx Стержни. Распределенная нагрузка |
| > | Qy:=[parse(readline(fd))];#Qy |
| > | EJ:=[parse(readline(fd))];#Относительная жесткость |
| > | Napravl,Nuzel:=parse(readline(fd));#Место прогиба |
| > | fclose(fd); |
| > | n:=nops(x): # Число узлов |
| > | m:=nops(str): # Число стержней |
| > | ks:=nops(Vns); # Число внутренних шарниров |
| > | Vns1:=Vector(n): # Вектор значений внутренних моментов в шарнирах Vns(=0) |
| > | ko:=nops(OPOR): # Число опор |
| > | printf("Число неизвестных %d + %d, уравнений %d + %d + %d",ko,6*m,ks,3*m,3*n); |
Число неизвестных 4 + 30, уравнений 1 + 15 + 18
Решение
| > | Lxy(): |
| > | RisRama(); |
| > | EpuraM(P1,P2,P3):#Моменты |
| > | Реакции=seq(Ro[i],i=1..ko); |
| > | RQ(Rx,Ry): #Поперечная сила |
| > | PrintRez(Q1,"Qp"); |
N Qp(1) Qp(2)
1 12.50 12.50
2 0.00 0.00
3 0.50 -7.50
4 -7.50 -11.50
5 0.00 -12.00
| > | QP:=Matrix(m,2,Q1): |
| > | RisEpur(QP,'QP',0); |
| > | MP:=Matrix(m,2,Rm): |
| > | RisEpur(MP,'MP',1); |
| > | PrintRez(Rm,"Mp"); |
| > | Qx0:=Qx: Qy0:=Qy: #Сохраняем данные(распр.нагр) |
N Mp(1) Mp(2)
1 0.00 25.00
2 -25.00 25.00
3 -7.00 0.00
4 0.00 -9.50
5 0.00 -18.00
| > | P1:=Vector(n):P2:=Vector(n):P3:=Vector(n): #Обнуляем нагрузки |
| > | Qx:=Vector(m):Qy:=Vector(m): #Обнуляем нагрузки |
| > | P||Napravl[Nuzel]:=1; #Прикладываем единичную нагрузку |
| > | EpuraM(P1,P2,P3): |
| > | m1:=Matrix(m,2,Rm): |
| > | RisEpur(m1,"m1",1); |
| > | PrintRez(m1,"m1"); |
N m1(1) m1(2)
1 0.00 0.50
2 -0.50 0.50
3 0.50 0.00
4 0.00 0.25
5 0.00 0.00
| > | Delta1:=evalf(add(int(EM(MP,1,u,k)*EM(m1,0,u,k)/EJ[k],u=0..L[k]),k=1..m)); |