Введение

В этом ИДЗ мы проведём полный расчёт балочки с жёсткой заделкой слева (рис.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 и нагрузка на неё: значения M, F, q и точки (интервалы) их приложения.

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

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

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

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

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

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

clear all
L=10; % длина, м
M=[[2,-10];[6,15]]; % изгибающие моменты, м, кНм
F=[[4,20];[6,-30]]; % сосредоточенные силы, м, кН
q=[[0,5,-20];[8,10,15]]; % распределённая нагрузка, м, кН/м
fprintf('Длина балочки L=%d м\n',L)
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 м
Изгибающие моменты
 k      zk         Mk
 1     2.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([0,0],[-0.1*s,0.1*s],'k') % заделка слева
for k=0:9,
  plot([0,-L002],[(5-k)*s002,(3-k)*s002],'k');
end
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 равна нулю и сумма моментов всех сил относительно какой-либо точки равна нулю. Нам здесь удобно считать сумму моментов относительно точки O:

Из этих уравнений можно найти неизвестные реакции в заделке: вертикальную силу Ra и момент Ma (рис.10).

Составляем 1-е уравнение (5). Для этого к неизвестной Ra прибавляем проекции всех сил на ось Oy, и приравниваем полученное выражение нулю. Решаем полученное уравнение − получаем Ra. Обратите внимание: здесь и дальше мы не только решаем уравнение (или, как далее, строим график), но и записываем его в виде текстовой строки (даже двух строк: до подстановки чисел и после). Возможно, такой подход поможет вам лучше усвоить материал.

seq1='Ra'; % строка для 1-го уравнения
seq2='Ra';
for k=1:size(F,1), % поперечные силы
  seq1=[seq1 '+F' num2str(k) ''];
  seq2=[seq2 sprintf('%+d',F(k,2))];
end
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
eq1=0;
if ~isempty(F),
  eq1=eq1+sum(F(:,2));
end
if ~isempty(q),
  eq1=eq1+sum(q(:,3).*(q(:,2)-q(:,1)));
end
disp('1-е уравнение: сумма проекций всех сил на ось Oy равна 0:')
fprintf('%s=0;\n%s=0;\nRa%+d=0;\n',seq1,seq2,eq1)
Ra=-eq1;
fprintf('Решаем его: Ra=%d кН\n',Ra)
1-е уравнение: сумма проекций всех сил на ось Oy равна 0:
Ra+F1+F2+q1(5-0)+q2(10-8)=0;
Ra+20-30-20*(5-0)+15*(10-8)=0;
Ra-80=0;
Решаем его: Ra=80 кН

Теперь составляем 2-е уравнение (6). К неизвестному моменту Ma прибавляем моменты всех сил относительно O. Решив это уравнение, находим неизвестный момент в опоре Ma.

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

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

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

zk=[0;L]; % точки переключения
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=6
Точки переключения, м
0   2   4   5   6   8   10   

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

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

disp('Перерезывающие силы на участках:')
z=[];
Qz=[];
for k=1:nk,
  Qz1='Ra';
  Qz2=num2str(Ra);
  z0=linspace(zk(k),zk(k+1)); % аргументы для графика
  Qz0=Ra*ones(size(z0)); % функции для графика
  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)=Ra+q1(z-0)=80-20(z-0)
x є [2,4): Q2(z)=Ra+q1(z-0)=80-20(z-0)
x є [4,5): Q3(z)=Ra+F1+q1(z-0)=80+20-20(z-0)
x є [5,6): Q4(z)=Ra+F1+q1(z-0)-q1(z-5)=80+20-20(z-0)+20(z-5)
x є [6,8): Q5(z)=Ra+F1+F2+q1(z-0)-q1(z-5)=80+20-30-20(z-0)+20(z-5)
x є [8,10): Q6(z)=Ra+F1+F2+q1(z-0)+q2(z-8)-q1(z-5)=80+20-30-20(z-0)+15(z-8)+20(z-5)

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

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

disp('Изгибающие моменты на участках:')
Mz=[];
for k=1:nk,
  Mz1='Ma+Ra*z';
  Mz2=[num2str(Ma) sprintf('%+d',Ra) 'z'];
  z0=linspace(zk(k),zk(k+1)); % аргументы для графика
  Mz0=Ma+Ra*z0; % функции для графика
  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)=Ma+Ra*z+q1(z-0)^2/2=-85+80z-20(z-0)^2/2
x є [2,4): M2(z)=Ma+Ra*z+M1+q1(z-0)^2/2=-85+80z-10-20(z-0)^2/2
x є [4,5): M3(z)=Ma+Ra*z+M1+F1(z-4)+q1(z-0)^2/2=-85+80z-10+20(z-4)-20(z-0)^2/2
x є [5,6): M4(z)=Ma+Ra*z+M1+F1(z-4)+q1(z-0)^2/2-q1(z-5)^2/2=-85+80z-10+20(z-4)-20(z-0)^2/2+20(z-5)^2/2
x є [6,8): M5(z)=Ma+Ra*z+M1+M2+F1(z-4)+F2(z-6)+q1(z-0)^2/2-q1(z-5)^2/2=-85+80z-10+15+20(z-4)-30(z-6)-20(z-0)^2/2+20(z-5)^2/2
x є [8,10): M6(z)=Ma+Ra*z+M1+M2+F1(z-4)+F2(z-6)+q1(z-0)^2/2+q2(z-8)^2/2-q1(z-5)^2/2=-85+80z-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|=  90.00 кНм
достигается при z=  6.00 м
Минимально допустимый момент сопротивления Wmin=|Mmax|/[sigma]*10^5= 562.50 см^3
Выбираем друтавр No 33
Его данные:
Момент инерции Jx=9840 см^4
Момент cопротивления Wx=597 см^3
Статический момент Sx=339 см^3
Максимальное нормальное напряжение в опасном сечении SigmaMax=|Mmax|/Wx*10^3= 150.75 МПа

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

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

[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|=  80.00 кН
достигается при z=  0.00 м
при z=  6.00 м: |Qmax|=  30.00 кН
Касательные напряжения:
при z=  0.00: TauMax=  39.37 МПа
при z=  6.00: TauMax=  14.76 МПа

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

Нарисуем распределение нормальных и касательных напряжений по сечению. Нормальные напряжения распределены линейно, а касательные − по параболе. Мы строим эпюру распределения касательных напряжений приближённо: заменяем двутавр набором прямоугольников. Вычисляем по формуле (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). Произвольные постоянные при этом будут равны нулю, т.к. в жёсткой заделке w(0) = 0 и θ(0) = 0. Интегрируем:

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

disp('Перемещения на участках:')
EJwz=[];
for k=1:nk,
  EJwz1=['Ma*z^2/2+Ra*z^3/6'];
  EJwz2=[num2str(Ma) 'z^2/2 sprintf('%+d',Ra) 'z^3/6'];
  z0=linspace(zk(k),zk(k+1)); % аргументы для графика
  EJwz0=Ma*z0.^2/2+Ra*z0.^3/6; % функции для графика
  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')
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)=Ma*z^2/2+Ra*z^3/6+q1*(z-0)^4/24=-85z^2/2+80z^3/6-20(z-0)^4/24
x є [2,4): EJx*w2(z)=Ma*z^2/2+Ra*z^3/6+M1*(z-2)^2/2+q1*(z-0)^4/24=-85z^2/2+80z^3/6-10(z-2)^2/2-20(z-0)^4/24
x є [4,5): EJx*w3(z)=Ma*z^2/2+Ra*z^3/6+M1*(z-2)^2/2+F1*(z-4)^3/6+q1*(z-0)^4/24=-85z^2/2+80z^3/6-10(z-2)^2/2+20(z-4)^3/6-20(z-0)^4/24
x є [5,6): EJx*w4(z)=Ma*z^2/2+Ra*z^3/6+M1*(z-2)^2/2+F1*(z-4)^3/6+q1*(z-0)^4/24-q1*(z-5)^4/24=-85z^2/2+80z^3/6-10(z-2)^2/2+20(z-4)^3/6-20(z-0)^4/24+20(z-5)^4/24
x є [6,8): EJx*w5(z)=Ma*z^2/2+Ra*z^3/6+M1*(z-2)^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=-85z^2/2+80z^3/6-10(z-2)^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*w6(z)=Ma*z^2/2+Ra*z^3/6+M1*(z-2)^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=-85z^2/2+80z^3/6-10(z-2)^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=['Ma*z+Ra*z^2/2'];
  EJtz2=[num2str(Ma) 'z' sprintf('%+d',Ra) 'z^2/2'];
  z0=linspace(zk(k),zk(k+1)); % аргументы для графика
  EJtz0=Ma*z0+Ra*z0.^2/2; % функции для графика
  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)=Ma*z+Ra*z^2/2+q1*(z-0)^3/6=-85z+80z^2/2-20(z-0)^3/6
x є [2,4): EJx*theta2(z)=Ma*z+Ra^z2/2+M1*(z-2)+q1*(z-0)^3/6=-85z+80z^2/2-10(z-2)-20(z-0)^3/6
x є [4,5): EJx*theta3(z)=Ma*z+Ra*z^2/2+M1*(z-2)+F1*(z-4)^2/2+q1*(z-0)^3/6=-85z+80z^2/2-10(z-2)+20(z-4)^2/2-20(z-0)^3/6
x є [5,6): EJx*theta4(z)=Ma*z+Ra*z^2/2+M1*(z-2)+F1*(z-4)^2/2+q1*(z-0)^3/6-q1*(z-5)^3/6=-85z+80z^2/2-10(z-2)+20(z-4)^2/2-20(z-0)^3/6+20(z-5)^3/6
x є [6,8): EJx*theta5(z)=Ma*z+Ra*z^2/2+M1*(z-2)+M2*(z-6)+F1*(z-4)^2/2+F2*(z-6)^2/2+q1*(z-0)^3/6-q1*(z-5)^3/6=-85z+80z^2/2-10(z-2)+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*theta6(z)=Ma*z+Ra*z^2/2+M1*(z-2)+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=-85z+80z^2/2-10(z-2)+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')
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|= 75.2456 мм
достигается при z= 10.00 м


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

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

Литература

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