Введение

В этом ИДЗ мы проведём полный расчёт балочки на двух опорах (рис.1) под действием произвольной системы изгибающих моментов, сосредоточенных сил и равномерно распределённых нагрузок, расположенных в вертикальной плоскости.

Данное пособие позволит вам упростить выполнение этого ИДЗ. Как и любой помощник, оно не избавляет вас от необходимости думать. Используя это пособие, вы получите техническую помощь, избавитесь от досадных ошибок вычислений, но понимать существо проблемы вы всё равно должны. Но не пугайтесь: если вы смогли найти эту страницу в Internet, то разобраться в выполнении этого задания сможете наверняка.

Выберем систему координат так, как показано на рис.2.

Начало координат O поместим на левом краю, ось Oz направим вдоль оси балки, а оси Ox и Oy − вдоль главных центральных осей инерции. Все силовые факторы считаем действующими в плоскости yOz, как показано на рис.2.

Будем использовать правило знаков плюс-плюс-плюс-плюс:

В соответствии с [1] выберем положительное направление прогиба w(z) вверх, в сторону положительного направления оси Oy (рис.3).

Тогда положительные значения углов поворота θ(z) будут соответствовать возрастанию прогиба w(z), а отрицательные − убыванию (рис.4).

Изгибающий момент − это вторая производная от прогиба (с точностью до множителя) и первая производная от угла поворота θ(z) (опять-таки с точностью до множителя); поэтому положительное значение момента M(z) соответствует увеличению угла поворота θ(z), т.е. изгибу балочки выпуклостью вниз, а отрицательный M(z) − изгибу выпуклостью вверх (рис.5).

При построении эпюр мы будем разрезать балку в данном сечении z, отбрасывать левую часть и заменять её эквивалентной системой сил и моментов. Положительное значение M(z) (выпуклостью вниз) при этом даст момент, направленный по часовой стрелке (рис.6).

Поэтому в исходных данных сосредоточенные моменты будем задавать положительными, если они направлены по часовой стрелке.

Теперь рассмотрим правило знаков для перерезывающих сил. В соответствии с (3) положительной будем считать такую силу Q(z), которая соответствует возрастанию изгибающего момента M(z) при увеличении z. Наглядно представить себе увеличение вогнутости трудно, поэтому применим другое правило для определения знака Q(z). Заменим отрезанную левую часть такой силой, которая соответствует увеличению M(z) (рис.7). Т.к. момент равен произведению силы на плечо, то положительное значение сосредоточенной силы соответствует направлению её вверх. Такая сила стремится повернуть элемент балки по часовой стрелке.

И, наконец, выведем правило знаков для распределённой нагрузки q(z). Положительная q(z) соответствует возрастанию перерезывающей силы Q(z). На рис.8 показано положительное направление q(z): вверх. Именно такое направление q(z) соответствует возрастанию Q(z).

Итак, подытожим всё вышесказанное. При задании исходных данных будем считать:

При построении эпюр будем руководствоваться формулами (1-4). Считаем:

Мы будем выполнять это ИДЗ с помощью системы инженерных и научных расчётов MATLAB. Запустите свой MATLAB. Из любой области ввода (она отмечена вот таким зелёным шрифтом скопируйте содержимое и вставьте его в командное окно или редактор-отладчик MATLAB. Теперь запускайте на счёт. Результаты можно сравнить с содержимым области вывода (вот такой синий шрифт).

Ввод исходных данных

В данном методическом пособии можно использовать такие нагрузки:

Если в вашем вузе преподаватели задают студентам другие виды нагружения (распределённые моменты, линейную нагрузку и т.п.) − напишите мне, и мы вместе доработаем это пособие.

Исходными данными для выполнения этого ИДЗ являются длина балочки L, места расположения опор a и b и нагрузка на неё: значения M, F, q и точки (интервалы) их приложения.

Рассмотрим пример. Пусть мы имеем балочку длиной 10 м, нагруженную системой моментов, распределённых и сосредоточенных нагрузок и показанную на рис.9.

Заполним исходные данные. Длину балочки задаём в переменной L (в метрах). Места расположения опор задаём в массиве Op размером 1×2 (также в метрах).

Сосредоточенные моменты задаём в двумерном массиве M размером 2× количество моментов. Каждая строка этого массива соответствует одному моменту: 1-е число − координата приложения в метрах, 2-е − величина момента в кНм. Если моментов нет, задаём пустой массив: M=[]. Не забывайте про знаки: положительные моменты направлены по часовой стрелке.

Точно так же задаём сосредоточенные силы: в двумерном массиве F размером 2× количество сосредоточенных сил. 1-е число каждой строки − координата приложения силы в метрах, 2-е − величина нагрузки в кН. Если сосредоточенных сил нет, задаём пустой массив: F=[]. Положительные силы направлены вверх.

Для распределённой нагрузки нужно задать и начало, и конец её приложения. Поэтому распределённые нагрузки задаём в двумерном массиве q размером 3× количество распределённых нагрузок. 1-е число каждой строки − это координата начала приложения нагрузки в метрах, 2-е − координата конца приложения нагрузки в метрах; и 3-е − величина распределённой нагрузки в кН/м (положительная − вверх). Если распределённых нагрузок нет, задаём пустой массив: q=[].

Введём эти данные и напечатаем их.

clear all
L=10; % длина, м
Op=[2 7]; % места расположения опор, м
M=[[0,-10];[6,15]]; % изгибающие моменты, м, кНм
F=[[4,20];[6,-30]]; % сосредоточенные силы, м, кН
q=[[0,5,-20];[8,10,15]]; % распределённая нагрузка, м, кН/м
fprintf('Длина балочки L=%d м\n',L)
fprintf('Положение опор: a=%d м; b=%d м\n',Op)
if ~isempty(M),
  disp('Изгибающие моменты')
  disp(' k      zk         Mk')
  fprintf('%2.0f    %5.2f     %6.2f\n',[(1:size(M,1));M'])
end
if ~isempty(F),
  disp('Сосредоточенные силы')
  disp(' k      zk         Fk')
  fprintf('%2.0f    %5.2f     %6.2f\n',[(1:size(F,1));F'])
end
if ~isempty(q),
  disp('Распределённая нагрузка')
  disp([' k      zk1      ' ...
    'zk2        qk'])
  fprintf('%2.0f    %5.2f    %5.2f     %6.2f\n',[(1:size(q,1));q'])
end
Длина балочки L=10 м
Положение опор: a=2 м; b=7 м
Изгибающие моменты
 k      zk         Mk
 1     0.00     -10.00
 2     6.00      15.00
Сосредоточенные силы
 k      zk         Fk
 1     4.00      20.00
 2     6.00     -30.00
Распределённая нагрузка
 k      zk1      zk2        qk
 1     0.00     5.00     -20.00
 2     8.00    10.00      15.00

Теперь нарисуем эскиз балочки. Выбираем подходящие коэффициенты масштаба. Рисуем саму балочку, шарнирные опоры, и все приложенные к балочке нагрузки. Для рисования стрелок удобнее всего использовать готовую функцию arrow, которую можно свободно переписать на сайте компании Mathworks или здесь (zip-архив, 17kb). Перепишите её и распакуйте в какой-либо каталог, доступный вашей системе MATLAB. Теперь запускайте на счёт эту область ввода.

s=1; % max размер по вертикали
if ~isempty(M),
  s=max([s;abs(M(:,2))]);
end
if ~isempty(F),
  s=max([s;abs(F(:,2))]);
end
if ~isempty(q),
  s=max([s;abs(q(:,3))]);
end
s002=0.02*s; % масштаб по вертикали
L002=0.02*L; % масштаб по горизонтали
figure
plot([0,L,L,0],[-s002,-s002,s002,s002],'k') % балочка
xlim([-L002,L+L002]) % пределы по осям
ylim([-1.2*s,1.2*s])
hold on
plot(Op(1),-2*s002,'ok') % левая опора
plot([Op(1) Op(1)-L002 Op(1)+L002 Op(1)],...
  [-2*s002 -6*s002 -6*s002 -2*s002],'k')
plot([Op(1)-1.5*L002 Op(1)+1.5*L002],...
  [-6*s002 -6*s002],'k')
text(Op(1),5*s002,'\itA')
plot(Op(2),-2*s002,'ok') % правая опора
plot([Op(2) Op(2)],[-2*s002 -6*s002],'k')
plot(Op(2),-6*s002,'ok')
plot([Op(2)-L002 Op(2)+L002],...
  [-6*s002 -6*s002],'k')
text(Op(2),5*s002,'\itB')
for k=1:size(M,1), % изгибающие моменты
  x=M(k,1);
  v=M(k,2);
  plot([x-0.1*L,x,x,x+0.1*L],[-v,-v,v,v],'k');
  arrow([x-0.05*L,-v],[x-0.1*L,-v]);
  arrow([x+0.05*L,v],[x+0.1*L,v]);
  text(x-L002,abs(v)+0.1*s,['\itM_{' num2str(k) '}'])
end
for k=1:size(F,1), % поперечные силы
  x=F(k,1);
  v=F(k,2);
  plot([x,x],[-v,0],'k');
  arrow([x,-0.05*s*sign(v)],[x,0]);
  text(x-L002,-(abs(v)+0.1*s)*sign(v),['\itF_{' num2str(k) '}'])
end
for k=1:size(q,1), % распределённые нагрузки
  x1=q(k,1);
  x2=q(k,2);
  v=q(k,3);
  plot([x1,x1,x2,x2],[0,-v,-v,0],'k');
  arrow([x1,-0.05*s*sign(v)],[x1,0]);
  arrow([x2,-0.05*s*sign(v)],[x2,0]);
  text((x1+x2)/2,-(abs(v)+0.1*s)*sign(v),['\itq_{' num2str(k) '}'])
end
hold off
set(get(gcf,'CurrentAxes'),...
  'FontName','Times New Roman Cyr','FontSize',12)
title('\bfЭскиз балочки')
xlabel('\itz\rm, м')
ylabel('\itM\rm, кНм, \itF\rm, кН, \itq\rm, кН/м')

Проверьте, правильно ли вы задали исходные данные. Если да, то идём дальше.

Нахождение реакций опор

Наша балочка является статически определимой: неизвестные реакции опор могут быть найдены из уравнений статики. Всего таких уравнений в плоском случае 3, но одно из них (сумма проекций всех сил на ось Oz равна нулю) обращается в тождество. Остаётся 2 уравнения: сумма проекций всех сил на ось Oy равна нулю и сумма моментов всех сил относительно какой-либо точки равна нулю:

Из этих уравнений можно найти неизвестные реакции в опорах Ra и Rb (рис.10).

Нам здесь удобно считать сумму моментов всех сил относительно точек A и B, а сумму проекций всех сил на ось Oy использовать в качестве проверки.

Составляем уравнение (6) для моментов относительно точки A. В него войдёт только одна неизвестная реакция опоры − Rb. Решив это уравнение, найдём Rb. Обратите внимание: здесь и дальше мы не только решаем уравнение (или, как далее, строим график), но и записываем его в виде текстовой строки (даже двух строк: до подстановки чисел и после). Возможно, такой подход поможет вам лучше усвоить материал.

seq1='Rb*(a-b)'; % строка для 1-го уравнения
seq2=['Rb*(' num2str(Op(1)) '-' num2str(Op(2)) ')'];
eq1=0;
if ~isempty(M)
  for k=1:size(M,1), % изгибающие моменты
    seq1=[seq1 '+M' num2str(k)];
    seq2=[seq2 sprintf('%+d',M(k,2))];
  end
  eq1=eq1+sum(M(:,2));
end
if ~isempty(F)
  for k=1:size(F,1), % поперечные силы
    seq1=[seq1 '+F' num2str(k) '*(a-' num2str(F(k,1)) ')'];
    seq2=[seq2 sprintf('%+d',F(k,2)) '*(' ...
      num2str(Op(1)) '-' num2str(F(k,1)) ')'];
  end
  eq1=eq1+sum(F(:,2).*(Op(1)-F(:,1)));
end
if ~isempty(q)
  for k=1:size(q,1), % распределённые нагрузки
    seq1=[seq1 '+q' num2str(k) '*(a-' ...
      num2str(q(k,1)) ')^2/2-q' num2str(k) ...
      '*(a-' num2str(q(k,2)) ')^2/2'];
    seq2=[seq2 sprintf('%+d',q(k,3)) '*(' ...
      num2str(Op(1)) '-' num2str(q(k,1)) ')^2/2' ...
      sprintf('%+d',-q(k,3)) '*(' ...
      num2str(Op(1)) '-' num2str(q(k,2)) ')^2/2'];
  end
  eq1=eq1+sum(q(:,3).*(Op(1)-q(:,1)).^2/2)-...
    sum(q(:,3).*(Op(1)-q(:,2)).^2/2);
end
disp('1-е уравнение: сумма моментов относительно точки A равна 0:')
fprintf('%s=0;\n%s=0;\n%d*Rb%+d=0;\n',...
  seq1,seq2,Op(1)-Op(2),eq1)
Rb=-eq1/(Op(1)-Op(2));
fprintf('Решаем его: Rb=%d кН.\n',Rb)
1-е уравнение: сумма моментов относительно точки A равна 0:
Rb*(a-b)+M1+M2+F1*(a-4)+F2*(a-6)+q1*(a-0)^2/2-q1*(a-5)^2/2+q2*(a-8)^2/2-q2*(a-10)^2/2=0;
Rb*(2-7)-10+15+20*(2-4)-30*(2-6)-20*(2-0)^2/2+20*(2-5)^2/2+15*(2-8)^2/2-15*(2-10)^2/2=0;
-5*Rb-75=0;
Решаем его: Rb=-15 кН.

Теперь составляем уравнение вида (6) для моментов относительно точки B. В него войдёт только одна неизвестная реакция опоры − Ra. Решив его, находим Ra.

seq1='Ra*(b-a)'; % строка для 2-го уравнения
seq2=['Ra*(' num2str(Op(2)) '-' num2str(Op(1)) ')'];
eq2=0;
if ~isempty(M)
  for k=1:size(M,1), % изгибающие моменты
    seq1=[seq1 '+M' num2str(k)];
    seq2=[seq2 sprintf('%+d',M(k,2))];
  end
  eq2=eq2+sum(M(:,2));
end
if ~isempty(F)
  for k=1:size(F,1), % поперечные силы
    seq1=[seq1 '+F' num2str(k) '*(b-' num2str(F(k,1)) ')'];
    seq2=[seq2 sprintf('%+d',F(k,2)) '*(' ...
      num2str(Op(2)) '-' num2str(F(k,1)) ')'];
  end
  eq2=eq2+sum(F(:,2).*(Op(2)-F(:,1)));
end
if ~isempty(q)
  for k=1:size(q,1), % распределённые нагрузки
    seq1=[seq1 '+q' num2str(k) '*(b-' ...
      num2str(q(k,1)) ')^2/2-q' num2str(k) ...
      '*(b-' num2str(q(k,2)) ')^2/2'];
    seq2=[seq2 sprintf('%+d',q(k,3)) '*(' ...
      num2str(Op(2)) '-' num2str(q(k,1)) ')^2/2' ...
      sprintf('%+d',-q(k,3)) '*(' ...
      num2str(Op(2)) '-' num2str(q(k,2)) ')^2/2'];
  end
  eq2=eq2+sum(q(:,3).*(Op(2)-q(:,1)).^2/2)-...
    sum(q(:,3).*(Op(2)-q(:,2)).^2/2);
end
disp('2-е уравнение: сумма моментов относительно точки B равна 0:')
fprintf('%s=0;\n%s=0;\n%d*Ra%+d=0;\n',...
  seq1,seq2,Op(2)-Op(1),eq2)
Ra=-eq2/(Op(2)-Op(1));
fprintf('Решаем его: Ra=%d кН.\n',Ra)
2-е уравнение: сумма моментов относительно точки B равна 0:
Ra*(b-a)+M1+M2+F1*(b-4)+F2*(b-6)+q1*(b-0)^2/2-q1*(b-5)^2/2+q2*(b-8)^2/2-q2*(b-10)^2/2=0;
Ra*(7-2)-10+15+20*(7-4)-30*(7-6)-20*(7-0)^2/2+20*(7-5)^2/2+15*(7-8)^2/2-15*(7-10)^2/2=0;
5*Ra-475=0;
Решаем его: Ra=95 кН.

Проверим полученные результаты по уравнению (5): составим сумму проекций всех сил на ось Oy: она должна оказаться равной нулю.

seq1='Ra+Rb'; % уравнение для проверки
seq2=[num2str(Ra) sprintf('%+d',Rb)];
eq3=Ra+Rb;
if ~isempty(F)
  for k=1:size(F,1), % поперечные силы
    seq1=[seq1 '+F' num2str(k)];
    seq2=[seq2 sprintf('%+d',F(k,2))];
  end
  eq3=eq3+sum(F(:,2));
end
if ~isempty(q)
  for k=1:size(q,1), % распределённые нагрузки
    seq1=[seq1 '+q' num2str(k) '*(' ...
      num2str(q(k,2)) '-' num2str(q(k,1)) ')'];
    seq2=[seq2 sprintf('%+d',q(k,3)) '*(' ...
      num2str(q(k,2)) '-' num2str(q(k,1)) ')'];
  end
  eq3=eq3+sum(q(:,3).*(q(:,2)-q(:,1)));
end
disp('Проверка: сумма проекций всех сил на ось Oy равна 0:')
fprintf('%s=\n%s=%d.\n',seq1,seq2,eq3)
Проверка: сумма проекций всех сил на ось Oy равна 0:
Ra+Rb+F1+F2+q1*(5-0)+q2*(10-8)=
95-15+20-30-20*(5-0)+15*(10-8)=0.

Мы должны олучить правильный результат: сумма проекций всех сил на ось Oy равна нулю.

Построение эпюр поперечных сил и изгибающих моментов

Переходим к построению эпюр. На каждом участке эпюры M(z) и Q(z) имеют своё аналитическое выражение. Найдём общее число участков и точки переключения аналитических выражений. Этими точками будут начало и конец балочки (т.е. 0 и L), места расположения опор a и b, и все точки приложения всех нагрузок (для q берём и начало, и конец приложения нагрузки).

zk=[0;L;Op']; % точки переключения
if ~isempty(M)
  zk=unique([zk;M(:,1)]);
end
if ~isempty(F)
  zk=unique([zk;F(:,1)]);
end
if ~isempty(q)
  zk=unique([zk;q(:,1);q(:,2)]);
end
nk=length(zk)-1; % число интервалов
fprintf('Число интервалов переключения nk=%d\n',nk)
disp('Точки переключения, м')
fprintf('%d   ',zk)
fprintf('\n')
Число интервалов переключения nk=7
Точки переключения, м
0   2   4   5   6   7   8   10   

Строим эпюру перерезывающих сил. Чтобы получить Q(z) в каждом сечении z, суммируем все силы слева от него, в т.ч. реакции опор:

Здесь в первой сумме zk − точка приложения сосредоточенной силы Fk; во 2-й и 3-й суммах z1k и z2k − начало и конец приложения распределённой нагрузки qk. В первой сумме учитываются все сосредоточенные силы, в т.ч. и реакции опор Ra и Rb, если, конечно, они расположены слева от данного участка. Записываем аналитические выражения для Q(z) на каждом участке и строим график.

disp('Перерезывающие силы на участках:')
z=[];
Qz=[];
for k=1:nk,
  Qz1='';
  Qz2='';
  z0=linspace(zk(k),zk(k+1)); % аргументы для графика
  Qz0=zeros(size(z0)); % функции для графика
  if Op(1)<zk(k+1), % левая опора - слева от участка
    Qz1=[Qz1 'Ra'];
    Qz2=[Qz2 num2str(Ra)];
    Qz0=Qz0+Ra;
  end
  if Op(2)<zk(k+1), % правая опора - слева от участка
    Qz1=[Qz1 '+Rb'];
    Qz2=[Qz2 sprintf('%+d',Rb)];
    Qz0=Qz0+Rb;
  end
  if ~isempty(F),
    nF=find(F(:,1)<zk(k+1)); % сосредоточенные силы слева
    for k1=1:length(nF),
      Qz1=[Qz1 '+F' num2str(nF(k1))];
      Qz2=[Qz2 sprintf('%+d',F(nF(k1),2))];
      Qz0=Qz0+F(nF(k1),2);
    end
  end
  if ~isempty(q),
    nq=find(q(:,1)<zk(k+1)); % начало q слева
    for k1=1:length(nq),
      Qz1=[Qz1 '+q' num2str(nq(k1)) ...
        '*(z-' num2str(q(nq(k1),1)) ')'];
      Qz2=[Qz2 sprintf('%+d',q(nq(k1),3)) ...
        '*(z-' num2str(q(nq(k1),1)) ')'];
      Qz0=Qz0+q(nq(k1),3)*(z0-q(nq(k1),1));
    end
    nq=find(q(:,2)<zk(k+1)); % конец q слева
    for k1=1:length(nq),
      Qz1=[Qz1 '-q' num2str(nq(k1)) ...
        '*(z-' num2str(q(nq(k1),2)) ')'];
      Qz2=[Qz2 sprintf('%+d',-q(nq(k1),3)) ...
        '*(z-' num2str(q(nq(k1),2)) ')'];
      Qz0=Qz0-q(nq(k1),3)*(z0-q(nq(k1),2));
    end
  end
  fprintf(['x є [%d,%d):'...
    ' Q%d(z)=%s=%s\n'],zk(k),zk(k+1),k,Qz1,Qz2);
  z=[z z0]; % накапливаем аргументы
  Qz=[Qz Qz0]; % накапливаем функцию
end
figure
plot(z,Qz,'k')
set(get(gcf,'CurrentAxes'),...
  'FontName','Times New Roman Cyr','FontSize',12)
title('\bfЭпюра перерезывающих сил')
xlabel('\itz\rm, м')
ylabel('\itQ\rm(\itz\rm, кН')
Перерезывающие силы на участках:
x є [0,2): Q1(z)=+q1*(z-0)=-20*(z-0)
x є [2,4): Q2(z)=Ra+q1*(z-0)=95-20*(z-0)
x є [4,5): Q3(z)=Ra+F1+q1*(z-0)=95+20-20*(z-0)
x є [5,6): Q4(z)=Ra+F1+q1*(z-0)-q1*(z-5)=95+20-20*(z-0)+20*(z-5)
x є [6,7): Q5(z)=Ra+F1+F2+q1*(z-0)-q1*(z-5)=95+20-30-20*(z-0)+20*(z-5)
x є [7,8): Q6(z)=Ra+Rb+F1+F2+q1*(z-0)-q1*(z-5)=95-15+20-30-20*(z-0)+20*(z-5)
x є [8,10): Q7(z)=Ra+Rb+F1+F2+q1*(z-0)+q2*(z-8)-q1*(z-5)=95-15+20-30-20*(z-0)+15*(z-8)+20*(z-5)

Теперь переходим к изгибающим моментам. Формула для их вычисления в каждом сечении − это сумма моментов от всех сил, в т.ч. реакций опор, расположенных слева от данного сечения:

Смысл zk − тот же, что и в предыдущей формуле.Во второй сумме учитываются все сосредоточенные силы, находящиеся слева от данного сечения, в т.ч. и реакции опор. Записываем аналитические выражения для M(z) на каждом участке и строим эпюру.

disp('Изгибающие моменты на участках:')
Mz=[];
for k=1:nk,
  Mz1='';
  Mz2='';
  z0=linspace(zk(k),zk(k+1)); % аргументы для графика
  Mz0=zeros(size(z0)); % функции для графика
  if Op(1)<zk(k+1), % левая опора - слева от участка
    Mz1=[Mz1 'Ra*(z-a)'];
    Mz2=[Mz2 num2str(Ra) '*(z-' num2str(Op(1)) ')'];
    Mz0=Mz0+Ra*(z0-Op(1));
  end
  if Op(2)<zk(k+1), % правая опора - слева от участка
    Mz1=[Mz1 '+Rb*(z-b)'];
    Mz2=[Mz2 sprintf('%+d',Rb) '*(z-' num2str(Op(2)) ')'];
    Mz0=Mz0+Rb*(z0-Op(2));
  end
  if ~isempty(M)
    nM=find(M(:,1)<zk(k+1)); % изгибающие моменты слева
    for k1=1:length(nM),
      Mz1=[Mz1 '+M' num2str(nM(k1))];
      Mz2=[Mz2 sprintf('%+d',M(nM(k1),2))];
      Mz0=Mz0+M(nM(k1),2);
    end
  end
  if ~isempty(F)
    nF=find(F(:,1)<zk(k+1)); % сосредоточенные силы слева
    for k1=1:length(nF),
      Mz1=[Mz1 '+F' num2str(nF(k1)) '*(z-' ...
        num2str(F(nF(k1),1)) ')'];
      Mz2=[Mz2 sprintf('%+d',F(nF(k1),2)) '*(z-' ...
        num2str(F(nF(k1),1)) ')'];
      Mz0=Mz0+F(nF(k1),2)*(z0-F(nF(k1),1));
    end
  end
  if ~isempty(q)
    nq=find(q(:,1)<zk(k+1)); % начало q слева
    for k1=1:length(nq),
      Mz1=[Mz1 '+q' num2str(nq(k1)) ...
        '*(z-' num2str(q(nq(k1),1)) ')^2/2'];
      Mz2=[Mz2 sprintf('%+d',q(nq(k1),3)) ...
        '*(z-' num2str(q(nq(k1),1)) ')^2/2'];
      Mz0=Mz0+q(nq(k1),3)*(z0-q(nq(k1),1)).^2/2;
    end
    nq=find(q(:,2)<zk(k+1)); % конец q слева
    for k1=1:length(nq),
      Mz1=[Mz1 '-q' num2str(nq(k1)) ...
        '*(z-' num2str(q(nq(k1),2)) ')^2/2'];
      Mz2=[Mz2 sprintf('%+d',-q(nq(k1),3)) ...
        '*(z-' num2str(q(nq(k1),2)) ')^2/2'];
      Mz0=Mz0-q(nq(k1),3)*(z0-q(nq(k1),2)).^2/2;
    end
  end
  fprintf(['x є [%d,%d):'...
    ' M%d(z)=%s=%s\n'],zk(k),zk(k+1),k,Mz1,Mz2);
  Mz=[Mz Mz0]; % накапливаем функцию
end
figure
plot(z,Mz,'k')
set(get(gcf,'CurrentAxes'),...
  'FontName','Times New Roman Cyr','FontSize',12)
title('\bfЭпюра изгибающих моментов')
xlabel('\itz\rm, м')
ylabel('\itM\rm(\itz\rm), кНм')
Изгибающие моменты на участках:
x є [0,2): M1(z)=+M1+q1*(z-0)^2/2=-10-20*(z-0)^2/2
x є [2,4): M2(z)=Ra*(z-a)+M1+q1*(z-0)^2/2=95*(z-2)-10-20*(z-0)^2/2
x є [4,5): M3(z)=Ra*(z-a)+M1+F1*(z-4)+q1*(z-0)^2/2=95*(z-2)-10+20*(z-4)-20*(z-0)^2/2
x є [5,6): M4(z)=Ra*(z-a)+M1+F1*(z-4)+q1*(z-0)^2/2-q1*(z-5)^2/2=95*(z-2)-10+20*(z-4)-20*(z-0)^2/2+20*(z-5)^2/2
x є [6,7): M5(z)=Ra*(z-a)+M1+M2+F1*(z-4)+F2*(z-6)+q1*(z-0)^2/2-q1*(z-5)^2/2=95*(z-2)-10+15+20*(z-4)-30*(z-6)-20*(z-0)^2/2+20*(z-5)^2/2
x є [7,8): M6(z)=Ra*(z-a)+Rb*(z-b)+M1+M2+F1*(z-4)+F2*(z-6)+q1*(z-0)^2/2-q1*(z-5)^2/2=95*(z-2)-15*(z-7)-10+15+20*(z-4)-30*(z-6)-20*(z-0)^2/2+20*(z-5)^2/2
x є [8,10): M7(z)=Ra*(z-a)+Rb*(z-b)+M1+M2+F1*(z-4)+F2*(z-6)+q1*(z-0)^2/2+q2*(z-8)^2/2-q1*(z-5)^2/2=95*(z-2)-15*(z-7)-10+15+20*(z-4)-30*(z-6)-20*(z-0)^2/2+15*(z-8)^2/2+20*(z-5)^2/2

Подбор сечения по условиям прочности

Зададим ещё некоторые исходные данные: модуль упругости E и допускаемое напряжение [σ]. Они задаются соответственно в переменных E и Sd (в МПа). Найдём максимальный (по модулю) изгибающий момент Mmax и сечение, в котором он достигается (опасное сечение). Из соотношения

находим минимально допустимый момент сопротивления сечения:

Найдём минимально допустимое двутавровое сечение. Базы данных различных профилей перепишите отсюда (zip-архив, 6kb). В этом архиве также находится функция для рисования сложного профиля, которая нам дальше пригодится. Базы данных в этом архиве − обычные текстовые файлы, процедура рисования − m-файл, т.е. также обычный текстовый файл. Распакуйте переписанные файлы в какой-либо каталог, доступный системе MATLAB.

Находим нужное двутавровое сечение. Печатаем его характеристики и пересчитанное по формуле (9) нормальное напряжение в опасном сечении. Если вам задали подобрать не двутавр, а, например, швеллер, посмотрите в ИДЗ Геометрические характеристики плоских сечений, как достать из соответствующей базы данных нужные характеристики.

E=2e5; % модуль упругости, МПа
Sd=160; % допускаемое напряжение, МПа
fprintf('Модуль упругости E=%d МПа\n',E);
fprintf('Допускаемое напряжение [sigma]=%d МПа\n',Sd);
[Mmax,iMmax]=max(abs(Mz)); % максимальный изгибающий момент
fprintf(['Максимальный по модулю изгибающий момент' ...
  '|Mmax|=%7.2f кНм\n'],Mmax)
fprintf(['достигается при z=%6.2f м\n'],z(iMmax))
Wmin=(Mmax)/Sd*1e3; % минимально допустимый Wx, см^3
fprintf(['Минимально допустимый момент сопротивления '...
  'Wmin=|Mmax|/[sigma]*10^5=%7.2f см^3\n'],Wmin);
load dwudata.txt % загружаем базу данных двутавров
dwu=find(dwudata(:,10)>Wmin); % двутавры, которые подходят
dwutavr=dwudata(dwu(1),:); % выбираем минимально возможный
Numdwu=dwutavr(1); % номер двутавра
if (Numdwu==round(Numdwu)),
  disp(['Выбираем друтавр No ' num2str(Numdwu)]);
else
  disp(['Выбираем друтавр No ' num2str(round(Numdwu)) 'a']);
end
disp('Его данные:')
Jx=dwutavr(9);
Wx=dwutavr(10);
Sx=dwutavr(11);
fprintf('Момент инерции Jx=%d см^4\n',Jx)
fprintf('Момент cопротивления Wx=%d см^3\n',Wx)
fprintf('Статический момент Sx=%d см^3\n',Sx)
Smax=Mmax/Wx*1000;
fprintf(['Максимальное нормальное напряжение в опасном сечении ' ...
  'SigmaMax=|Mmax|/Wx*10^3=%7.2f МПа\n'],Smax)
Модуль упругости E=200000 МПа
Допускаемое напряжение [sigma]=160 МПа
Максимальный по модулю изгибающий момент|Mmax|=  75.00 кНм
достигается при z=  6.00 м
Минимально допустимый момент сопротивления Wmin=|Mmax|/[sigma]*10^5= 468.75 см^3
Выбираем друтавр No 30
Его данные:
Момент инерции Jx=7080 см^4
Момент cопротивления Wx=472 см^3
Статический момент Sx=268 см^3
Максимальное нормальное напряжение в опасном сечении SigmaMax=|Mmax|/Wx*10^3= 158.90 МПа

Проверим теперь касательные напряжения. В каждом сечении они подсчитываются по формуле Журавского:

Найдём касательные напряжения в двух сечениях: в том, где максимален изгибающий момент, и в том, где максимальна перерезывающая сила.

[Qmax,iQmax]=max(abs(Qz)); % максимальная перерезывающая сила
fprintf(['Максимальная по модулю перерезывающая сила ' ...
  '|Qmax|=%7.2f кН\n'],Qmax)
fprintf(['достигается при z=%6.2f м\n'],z(iQmax))
fprintf('при z=%6.2f м: |Qmax|=%7.2f кН\n',...
  z(iMmax),abs(Qz(iMmax)))
Tmax=abs(Qmax)*Sx/(dwutavr(4)*Jx)*100; % Tmax, МПа
TMmax=abs(Qz(iMmax))*Sx/(dwutavr(4)*Jx)*100;
disp('Касательные напряжения:')
fprintf(['при z=%6.2f: TauMax=%7.2f МПа\n'],z(iQmax),Tmax)
fprintf(['при z=%6.2f: TauMax=%7.2f МПа\n'],z(iMmax),TMmax)
Максимальная по модулю перерезывающая сила |Qmax|=  55.00 кН
достигается при z=  2.00 м
при z=  6.00 м: |Qmax|=  15.00 кН
Касательные напряжения:
при z=  2.00: TauMax=  32.03 МПа
при z=  6.00: TauMax=   8.74 МПа

Как правило, касательные напряжения значительно меньше нормальных в одном и том же сечении, к тому же они достигаются на разных волокнах: нормальные − на крайних, а касательные − в середине сечения. Поэтому опасными является обычно нормальные напряжения.

Нарисуем распределение нормальных и касательных напряжений по сечению. Нормальные напряжения распределены линейно, а касательные − по параболе. Мы строим эпюру распределения касательных напряжений приближённо: заменяем двутавр набором прямоугольников. Вычисляем по формуле (11) напряжения в крайних волокнах тонкой вертикальной стойки (переменная t2) и во внутренних волокнах широкой горизонтальной полки (переменная t1). На стойке строим параболу, а на короткой полке ограничимся прямолинейным отрезком. Рисуем на одном рисунке сечение (процедуру для его рисования мы переписали!), распределение нормальных и касательных напряжений в опасном сечении (там, где достигается Mmax), и распределение касательных напряжений в том сечении, где достигается Qmax.

t1=Qmax*(dwutavr(3)*dwutavr(5)*(dwutavr(2)-dwutavr(5))/2)/...
  (Jx*dwutavr(3))/10; % tau на полке, МПа
t2=Qmax*(dwutavr(3)*dwutavr(5)*(dwutavr(2)-dwutavr(5))/2)/...
  (Jx*dwutavr(4))/10; % tau под полкой, МПа
a=(Tmax-t2)/(dwutavr(2)/2-dwutavr(5))^2*100; % строим параболу
y=linspace(-(dwutavr(2)/2-dwutavr(5)),dwutavr(2)/2-dwutavr(5))/10;
tau=Tmax-a*y.^2;
y=[-dwutavr(2)/20, y(1), y, y(end), dwutavr(2)/20];
tau=[0 t1 tau t1 0];
GeoDat=zeros(1,7); % массив для геометрических данных
GeoDat(1)=dwutavr(2)/10; % h
GeoDat(3:7)=dwutavr(3:7)/10; % b,s,t,R,r
PlotFig([2 Numdwu 0 0 -GeoDat(3)/2 -GeoDat(1)/2 0],GeoDat);
hold on
plot([0,-sign(Mz(iMmax))*Smax/10,sign(Mz(iMmax))*Smax/10,0],...
  [-GeoDat(1)/2,-GeoDat(1)/2,GeoDat(1)/2,GeoDat(1)/2],'r')
plot(tau/10,y,'g')
plot(tau/10/Tmax*TMmax,y,'r')
hold off
title('\bfНапряжения\rm \sigma_{\itx}\rm, \tau_{\itx}')
xlabel('\sigma_{\itx}\rm/10, \tau_{\itx}\rm/10, МПа')

Построение эпюр прогибов и углов поворота

Прогибы и углы поворота связаны с изгибающими моментами соотношениями (1-2). Выражения для M(z) у нас есть: это (8). Поэтому EJxθ(z) и EJxw(z) найдём интегрированием выражения (8). При интегрировании появляются произвольные постоянные EJxw0 и EJxθ0, смысл которых − прогиб и угол поворота на левом конце балочки, при z=0, с точностью до множителя EJx:

Здесь опять-таки в слагаемом с сосредоточенными силами Fk, нужно учитывать также реакции опор.

Для нахождения этих двух произвольных постоянных EJxw0 и EJxθ0 у нас есть два условия: прогибы под опорами должны равняться нулю:

Составляем первое уравнение (14), используя формулу (13). В него войдут 2 неизвестные: EJxw0 и EJxθ0.

seq1=['EJx*w0+EJx*theta0*a'];
seq2=['EJx*w0+EJx*theta0*' num2str(Op(1))];
eq1=0;
if ~isempty(M)
  nM=find(M(:,1)<Op(1)); % изгибающие моменты слева
  for k1=1:length(nM),
    seq1=[seq1 '+M' num2str(nM(k1))...
      '*(a-' num2str(M(nM(k1),1)) ')^2/2'];
    seq2=[seq2 sprintf('%+d',M(nM(k1),2))...
      '*(' num2str(Op(1)) '-' ...
      num2str(M(nM(k1),1)) ')^2/2'];
    eq1=eq1+M(nM(k1),2)*(Op(1)-M(nM(k1),1)).^2/2;
  end
end
if ~isempty(F)
  nF=find(F(:,1)<Op(1)); % сосредоточенные силы слева
  for k1=1:length(nF),
    seq1=[seq1 '+F' num2str(nF(k1)) ...
      '*(a-' num2str(F(nF(k1),1)) ')^3/6'];
    seq2=[seq2 sprintf('%+d',F(nF(k1),2)) ...
      '*(' num2str(Op(1)) '-' ...
      num2str(F(nF(k1),1)) ')^3/6'];
    eq1=eq1+F(nF(k1),2)*(Op(1)-F(nF(k1),1)).^3/6;
  end
end
if ~isempty(q)
  nq=find(q(:,1)<Op(1)); % начало q слева
  for k1=1:length(nq),
    seq1=[seq1 '+q' num2str(nq(k1)) ...
      '*(a-' num2str(q(nq(k1),1)) ')^4/24'];
    seq2=[seq2 sprintf('%+d',q(nq(k1),3)) ...
      '*(' num2str(Op(1)) '-' ...
      num2str(q(nq(k1),1)) ')^4/24'];
    eq1=eq1+q(nq(k1),3)*(Op(1)-q(nq(k1),1)).^4/24;
  end
  nq=find(q(:,2)<Op(1)); % конец q слева
  for k1=1:length(nq),
    seq1=[seq1 '-q' num2str(nq(k1)) ...
      '*(a-' num2str(q(nq(k1),2)) ')^4/24'];
    seq2=[seq2 sprintf('%+d',-q(nq(k1),3)) ...
      '*(' num2str(Op(1)) '-' ...
      num2str(q(nq(k1),2)) ')^4/24'];
    eq1=eq1-q(nq(k1),3)*(Op(1)-q(nq(k1),2)).^4/24;
  end
end
fprintf('Приравниваем нулю перемещение в точке a=%d:\n',Op(1))
fprintf('%s=0;\n%s=0.\n',seq1,seq2)
Приравниваем нулю перемещение в точке a=2:
EJx*w0+EJx*theta0*a+M1*(a-0)^2/2+q1*(a-0)^4/24=0;
EJx*w0+EJx*theta0*2-10*(2-0)^2/2-20*(2-0)^4/24=0.

Теперь составляем 2-е уравнение (15) по той же формуле (13).

seq1=['EJx*w0+EJx*theta0*b+Ra*(b-a)^3/6'];
seq2=['EJx*w0+EJx*theta0*' ...
  num2str(Op(2)) sprintf('%+d',Ra) '*(' num2str(Op(2)) '-' ...
  num2str(Op(1)) ')^3/6'];
eq2=Ra*(Op(2)-Op(1))^3/6;
if ~isempty(M)
  nM=find(M(:,1)<Op(2)); % изгибающие моменты слева
  for k1=1:length(nM),
    seq1=[seq1 '+M' num2str(nM(k1))...
      '*(b-' num2str(M(nM(k1),1)) ')^2/2'];
    seq2=[seq2 sprintf('%+d',M(nM(k1),2))...
      '*(' num2str(Op(2)) '-' ...
      num2str(M(nM(k1),1)) ')^2/2'];
    eq2=eq2+M(nM(k1),2)*(Op(2)-M(nM(k1),1)).^2/2;
  end
end
if ~isempty(F)
  nF=find(F(:,1)<Op(2)); % сосредоточенные силы слева
  for k1=1:length(nF),
    seq1=[seq1 '+F' num2str(nF(k1)) ...
      '*(b-' num2str(F(nF(k1),1)) ')^3/6'];
    seq2=[seq2 sprintf('%+d',F(nF(k1),2)) ...
      '*(' num2str(Op(2)) '-' ...
      num2str(F(nF(k1),1)) ')^3/6'];
    eq2=eq2+F(nF(k1),2)*(Op(2)-F(nF(k1),1)).^3/6;
  end
end
if ~isempty(q)
  nq=find(q(:,1)<Op(2)); % начало q слева
  for k1=1:length(nq),
    seq1=[seq1 '+q' num2str(nq(k1)) ...
      '*(b-' num2str(q(nq(k1),1)) ')^4/24'];
    seq2=[seq2 sprintf('%+d',q(nq(k1),3)) ...
      '*(' num2str(Op(2)) '-' ...
      num2str(q(nq(k1),1)) ')^4/24'];
    eq2=eq2+q(nq(k1),3)*(Op(2)-q(nq(k1),1)).^4/24;
  end
  nq=find(q(:,2)<Op(2)); % конец q слева
  for k1=1:length(nq),
    seq1=[seq1 '-q' num2str(nq(k1)) ...
      '*(b-' num2str(q(nq(k1),2)) ')^4/24'];
    seq2=[seq2 sprintf('%+d',-q(nq(k1),3)) ...
      '*(' num2str(Op(2)) '-' ...
      num2str(q(nq(k1),2)) ')^4/24'];
    eq2=eq2-q(nq(k1),3)*(Op(2)-q(nq(k1),2)).^4/24;
  end
end
fprintf('Приравниваем нулю перемещение в точке b=%d:\n',Op(2))
fprintf('%s=0;\n%s=0.\n',seq1,seq2)
Приравниваем нулю перемещение в точке b=7:
EJx*w0+EJx*theta0*b+Ra*(b-a)^3/6+M1*(b-0)^2/2+M2*(b-6)^2/2+F1*(b-4)^3/6+F2*(b-6)^3/6+q1*(b-0)^4/24-q1*(b-5)^4/24=0;
EJx*w0+EJx*theta0*7+95*(7-2)^3/6-10*(7-0)^2/2+15*(7-6)^2/2+20*(7-4)^3/6-30*(7-6)^3/6-20*(7-0)^4/24+20*(7-5)^4/24=0.

Решаем полученную систему уравнений и находим наши неизвестные: прогиб и угол поворота при z=0:

disp('Получили систему уравнений:')
A=[[1 1];Op]';
b=[eq1;eq2];
fprintf(['EJx*w0%+dEJx*theta0%+d=0;\n'],[A(:,2) b]')
disp('Решаем её:')
EJ0=-A\b;
fprintf(['EJx*w0=%d кН*м^3;\n'...
  'EJx*theta0=%d кНм^2.\n'],EJ0);
Получили систему уравнений:
EJx*w0+2*EJx*theta0-3.333333e+001=0;
EJx*w0+7*EJx*theta0-1.608333e+002=0;
Решаем её:
EJx*w0=-1.766667e+001 кН*м^3;
EJx*theta0=2.550000e+001 кН*м^2.

По полученным формулам строим эпюру перемещений (с множителем EJx). Как обычно, вначале формируем аналитические выражения для EJxw(z) на различных участках, а затем строим график. Показываем на нём точками положение опор (перемещение на них равно нулю).

disp('Перемещения на участках:')
EJwz=[];
for k=1:nk,
  EJwz1=['EJx*w0+EJx*theta0*z'];
  EJwz2=[num2str(EJ0(1)) sprintf('%+d',EJ0(2)) '*z'];
  z0=linspace(zk(k),zk(k+1)); % аргументы для графика
  EJwz0=EJ0(1)+EJ0(2)*z0; % функции для графика
  if Op(1)<zk(k+1), % левая опора слева
    EJwz1=[EJwz1 '+Ra*(z-a)^3/6'];
    EJwz2=[EJwz2 sprintf('%+d',Ra) '*(z-' ...
      num2str(Op(1)) ')^3/6'];
    EJwz0=EJwz0+Ra*(z0-Op(1)).^3/6;
  end
  if Op(2)<zk(k+1), % правая опора слева
    EJwz1=[EJwz1 '+Rb*(z-b)^3/6'];
    EJwz2=[EJwz2 sprintf('%+d',Rb) '*(z-' ...
      num2str(Op(2)) ')^3/6'];
    EJwz0=EJwz0+Rb*(z0-Op(2)).^3/6;
  end
  if ~isempty(M)
    nM=find(M(:,1)<zk(k+1)); % изгибающие моменты слева
    for k1=1:length(nM),
      EJwz1=[EJwz1 '+M' num2str(nM(k1))...
        '*(z-' num2str(M(nM(k1),1)) ')^2/2'];
      EJwz2=[EJwz2 sprintf('%+d',M(nM(k1),2))...
        '*(z-' num2str(M(nM(k1),1)) ')^2/2'];
      EJwz0=EJwz0+M(nM(k1),2)*(z0-M(nM(k1),1)).^2/2;
    end
  end
  if ~isempty(F)
    nF=find(F(:,1)<zk(k+1)); % сосредоточенные силы слева
    for k1=1:length(nF),
      EJwz1=[EJwz1 '+F' num2str(nF(k1)) '*(z-' ...
        num2str(F(nF(k1),1)) ')^3/6'];
      EJwz2=[EJwz2 sprintf('%+d',F(nF(k1),2)) '*(z-' ...
        num2str(F(nF(k1),1)) ')^3/6'];
      EJwz0=EJwz0+F(nF(k1),2)*(z0-F(nF(k1),1)).^3/6;
    end
  end
  if ~isempty(q)
    nq=find(q(:,1)<zk(k+1)); % начало q слева
    for k1=1:length(nq),
      EJwz1=[EJwz1 '+q' num2str(nq(k1)) ...
        '*(z-' num2str(q(nq(k1),1)) ')^4/24'];
      EJwz2=[EJwz2 sprintf('%+d',q(nq(k1),3)) ...
        '*(z-' num2str(q(nq(k1),1)) ')^4/24'];
      EJwz0=EJwz0+q(nq(k1),3)*(z0-q(nq(k1),1)).^4/24;
    end
    nq=find(q(:,2)<zk(k+1)); % конец q слева
    for k1=1:length(nq),
      EJwz1=[EJwz1 '-q' num2str(nq(k1)) ...
        '*(z-' num2str(q(nq(k1),2)) ')^4/24'];
      EJwz2=[EJwz2 sprintf('%+d',-q(nq(k1),3)) ...
        '*(z-' num2str(q(nq(k1),2)) ')^4/24'];
      EJwz0=EJwz0-q(nq(k1),3)*(z0-q(nq(k1),2)).^4/24;
    end
  end
  fprintf('x є [%d,%d): EJx*w%d(z)=%s=%s\n',...
    zk(k),zk(k+1),k,EJwz1,EJwz2);
  EJwz=[EJwz EJwz0]; % накапливаем функцию
end
figure
plot(z,EJwz,'k',Op(1),0,'o',Op(2),0,'o')
set(get(gcf,'CurrentAxes'),...
  'FontName','Times New Roman Cyr','FontSize',12)
title('\bfЭпюра прогибов')
xlabel('\itz\rm, м')
ylabel('\itEJ_xw\rm(\itz\rm), кНм^3')
Перемещения на участках:
x є [0,2): EJx*w1(z)=EJx*w0+EJx*theta0*z+M1*(z-0)^2/2+q1*(z-0)^4/24=-17.6667+2.550000e+001*z-10*(z-0)^2/2-20*(z-0)^4/24
x є [2,4): EJx*w2(z)=EJx*w0+EJx*theta0*z+Ra*(z-a)^3/6+M1*(z-0)^2/2+q1*(z-0)^4/24=-17.6667+2.550000e+001*z+95*(z-2)^3/6-10*(z-0)^2/2-20*(z-0)^4/24
x є [4,5): EJx*w3(z)=EJx*w0+EJx*theta0*z+Ra*(z-a)^3/6+M1*(z-0)^2/2+F1*(z-4)^3/6+q1*(z-0)^4/24=-17.6667+2.550000e+001*z+95*(z-2)^3/6-10*(z-0)^2/2+20*(z-4)^3/6-20*(z-0)^4/24
x є [5,6): EJx*w4(z)=EJx*w0+EJx*theta0*z+Ra*(z-a)^3/6+M1*(z-0)^2/2+F1*(z-4)^3/6+q1*(z-0)^4/24-q1*(z-5)^4/24=-17.6667+2.550000e+001*z+95*(z-2)^3/6-10*(z-0)^2/2+20*(z-4)^3/6-20*(z-0)^4/24+20*(z-5)^4/24
x є [6,7): EJx*w5(z)=EJx*w0+EJx*theta0*z+Ra*(z-a)^3/6+M1*(z-0)^2/2+M2*(z-6)^2/2+F1*(z-4)^3/6+F2*(z-6)^3/6+q1*(z-0)^4/24-q1*(z-5)^4/24=-17.6667+2.550000e+001*z+95*(z-2)^3/6-10*(z-0)^2/2+15*(z-6)^2/2+20*(z-4)^3/6-30*(z-6)^3/6-20*(z-0)^4/24+20*(z-5)^4/24
x є [7,8): EJx*w6(z)=EJx*w0+EJx*theta0*z+Ra*(z-a)^3/6+Rb*(z-b)^3/6+M1*(z-0)^2/2+M2*(z-6)^2/2+F1*(z-4)^3/6+F2*(z-6)^3/6+q1*(z-0)^4/24-q1*(z-5)^4/24=-17.6667+2.550000e+001*z+95*(z-2)^3/6-15*(z-7)^3/6-10*(z-0)^2/2+15*(z-6)^2/2+20*(z-4)^3/6-30*(z-6)^3/6-20*(z-0)^4/24+20*(z-5)^4/24
x є [8,10): EJx*w7(z)=EJx*w0+EJx*theta0*z+Ra*(z-a)^3/6+Rb*(z-b)^3/6+M1*(z-0)^2/2+M2*(z-6)^2/2+F1*(z-4)^3/6+F2*(z-6)^3/6+q1*(z-0)^4/24+q2*(z-8)^4/24-q1*(z-5)^4/24=-17.6667+2.550000e+001*z+95*(z-2)^3/6-15*(z-7)^3/6-10*(z-0)^2/2+15*(z-6)^2/2+20*(z-4)^3/6-30*(z-6)^3/6-20*(z-0)^4/24+15*(z-8)^4/24+20*(z-5)^4/24

Так же поступаем с эпюрой углов поворота.

disp('Углы поворота на участках:')
EJtz=[];
for k=1:nk,
  EJtz1='EJx*theta0';
  EJtz2=num2str(EJ0(2));
  z0=linspace(zk(k),zk(k+1)); % аргументы для графика
  EJtz0=EJ0(2)*ones(size(z0)); % функции для графика
  if Op(1)<zk(k+1), % левая опора слева
    EJtz1=[EJtz1 '+Ra*(z-a)^2/2'];
    EJtz2=[EJtz2 sprintf('%+d',Ra) '*(z-' ...
      num2str(Op(1)) ')^2/2'];
    EJtz0=EJtz0+Ra*(z0-Op(1)).^2/2;
  end
  if Op(2)<zk(k+1), % правая опора слева
    EJtz1=[EJtz1 '+Rb*(z-b)^2/2'];
    EJtz2=[EJtz2 sprintf('%+d',Rb) '*(z-' ...
      num2str(Op(2)) ')^2/2'];
    EJtz0=EJtz0+Rb*(z0-Op(2)).^2/2;
  end
  if ~isempty(M)
    nM=find(M(:,1)<zk(k+1)); % изгибающие моменты слева
    for k1=1:length(nM),
      EJtz1=[EJtz1 '+M' num2str(nM(k1))...
        '*(z-' num2str(M(nM(k1),1)) ')'];
      EJtz2=[EJtz2 sprintf('%+d',M(nM(k1),2))...
        '*(z-' num2str(M(nM(k1),1)) ')'];
      EJtz0=EJtz0+M(nM(k1),2)*(z0-M(nM(k1),1));
    end
  end
  if ~isempty(F)
    nF=find(F(:,1)<zk(k+1)); % сосредоточенные силы слева
    for k1=1:length(nF),
      EJtz1=[EJtz1 '+F' num2str(nF(k1)) '*(z-' ...
        num2str(F(nF(k1),1)) ')^2/2'];
      EJtz2=[EJtz2 sprintf('%+d',F(nF(k1),2)) '*(z-' ...
        num2str(F(nF(k1),1)) ')^2/2'];
      EJtz0=EJtz0+F(nF(k1),2)*(z0-F(nF(k1),1)).^2/2;
    end
  end
  if ~isempty(q)
    nq=find(q(:,1)<zk(k+1)); % начало q слева
    for k1=1:length(nq),
      EJtz1=[EJtz1 '+q' num2str(nq(k1)) ...
        '*(z-' num2str(q(nq(k1),1)) ')^3/6'];
      EJtz2=[EJtz2 sprintf('%+d',q(nq(k1),3)) ...
        '*(z-' num2str(q(nq(k1),1)) ')^3/6'];
      EJtz0=EJtz0+q(nq(k1),3)*(z0-q(nq(k1),1)).^3/6;
    end
    nq=find(q(:,2)<zk(k+1)); % конец q слева
    for k1=1:length(nq),
      EJtz1=[EJtz1 '-q' num2str(nq(k1)) ...
        '*(z-' num2str(q(nq(k1),2)) ')^3/6'];
      EJtz2=[EJtz2 sprintf('%+d',-q(nq(k1),3)) ...
        '*(z-' num2str(q(nq(k1),2)) ')^3/6'];
      EJtz0=EJtz0-q(nq(k1),3)*(z0-q(nq(k1),2)).^3/6;
    end
  end
  fprintf(['x є [%d,%d):'...
    ' EJx*theta%d(z)=%s=%s\n'],...
    zk(k),zk(k+1),k,EJtz1,EJtz2);
  EJtz=[EJtz EJtz0]; % накапливаем функцию
end
figure
plot(z,EJtz,'k')
set(get(gcf,'CurrentAxes'),...
  'FontName','Times New Roman Cyr','FontSize',12)
title('\bfЭпюра углов поворота')
xlabel('\itz\rm, м')
ylabel('\itEJ_x\rm\theta(\itz\rm), кНм^2')
Углы поворота на участках:
x є [0,2): EJx*theta1(z)=EJx*theta0+M1*(z-0)+q1*(z-0)^3/6=25.5-10*(z-0)-20*(z-0)^3/6
x є [2,4): EJx*theta2(z)=EJx*theta0+Ra*(z-a)^2/2+M1*(z-0)+q1*(z-0)^3/6=25.5+95*(z-2)^2/2-10*(z-0)-20*(z-0)^3/6
x є [4,5): EJx*theta3(z)=EJx*theta0+Ra*(z-a)^2/2+M1*(z-0)+F1*(z-4)^2/2+q1*(z-0)^3/6=25.5+95*(z-2)^2/2-10*(z-0)+20*(z-4)^2/2-20*(z-0)^3/6
x є [5,6): EJx*theta4(z)=EJx*theta0+Ra*(z-a)^2/2+M1*(z-0)+F1*(z-4)^2/2+q1*(z-0)^3/6-q1*(z-5)^3/6=25.5+95*(z-2)^2/2-10*(z-0)+20*(z-4)^2/2-20*(z-0)^3/6+20*(z-5)^3/6
x є [6,7): EJx*theta5(z)=EJx*theta0+Ra*(z-a)^2/2+M1*(z-0)+M2*(z-6)+F1*(z-4)^2/2+F2*(z-6)^2/2+q1*(z-0)^3/6-q1*(z-5)^3/6=25.5+95*(z-2)^2/2-10*(z-0)+15*(z-6)+20*(z-4)^2/2-30*(z-6)^2/2-20*(z-0)^3/6+20*(z-5)^3/6
x є [7,8): EJx*theta6(z)=EJx*theta0+Ra*(z-a)^2/2+Rb*(z-b)^2/2+M1*(z-0)+M2*(z-6)+F1*(z-4)^2/2+F2*(z-6)^2/2+q1*(z-0)^3/6-q1*(z-5)^3/6=25.5+95*(z-2)^2/2-15*(z-7)^2/2-10*(z-0)+15*(z-6)+20*(z-4)^2/2-30*(z-6)^2/2-20*(z-0)^3/6+20*(z-5)^3/6
x є [8,10): EJx*theta7(z)=EJx*theta0+Ra*(z-a)^2/2+Rb*(z-b)^2/2+M1*(z-0)+M2*(z-6)+F1*(z-4)^2/2+F2*(z-6)^2/2+q1*(z-0)^3/6+q2*(z-8)^3/6-q1*(z-5)^3/6=25.5+95*(z-2)^2/2-15*(z-7)^2/2-10*(z-0)+15*(z-6)+20*(z-4)^2/2-30*(z-6)^2/2-20*(z-0)^3/6+15*(z-8)^3/6+20*(z-5)^3/6

И, наконец, построим эпюры действительных перемещений и углов поворота (модуль упругости E и момент инерции сечения Jx у нас есть). Аналитические выражения мы уже не записываем, т.к. они отличаются от полученных ранее только множителем EJx. Находим максимальный прогиб и сечение, в котором он достигается.

figure
plot(z,EJwz/(E*Jx)*1e8,'k',Op(1),0,'o',Op(2),0,'o')
set(get(gcf,'CurrentAxes'),...
  'FontName','Times New Roman Cyr','FontSize',12)
title('\bfЭпюра прогибов')
xlabel('\itz\rm, м')
ylabel('\itw\rm(\itz\rm), мм')
figure
plot(z,EJtz/(E*Jx)*1e5,'k')
set(get(gcf,'CurrentAxes'),...
  'FontName','Times New Roman Cyr','FontSize',12)
title('\bfЭпюра углов поворота')
xlabel('\itz\rm, м')
ylabel(' \theta\rm(\itz\rm), радиан')
[wmax,iwmax]=max(abs(EJwz/(E*Jx)*1e8));
fprintf(['Максимальный по модулю прогиб'...
  ' |Wmax|=%8.4f мм\n'],wmax)
fprintf('достигается при z=%6.2f м\n',z(iwmax))
Максимальный по модулю прогиб |Wmax|= 34.8870 мм
достигается при z= 10.00 м


Что делать дальше

Теперь вы можете скопировать содержимое этой страницы (через ClipBoard), перебросить его, например, в Office-Word, выбросить всё лишнее и распечатать. Осталось повторить теорию, и можно идти сдавать задание преподавателю.

Литература

  1. Справочник по сопротивлению материалов / Писаренко Г.С., Яковлев А.П., Матвеев В.В.: Отв. Ред. Писаренко Г.С. - 2-е изд., перераб. И доп. - Киев: Наукова думка, 1988. - 7736 с. - ISSN 5-12-000299-4.