function flex(forze,lung,reazioni)
i=0;nFor=evalin('base','numeroforze');
Vettori(1,:)=[0 reazioni(1) 0 0];
for i=3:nFor+2
Vettori(i-1,:)=[forze(i-2,:)];
end
Vettori(nFor+2,:)=[0 reazioni(2) lung 0];
assignin('base','Vettori',Vettori);
nVet=nFor+2;
% Crea un vettore distanze che verr poi usato come insieme di bracci di
% ogni forza
a=0;
for k=nVet-1:-1:2
a=Vettori(k,3)-Vettori(k-1,3);
d(k)=[a];
end
d=d';
for i=1:size(d)-1
d(i)=d(i+1);
end
assignin('base','Distanze',d);
% Crea un vettore di forze comprendendo anche le reazioni vincolari
F(1)=[reazioni(1)];
for i=3:nFor+2
F(i-1)=[forze(i-2,2)];
end
F(nFor+2)=[reazioni(2)];
F=F';
assignin('base','F',F);
for i=1:nFor
Fn(i)=i;
end
% Seleziona in base al numero di forze il calcolo da effettuare chiamando
% felx1
if nFor==1
M(1)=-F(1)*d(1);
elseif nFor==2
M(1)=-F(1)*d(1);
M(2)=-(F(2)*d(2)+F(1)*(d(1)+d(2)));
elseif nFor>2
M(1)=-F(1)*d(1);
M(2)=-(F(2)*d(2)+F(1)*(d(1)+d(2)));
b=0;
for i=2:nFor
b=Fn(i)+b;
end
[N]= flex1(d,F,nFor,b);
k=3;x=2;
for i=1:nFor-2
x=x+1;
for j=1:x
C(i,j)=-F(j)*N(k);
k=k+1;
end
end
k=3;
for i=1:size(C,1)
n=0;
for j=1:size(C,2)
n=C(i,j)+n;
end
M(k)=n;
k=k+1;
end
end
j=0;M=M';
% Scrive le coordinate appena trovate dei momenti in un vettore di punti
% del tipo P(x,y) per poi plottare il grafico del momento in ogni pezzo di
% albero
PM(1,:)=[0 0];k=2;
for i=2:nFor+1
PM(i,:)=[Vettori(k,3) M(k-1)];
k=k+1;
end
PM(i+1,:)=[lung 0];
assignin('base','PuntiFlett',PM);
% Finalmente disegna il diagramma del momento flettente
for i=1:nVet-1
x1=PM(i,1); y1=PM(i,2);
x2=PM(i+1,1); y2=PM(i+1,2);
flettente=line([x1 x2], [y1 y2],'marker','.','Color','b');
text(PM(i,1),PM(i,2),[num2str(PM(i,2)),'Nm']);
end
maxM=max(PM(:,2))*1.1; minM=min(PM(:,2))*1.1;
if maxM==0
maxM=50;
elseif minM==0
minM=-50;
end
text(PM(1,1),PM(1,2),[num2str(PM(1,2)),'Nm']);
text(PM(nVet,1),PM(nVet,2),[num2str(PM(nVet,2)),'Nm']);
ylabel('Momento Flettente in Nm'); xlabel('Lunghezza dell''albero in mm');
axis ([-lung/10 1.1*lung minM maxM]);