У меня есть массив
ssmat= [ 10 9 7 6 3 2 1 0;
0 20 5 0 0 15 10 0;
0 10 0 0 15 0 0 0;
10 0 10 10 10 0 0 0]
ssmatl = логический (ssmat)
ssmatl=[ 1 1 1 1 1 1 1 0;
0 1 1 0 0 1 1 0;
0 1 0 0 1 0 0 0;
1 0 1 1 1 0 0 0]
Первая строка ssmat указывает расстояние от источника. И четвертая строка, с которой в настоящее время ведется работа, сообщает размер равномерно распределенной нагрузки.
Например: если смотреть слева направо, так как ssmat (4,1) ~ = 0, это означает, что ssmat ( 1,1) - это точка, в которой начинается нагрузка, а ближайшая ненулевая величина в четвертом ряду - это место, где она заканчивается (ssmat (4,3)), фактическим значением является величина нагрузки (10). В этом случае есть две равномерно распределенные нагрузки от ssmat (4,1) до ssmat (4,3) и от ssmat (4,4) до ssmat (4,5).
См. Изображение
Я пытаюсь вычислить изгибающий момент, вызванный этими силами в разных частях балки. В этом случае есть 14 точек (Pp = 14), Pp = 2 * (длина (ssmat) -2).
Точки расположены так:
см. Изображение
см. Изображение
Изгибающий момент в точке P рассчитывается следующим образом:
см. Схему расчета
M = величина силы * l * (l / 2 + d)
В точке P, где имеется несколько нагрузок:
см. Схему расчета
M = величина силы1 * l1 * (l1 / 2 + d1) + величина силы2 * l2 * (l2 / 2 + d2).
Если точка P было между началом и концом нагрузки:
см. схему расчета
M = величина силы1 * l1 * (l1 / 2) + величина force2 * l2 * (l2 / 2 + d2).
Мне удалось написать скрипт, который работает до пятой точки, после чего он становится сложнее и в настоящее время просто разваливается. Любые советы и предложения будут с благодарностью.
Надеюсь, мне удалось четко объяснить ситуацию. Не стесняйтесь задавать любые вопросы.
Ссылка на MatLab ответы на пост с изображениями
if Pp==14
for i=1
if sum(ssmatl(4,1:2))==0
mg1=0;
mg2=0;
mg3=0;
elseif sum(ssmatl(4,1:2))==1 && ssmat(4,i)==0
mg1=0;
mg2=0;
mg3=mg2;
elseif sum(ssmatl(4,1:2))==1 && ssmat(4,i)~=0
mg1=0;
mg2=ssmat(4,1)*abs(ssmat(1,2)-ssmat(1,1))*abs((ssmat(1,2)-ssmat(1,1))/2);
mg3=mg2;
elseif sum(ssmatl(4,1:2))==2
mg1=0;
mg2=ssmat(4,1)*abs(ssmat(1,2)-ssmat(1,1))*abs((ssmat(1,2)-ssmat(1,1))/2);
mg3=mg2;
end
end
for i=3:-1:1
for j=2:-1:1
if sum(ssmatl(4,1:3))==0
mg4=0;
mg5=0;
elseif sum(ssmatl(4,1:3))==1 && ssmat(4,i)~=0
mg4=ssmat(4,i)*abs(ssmat(1,3)-ssmat(1,i))*abs((ssmat(1,3)-ssmat(1,i))/2);
mg5=mg4;
elseif sum(ssmatl(4,1:3))==2 && ssmat(4,i)==ssmat(4,j) && i~=j
mg4=ssmat(4,i)*abs(ssmat(1,i)-ssmat(1,j))*abs(((ssmat(1,i)-ssmat(1,j))/2)+(ssmat(1,3)-ssmat(1,i)))
mg5=mg4;
elseif sum(ssmatl(4,1:3))==3
mg4=ssmat(4,1)*abs(ssmat(1,2)-ssmat(1,1))*abs(((ssmat(1,2)-ssmat(1,1))/2)+(ssmat(1,3)-ssmat(1,2)));
mg5=mg4;
end
end
end
for i=4:-1:1
for j=3:-1:1
for k=2:-1:1
if sum(ssmatl(4,1:4))==0
mg6=0;
mg7=mg6;
elseif sum(ssmatl(4,1:4))==1 && ssmat(4,i)~=0
mg6=ssmat(4,i)*abs(ssmat(1,4)-ssmat(1,i))*abs((ssmat(1,4)-ssmat(1,i))/2);
mg7=mg6;
elseif sum(ssmatl(4,1:4))==2 && ssmat(4,i)==ssmat(4,j) && i~=j
mg6=ssmat(4,i)*abs(ssmat(1,i)-ssmat(1,j))*abs(((ssmat(1,i)-ssmat(1,j))/2)+(ssmat(1,4)-ssmat(1,i)));
mg7=mg6;
elseif sum(ssmatl(4,1:4))==3 && ssmat(4,4)==0
mg6=(ssmat(4,1)*abs(ssmat(1,2)-ssmat(1,1))*abs(((ssmat(1,2)-ssmat(1,1))/2)+(ssmat(1,4)-ssmat(1,2))))+(ssmat(4,3)*abs(ssmat(1,4)-ssmat(1,3))*abs(((ssmat(1,4)-ssmat(1,3))/2)));
mg7=mg6;
elseif sum(ssmatl(4,1:4))==3 && ssmat(4,j)==ssmat(4,k) && j~=k
mg6=ssmat(4,j)*abs(ssmat(1,j)-ssmat(1,k))*abs(((ssmat(1,j)-ssmat(1,k))/2)+(ssmat(1,4)-ssmat(1,j)));
mg7=mg6;
end
end
end
end
for i=5:-1:1
for j=4:-1:1
for k=1:4
for l=2:-1:1
if sum(ssmatl(4,1:5))==0
mg8=0;
mg9=mg8;
elseif sum(ssmatl(4,1:5))==1 && ssmat(4,i)~=0
mg8=ssmat(4,i)*abs(ssmat(1,5)-ssmat(1,i))*abs((ssmat(1,5)-ssmat(1,i))/2);
mg9=mg8;
elseif sum(ssmatl(4,1:5))==2 && ssmat(4,i)==ssmat(4,j) && i~=j
mg8=ssmat(4,i)*abs(ssmat(1,i)-ssmat(1,j))*abs(((ssmat(1,i)-ssmat(1,j))/2)+(ssmat(1,4)-ssmat(1,i)));
mg9=mg8;
elseif sum(ssmatl(4,1:5))==3 && ssmat(4,
mg8=(ssmat(4,1)*abs(ssmat(1,2)-ssmat(1,1))*abs(((ssmat(1,2)-ssmat(1,1))/2)+(ssmat(1,4)-ssmat(1,2))))+(ssmat(4,3)*abs(ssmat(1,4)-ssmat(1,3))*abs(((ssmat(1,4)-ssmat(1,3))/2)));
mg9=mg8;
elseif sum(ssmatl(4,1:4))==3 && ssmat(4,j)==ssmat(4,k) && j~=k
mg8=ssmat(4,j)*abs(ssmat(1,j)-ssmat(1,k))*abs(((ssmat(1,j)-ssmat(1,k))/2)+(ssmat(1,4)-ssmat(1,j)));
mg9=mg8;