Sistemas de comunicacion 4ta edicion - bruce a. carlson solutions manual
MATLAB Program for Beam Analysis
1. CODIFICACIÓN DEL PROGRAMA EN MATLAB PARA LA SOLUCIÓN DE VIGAS DE “N”
TRAMOS POR EL MÉTODO DE LA RIGIDEZ:
function VIGARIGIDEZ
%%%%% ingreso de datos
clc
node=input ('INGRESE LAS COORDENADAS DE CADA NUDO [#n cx cy] =')
memb=input ('INGRESE MIEMBROS [#m ni nj prop(i)] =')
rest=input ('INGRESE RESTRICCIONES DE CADA NUDO [#n ry rz] =')
prop=input ('INGRESE PROPIEDADES DE CADA MIEMBRO [#m E I] =')
nlc=input ('INGRESE CARGAS CONCENTRADAS EN NUDOS [#n Fy Mz] =')
mlc=input ('INGRESE CARGAS CONCENTRADAS EN MIEMBROS [#m Fy Mz d1 d2] =')
mld=input ('INGRESE CARGAS DISTRIBUIDAS EN MIEMBROS [#m w1 w2 d1 d2] =')
%longitud
nn=size(node);
n=nn(1,1);
L=zeros(1,1,1);
for i=1:n-1
L(:,:,i)=((node(memb(i,2),2)-node(memb(i,3),2))^2+...
(node(memb(i,2),3)-node(memb(i,3),3))^2)^.5;
end
L=L(:);
%restricciones
r=zeros(2*n,1);
tp=size(rest);
pt=tp(1,1);
for i=1:pt
tp=rest(i,1);
r(2*tp-1,1)=rest(i,2);
r(2*tp,1)=rest(i,3);%r:es la lista de restricciones
end
r;
t=0;
rc=zeros(1,1);
for i=1:2*n;
rc(i,1)=r(i,1)+t;
t=rc(i,1); %rc:es rest cumu
end
%EI
EI=zeros(n-1,1);
for i=1:n-1
k=memb(i,4);
EI(i)=prop(k,2)*prop(k,3);
end
EI;
%matriz miembro
SM=zeros(4,4,1);
for i=1:n-1;
SM(:,:,i)=(EI(i)/L(i)^3)*[12 6*L(i) -12 6*L(i);...
6*L(i) 4*L(i)^2 -6*L(i) 2*L(i)^2;...
-12 -6*L(i) 12 -6*L(i);...
6*L(i) 2*L(i)^2 -6*L(i) 4*L(i)^2];
end
SM;
%matriz total de nudo
N=2*n-sum(r);
SJ=zeros(2*n,1);
for i=1:n-1;
j1=2*i-1;j2=2*i;k1=2*i+1;k2=2*i+2;
if r(j1,1)==0
j1=j1-rc(j1,1);
else
j1=N+rc(j1,1);
2. end
if r(j2,1)==0
j2=j2-rc(j2,1);
else
j2=N+rc(j2,1);
end
if r(k1,1)==0
k1=k1-rc(k1,1);
else
k1=N+rc(k1,1);
end
if r(k2,1)==0
k2=k2-rc(k2,1);
else
k2=N+rc(k2,1);
end
if r(2*i-1,1)==0;
SJ(j1,j1)=SJ(j1,j1)+SM(1,1,i);
SJ(j2,j1)=SJ(j2,j1)+SM(2,1,i);
SJ(k1,j1)=SM(3,1,i);
SJ(k2,j1)=SM(4,1,i);
end
if r(2*i,1)==0;
SJ(j1,j2)=SJ(j1,j2)+SM(1,2,i);
SJ(j2,j2)=SJ(j2,j2)+SM(2,2,i);
SJ(k1,j2)=SM(3,2,i);
SJ(k2,j2)=SM(4,2,i);
end
if r(2*i+1,1)==0;
SJ(j1,k1)=SM(1,3,i);
SJ(j2,k1)=SM(2,3,i);
SJ(k1,k1)=SJ(k1,k1)+SM(3,3,i);
SJ(k2,k1)=SJ(k2,k1)+SM(4,3,i);
end
if r(2*i+2,1)==0;
SJ(j1,k2)=SM(1,4,i);
SJ(j2,k2)=SM(2,4,i);
SJ(k1,k2)=SJ(k1,k2)+SM(3,4,i);
SJ(k2,k2)=SJ(k2,k2)+SM(4,4,i);
end
end
SJ;%matrizdenudototal
%cargas en los miembros
%(member load concenter)==%mlc
%AML1(cargaputual+momento);aplicable a cualquier # de carga por miembro
%[#m FY Fz d1 d2] ojoj
lc=size(mlc);
cl=lc(1,1);
AML1=zeros(n-1,4);
for i=1:cl;
temp=mlc(i,1);
p=mlc(i,2);ap=mlc(i,4);bp=L(temp)-ap;
map=p*ap*bp^2/L(temp)^2;mbp=-p*ap^2*bp/L(temp)^2;
rap=p*bp^2*(3*ap+bp)/L(temp)^3;rbp=p*ap^2*(ap+3*bp)/L(temp)^3;
M=mlc(i,3);am=mlc(i,4);bm=L(temp,1)-am;
mam=M*bm*(2*am-bm)/L(temp)^2;mbm=M*am*(2*bm-am)/L(temp)^2;
ram=6*M*am*bm/L(temp)^3;rbm=-ram;
AML1(temp,1)=AML1(temp,1)+rap+ram;
3. AML1(temp,2)=AML1(temp,2)+map+mam;
AML1(temp,3)=AML1(temp,3)+rbp+rbm;
AML1(temp,4)=AML1(temp,4)+mbp+mbm;
end
clear('lc','cl','temp','map','mbp','mam','mbm','rap','rbp','rap','ram');AML1;
%(member loadZ)==%mld
%AML2(carga distribuida);aplicable a cualquier # de carga dist por miembro
lc=size(mld);
cl=lc(1,1);
AML2=zeros(n-1,4);
for i=1:cl;
temp=mld(i,1);
w=mld(i,2);p=mld(i,5)-mld(i,4);
ma=w*p^2/12;mb=-ma;
ra=w*p/2;rb=w*p/2;
AML2(temp,1)=AML2(temp,1)+ra;
AML2(temp,2)=AML2(temp,2)+ma;
AML2(temp,3)=AML2(temp,3)+rb;
AML2(temp,4)=AML2(temp,4)+mb;
end
clear('lc','cl','temp','ma','mb');AML2;
%%%%%%%%%%%%%%%
AML=AML1+AML2;
%%%%%%%%%%%%%%%
%cargas en los nudos (nlc:nodal load concenter)
%[#n Fy Mz]
lc=size(nlc);
cl=lc(1,1);
A=zeros(2*n,1);
for i=1:cl;
temp=nlc(i,1);
A(2*temp-1,1)=nlc(i,2);
A(2*temp,1)=nlc(i,3);
end
clear('temp','lc','cl');A;
%matriz carga de nudo equivalente
AE=zeros(2*n,1);
for i=1:n-1;
AE(2*i-1,1)=AE(2*i-1,1)-AML(i,1);
AE(2*i,1)=AE(2*i,1)-AML(i,2);
AE(2*i+1,1)=AE(2*i+1,1)-AML(i,3);
AE(2*i+2,1)=AE(2*i+2,1)-AML(i,4);
end
AE;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%carga de nudo combinada
AC=AE*0;
for i=1:2*n;
if r(i,1)==0;
q=i-rc(i,1);
else
q=N+rc(i,1);
end
AC(q,1)=A(i,1)+AE(i,1);
end
AC;%ok carga de nudo combinada y ordenada
%%%%%%%RESULTADOS%%%%%%%%%
AD=AC(1:N,1);ARL=-1*AC(N+1:2*n,1);
S=SJ(1:N,1:N);SRD=SJ(N+1:2*n,1:N);
D=inv(S)*AD;%desplazamientos de nudos
4. AR=ARL+SRD*D;%reacciones en nudos
%%%%%%%%%Ordenando desplazamientos%%%%%%%%%
DJ=zeros(2*n,1);
j=0;kk=0;
for i=1:2*n;
j=j+1;
if r(i)==0;
kk=kk+1;
DJ(j)=D(kk);
end
end
DJ;
AM=zeros(1,4);
for i=1:n-1;
j1=2*i-1;j2=2*i;k1=2*i+1;k2=2*i+2;
kk1=4*EI(i)/L(i);kk2=1.5*kk1/L(i);kk3=2*kk2/L(i);
AM(i,1)=AML(i,1)+kk3*(DJ(j1)-DJ(k1))+kk2*(DJ(j2)+DJ(k2));
AM(i,2)=AML(i,2)+kk2*(DJ(j1)-DJ(k1))+kk1*(DJ(j2)+DJ(k2)/2);
AM(i,3)=AML(i,3)-kk3*(DJ(j1)-DJ(k1))-kk2*(DJ(j2)+DJ(k2));
AM(i,4)=AML(i,4)+kk2*(DJ(j1)-DJ(k1))+kk1*(DJ(j2)/2+DJ(k2));
end
clc
disp('---------------------------------------------------------------')
disp('--------PROGRAMA PARA LA SOLUCIÓN DE VIGAS DE N TRAMOS---------')
disp('---------------------------------------------------------------')
disp('-------UNIVERSIDAD NACIONAL DE SAN CRISTÓBAL DE HUAMANGA-------')
disp('------- FACULTAD DE INGENIERÍA DE MINAS GEOLOGÍA Y CIVIL-------')
disp('------ESCUELA DE FORMACIÓN PROFESIONAL DE INGENIERÍA CIVIL-----')
disp('---------------CURSO: ANÁLISIS ESTRUCTURAL II ----------------')
disp('----------------------SIGLA: IC - 444 ------------------------')
disp('----------------ALUMNO: BOLÍVAR ORÉ LUIS PAVEL-----------------')
disp('---------DOCENTE DEL CURSO: ING. RUBÉN YACHAPA CONDEÑA---------')
disp('')
disp('-------------------------RESULTADOS----------------------------')
disp('MATRIZ DE DESPLAZAMIENTOS:')
disp(DJ)
disp('MATRIZ DE REACCIONES:')
disp(AR)
disp('MATRIZ DE ACCIONES DE MIEMBRO:')
disp(AM)
%rptas en coordenadas globales
5. CODIFICACIÓN DEL PROGRAMA EN MATLAB PARA LA SOLUCIÓN DE ARMADURAS POR EL
MÉTODO DE LA RIGIDEZ:
function ARMADURA
disp('ingrese');
node=input('coordenadas:[#n cx cy]=');
disp('ingrese');
memb=input('miembros:[#n ni nj prop.]');
disp('ingrese');
rest=input('restricciones:[#n resX resY]');
disp('ingrese');
prop=input('propiedades:[#prop A E]');
disp('ingrese');
nlc=input('Cargas en Nudos:[#n Fx(+)> Fy(+)^]');
disp('ingrese');
mlc=input('Cargas Concentradas en miembro:[#m Fx< Fy! Mz d]');
disp('ingrese');
mld=input('cargas distribuidas en miembro:[#m w1 w2 d1 d2]');
%longitud
nn=size(node);
n=nn(1,1);
mm=size(memb);
m=mm(1,1);
L=zeros(1,1,1);
for i=1:m
L(:,:,i)=((node(memb(i,2),2)-node(memb(i,3),2))^2+...
(node(memb(i,2),3)-node(memb(i,3),3))^2)^.5;
end
L=L(:);
%cosenos directores
cx=zeros(1,1);
cy=zeros(1,1);
for i=1:m;
cx(i,1)=(node(memb(i,3),2)-node(memb(i,2),2))/L(i);
cy(i,1)=(node(memb(i,3),3)-node(memb(i,2),3))/L(i);
end
cx;
cy;
%restriccionesº
r=zeros(2*n,1);
tp=size(rest);
pt=tp(1,1);
for i=1:pt
tp=rest(i,1);
r(2*tp-1,1)=rest(i,2);
r(2*tp,1)=rest(i,3);%r:es la lista de restricciones
end
r;
t=0;
rc=zeros(1,1);
for i=1:2*n;
rc(i,1)=r(i,1)+t;
t=rc(i,1); %rc:es rest cumu
end
%EA
EA=zeros(n-1,1);
for i=1:m
k=memb(i,4);
EA(i)=prop(k,2)*prop(k,3);
end
EA;
%matriz miembro
SMD=zeros(4,4,1);
6. for i=1:m;
SMD(:,:,i)=(EA(i)/L(i))*[cx(i,1)^2 cx(i,1)*cy(i,1) -cx(i,1)^2
-cx(i,1)*cy(i,1);...
cx(i,1)*cy(i,1) cy(i,1)^2 -cx(i,1)*cy(i,1)
-cy(i,1)^2;...
-cx(i,1)^2 -cx(i,1)*cy(i,1) cx(i,1)^2
cx(i,1)*cy(i,1);...
-cx(i,1)*cy(i,1) -cy(i,1)^2 cx(i,1)*cy(i,1)
cy(i,1)^2];
end
SMD
%matriz total de nudo
N=2*n-sum(r);
SJ=zeros(2*n,2*n);
for i=1:m;
j1=2*memb(i,2)-1;j2=2*memb(i,2);k1=2*memb(i,3)-1;k2=2*memb(i,3);
if r(j1,1)==0
j1=j1-rc(j1,1);
else
j1=N+rc(j1,1);
end
if r(j2,1)==0
j2=j2-rc(j2,1);
else
j2=N+rc(j2,1);
end
if r(k1,1)==0
k1=k1-rc(k1,1);
else
k1=N+rc(k1,1);
end
if r(k2,1)==0
k2=k2-rc(k2,1);
else
k2=N+rc(k2,1);
end
if r(2*memb(i,2)-1,1)==0;
SJ(j1,j1)=SJ(j1,j1)+SMD(1,1,i);
SJ(j2,j1)=SJ(j2,j1)+SMD(2,1,i);
SJ(k1,j1)=SMD(3,1,i);
SJ(k2,j1)=SMD(4,1,i);
end
if r(2*memb(i,2),1)==0;
SJ(j1,j2)=SJ(j1,j2)+SMD(1,2,i);
SJ(j2,j2)=SJ(j2,j2)+SMD(2,2,i);
SJ(k1,j2)=SMD(3,2,i);
SJ(k2,j2)=SMD(4,2,i);
end
if r(2*memb(i,3)-1,1)==0;
SJ(j1,k1)=SMD(1,3,i);
SJ(j2,k1)=SMD(2,3,i);
SJ(k1,k1)=SJ(k1,k1)+SMD(3,3,i);
SJ(k2,k1)=SJ(k2,k1)+SMD(4,3,i);
end
if r(2*memb(i,3),1)==0;
SJ(j1,k2)=SMD(1,4,i);
SJ(j2,k2)=SMD(2,4,i);
SJ(k1,k2)=SJ(k1,k2)+SMD(3,4,i);
SJ(k2,k2)=SJ(k2,k2)+SMD(4,4,i);
end
end
SJ;%matrizdenudototal
7. lc=size(mlc);
cl=lc(1,1);
AML1=zeros(m,4);
if mlc==0*mlc
AML1=AML1;
else
for i=1:cl;
temp=mlc(i,1);
Ai=mlc(i,2:4)';
a=mlc(i,5);b=L(temp)-a;
TML=[b/L(temp) 0 0;0 b/L(temp) 1/L(temp);a/L(temp) 0 0;0 a/L(temp) -1/L(temp)];
AMi=TML*Ai;
AML1(temp,:)=AML1(temp,:)+AMi';
end
end
clear('lc','temp','map','mbp','mam','mbm','rap','rbp','rap','ram');AML1;
lc=size(mld);
cl=lc(1,1);
AML2=zeros(m,4);
if mld==0*mld
AML2=AML2
else
for i=1:cl;
temp=mld(i,1);
w1=mld(i,2);w2=mld(i,3);d1=mld(i,4);d2=mld(i,5);
c=d2-d1;xc=(d2-d1)*(2*w1+w2)/(3*(w1+w2));b=L(temp)-d1-c;
ra=(w1+w2)*c/2*(xc+b)/L(temp);rb=(w1+w2)*c/2-ra;
%AML2(temp,1)=AML2(temp,1)+ra;
AML2(temp,2)=AML2(temp,2)+ra;
%AML2(temp,3)=AML2(temp,3)+rb;
AML2(temp,4)=AML2(temp,4)+rb;
end
end
clear('lc','cl','temp','ma','mb');AML2;
%%%%%%%%%%%%%%%
AML=AML1+AML2;
%%%%%%%%%%%%%%%
%[#n Fx Fy]
lc=size(nlc);
cl=lc(1,1);
A=zeros(2*n,1);
for i=1:cl;
temp=nlc(i,1);
A(2*temp-1,1)=nlc(i,2);
A(2*temp,1)=nlc(i,3);
end
clear('temp','lc','cl');A;
%matriz carga de nudo equivalente;
AE=zeros(2*n,1);
for i=1:m;
j1=2*memb(i,2)-1;j2=2*memb(i,2);k1=2*memb(i,3)-1;k2=2*memb(i,3);
AE(j1,1)=AE(j1,1)-AML(i,1)*cx(i)+AML(i,2)*cy(i);
AE(j2,1)=AE(j2,1)-AML(i,1)*cy(i)-AML(i,2)*cx(i);
AE(k1,1)=AE(k1,1)-AML(i,3)*cx(i)+AML(i,4)*cy(i);
AE(k2,1)=AE(k2,1)-AML(i,3)*cy(i)-AML(i,4)*cx(i);
end
8. AE;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%carga de nudo combinada
AC=AE*0;
for i=1:2*n;
if r(i,1)==0;
q=i-rc(i,1);
else
q=N+rc(i,1);
end
AC(q,1)=A(i,1)+AE(i,1);
end
AC;%ok carga de nudo combinada y ordenada
%%%%%%%%%%%%%%%%%%RESULTADOS%%%%%%%%%%%%%%%%
AD=AC(1:N,1);ARL=-1*AC(N+1:2*n,1);
S=SJ(1:N,1:N);SRD=SJ(N+1:2*n,1:N);
D=inv(S)*AD;%desplazamientos de nudos
AR=ARL+SRD*D;%reacciones en nudos
%%%%%%%%%Ordenando desplazamientos%%%%%%%%%%%%%%%%%55
DJ=zeros(2*n,1);
j=0;kk=0;
for i=1:2*n;
j=j+1;
if r(i)==0;
kk=kk+1;
DJ(j)=D(kk);
end
end
DJ ;
%%%%%%ACCIONES DE MIEMBRO%%%%%%%%%%%%%%%%%%
AM=zeros(1,4);
for i=1:m
j1=2*memb(i,2)-1;j2=2*memb(i,2);k1=2*memb(i,3)-1;k2=2*memb(i,3);
kk=EA(i)/L(i);
AM(i,1)=AML(i,1)+kk*((DJ(j1)-DJ(k1))*cx(i)+(DJ(j2)-DJ(k2))*cy(i));
AM(i,2)=AML(i,2);
AM(i,3)=AML(i,3)-kk*((DJ(j1)-DJ(k1))*cx(i)+(DJ(j2)-DJ(k2))*cy(i));
AM(i,4)=AML(i,4);
end
AM;%rptas en coordenadas globales
clc
disp('------------------------------------------------------')
disp('----------------------RESULTADOS----------------------')
disp('------------------------------------------------------')
disp('Matriz desplazamientos')
disp(DJ)
disp('Matriz de Reacciones')
disp(AR)
disp('Matriz de Acciones de Miembro')
disp(AM)
9. CODIFICACIÓN DEL PROGRAMA EN MATLAB PARA LA SOLUCIÓN DE PÓRTICOS EN DOS
DIMENSIONES POR EL MÉTODO DE LA RIGIDEZ:
function PORTICO2D
disp('ingrese');
node=input('coordenadas:[#n cx cy]=');
disp('ingrese');
memb=input('miembros:[#n ni nj prop.]=');
disp('libre=0 retringido=1');
disp('ingrese');
rest=input('restricciones:[#n resX resY resZ]=');
disp('ingrese');
prop=input('propiedades:[#prop A E I]=');
disp('ingrese');
nlc=input('Cargas en Nudos:[#n Fx(+)> Fy(+)^ Fz]=');
disp('ingrese');
mlc=input('Cargas Concentradas en miembro:[#m Fx< Fy! Mz d]=');
disp('ingrese');
mld=input('cargas distribuidas en miembro:[#m w1 w2 d1 d2]=');
%longitud
nn=size(node);
n=nn(1,1);
mm=size(memb);
m=mm(1,1);
L=zeros(1,1);
for i=1:m
L(i,1)=((node(memb(i,2),2)-node(memb(i,3),2))^2+...
(node(memb(i,2),3)-node(memb(i,3),3))^2)^.5;
end
L;
%cosenos directores
cx=zeros(1,1);
cy=zeros(1,1);
for i=1:m;
cx(i,1)=(node(memb(i,3),2)-node(memb(i,2),2))/L(i);
cy(i,1)=(node(memb(i,3),3)-node(memb(i,2),3))/L(i);
end
%matrices de rotacion de miembro
R=zeros(3,3,1);
for i=1:m
R(1,1,i)=cx(i);R(1,2,i)=cy(i);
R(2,1,i)=-cy(i);R(2,2,i)=cx(i);R(3,3,i)=1;
end
%restricciones
r=zeros(3*n,1);
tp=size(rest);
pt=tp(1,1);
for i=1:pt
tp=rest(i,1);
r(3*tp-2,1)=rest(i,2);
r(3*tp-1,1)=rest(i,3);%r:es la lista de restricciones
r(3*tp,1)=rest(i,4);
end
t=0;
rc=zeros(1,1);
for i=1:3*n;
rc(i,1)=r(i,1)+t;
t=rc(i,1); %rc:es rest cumu
end
rc;
%EA
EA=zeros(m,1);
EI=zeros(m,1);
10. for i=1:m
k=memb(i,4);
EA(i)=prop(k,3)*prop(k,2);
EI(i)=prop(k,3)*prop(k,4);
end
EA
EI
%matriz miembro
SM=zeros(6,6,1);
for i=1:m;
SM(:,:,i)=[EA(i)/L(i) 0 0 -EA(i)/L(i) 0 0;...
0 12*EI(i)/L(i)^3 6*EI(i)/L(i)^2 0 -12*EI(i)/L(i)^3 6*EI(i)/L(i)^2;...
0 6*EI(i)/L(i)^2 4*EI(i)/L(i) 0 -6*EI(i)/L(i)^2 2*EI(i)/L(i);...
-EA(i)/L(i) 0 0 EA(i)/L(i) 0 0;...
0 -12*EI(i)/L(i)^3 -6*EI(i)/L(i)^2 0 12*EI(i)/L(i)^3
-6*EI(i)/L(i)^2;...
0 6*EI(i)/L(i)^2 2*EI(i)/L(i) 0 -6*EI(i)/L(i)^2 4*EI(i)/L(i)];
end
SM;
%matriz miembro en coordendas globales
ze=zeros(3,3);
SMD=zeros(6,6,1);
for i=1:m
RT=R(:,:,i);
RT=[RT ze;ze RT];
SMD(:,:,i)=RT'*SM(:,:,i)*RT;
end
SMD;
%matriz total de nudo
N=3*n-sum(r);
SJ=zeros(3*n,3*n);
for i=1:m;
j1=3*memb(i,2)-2;j2=3*memb(i,2)-1;j3=3*memb(i,2);
k1=3*memb(i,3)-2;k2=3*memb(i,3)-1;k3=3*memb(i,3);
if r(j1,1)==0
j1=j1-rc(j1,1);
else
j1=N+rc(j1,1);
end
if r(j2,1)==0
j2=j2-rc(j2,1);
else
j2=N+rc(j2,1);
end
if r(j3,1)==0
j3=j3-rc(j3,1);
else
j3=N+rc(j3,1);
end
if r(k1,1)==0
k1=k1-rc(k1,1);
else
k1=N+rc(k1,1);
end
if r(k2,1)==0
k2=k2-rc(k2,1);
else
k2=N+rc(k2,1);
end
11. if r(k3,1)==0
k3=k3-rc(k3,1);
else
k3=N+rc(k3,1);
end
if r(j1,1)==0;
SJ(j1,j1)=SJ(j1,j1)+SMD(1,1,i);
SJ(j2,j1)=SJ(j2,j1)+SMD(2,1,i);
SJ(j3,j1)=SJ(j3,j1)+SMD(3,1,i);
SJ(k1,j1)=SMD(4,1,i);
SJ(k2,j1)=SMD(5,1,i);
SJ(k3,j1)=SMD(6,1,i);
end
if r(j2,1)==0;
SJ(j1,j2)=SJ(j1,j2)+SMD(1,2,i);
SJ(j2,j2)=SJ(j2,j2)+SMD(2,2,i);
SJ(j3,j2)=SJ(j3,j2)+SMD(3,2,i);
SJ(k1,j2)=SMD(4,2,i);
SJ(k2,j2)=SMD(5,2,i);
SJ(k3,j2)=SMD(6,2,i);
end
if r(j3,1)==0;
SJ(j1,j3)=SJ(j1,j3)+SMD(1,3,i);
SJ(j2,j3)=SJ(j2,j3)+SMD(2,3,i);
SJ(j3,j3)=SJ(j3,j3)+SMD(3,3,i);
SJ(k1,j3)=SMD(4,3,i);
SJ(k2,j3)=SMD(5,3,i);
SJ(k3,j3)=SMD(6,3,i);
end
if r(k1,1)==0;
SJ(j1,k1)=SMD(1,4,i);
SJ(j2,k1)=SMD(2,4,i);
SJ(j3,k1)=SMD(3,4,i);
SJ(k1,k1)=SJ(k1,k1)+SMD(4,4,i);
SJ(k2,k1)=SJ(k2,k1)+SMD(5,4,i);
SJ(k3,k1)=SJ(k3,k1)+SMD(6,4,i);
end
if r(k2,1)==0;
SJ(j1,k2)=SMD(1,5,i);
SJ(j2,k2)=SMD(2,5,i);
SJ(j3,k2)=SMD(3,5,i);
SJ(k1,k2)=SJ(k1,k2)+SMD(4,5,i);
SJ(k2,k2)=SJ(k2,k2)+SMD(5,5,i);
SJ(k3,k2)=SJ(k3,k2)+SMD(6,5,i);
end
if r(k3,1)==0;
SJ(j1,k3)=SMD(1,6,i);
SJ(j2,k3)=SMD(2,6,i);
SJ(j3,k3)=SMD(3,6,i);
SJ(k1,k3)=SJ(k1,k3)+SMD(4,6,i);
SJ(k2,k3)=SJ(k2,k3)+SMD(5,6,i);
SJ(k3,k3)=SJ(k3,k3)+SMD(6,6,i);
end
end
SJ;%matrizdenudototal
lc=size(mlc);
cl=lc(1,1);
AML1=zeros(m,6);
if mlc==0*mlc
AML1=AML1;
else
12. for i=1:cl;
temp=mlc(i,1);
Ai=mlc(i,2:4)';
a=mlc(i,5);b=L(temp)-a;
TML=[ b/L(temp) 0 0;...
0 b^2*(3*a+b)/L(temp)^3 6*a*b/L(temp)^3;...
0 a*b^2/L(temp)^2 b*(2*a-b)/L(temp)^2;...
a/L(temp) 0 0;...
0 a^2*(a+3*b)/L(temp)^3 -6*a*b/L(temp)^3;...
0 -a^2*b/L(temp)^2 a*(2*b-a)/L(temp)^2];
AMi=TML*Ai;
AML1(temp,:)=AML1(temp,:)+AMi';
end
end
clear('lc','temp','map','mbp','mam','mbm','rap','rbp','rap','ram','a');AML1;
lc=size(mld);
cl=lc(1,1);
AML2=zeros(m,6);
if mld==0*mld;
AML2=AML2;
else
for i=1:cl;
temp=mld(i,1);
w1=mld(i,2);w2=mld(i,3);d1=mld(i,4);d2=mld(i,5);
q=min(w1,w2);c=L(temp)-d2;b=d2-d1;a=d1;e=c+b/2;d=a+b/2;
ma=-q*b*(b^2*(L(temp)+3*(c-a))-24*e^2*d)/(24*L(temp)^2);
ra=q*b*(4*e^2*(L(temp)+2*d)-b^2*(c-a))/(4*L(temp)^3);
mb=(ra*L(temp)-q*b*e-ma);rb=q*b-ra;
%AML2(temp,1)=AML2(temp,1)+ra;
AML2(temp,2)=AML2(temp,2)+ra %+ri;%solopara4.18-8y4.18-9
AML2(temp,3)=AML2(temp,3)+ma %+mi;%solopara4.18-8y4.18-9
AML2(temp,5)=AML2(temp,5)+rb %+rd;%solopara4.18-8y4.18-9
AML2(temp,6)=AML2(temp,6)+mb %+md;%solopara4.18-8y4.18-9
end
end
clear('lc','cl','temp','ma','mb');AML2;
%%%%%%%%%%%%%%%
AML=AML1+AML2;
%%%%%%%%%%%%%%%
%cargas en los nudos (nlc:nodal load concenter)
%[#n Fx Fy]
lc=size(nlc);
cl=lc(1,1);
A=zeros(3*n,1);
for i=1:cl;
temp=nlc(i,1);
A(3*temp-2,1)=nlc(i,2);
A(3*temp-1,1)=nlc(i,3);
A(3*temp,1)=nlc(i,4);
end
clear('temp','lc','cl');A;
%matriz carga de nudo equivalente;
AE=zeros(3*n,1);
for i=1:m;
j1=3*memb(i,2)-2;j2=3*memb(i,2)-1;j3=3*memb(i,2);
k1=3*memb(i,3)-2;k2=3*memb(i,3)-1;k3=3*memb(i,3);
AE(j1,1)=AE(j1,1)-AML(i,1)*cx(i)+AML(i,2)*cy(i);
AE(j2,1)=AE(j2,1)-AML(i,1)*cy(i)-AML(i,2)*cx(i);
13. AE(j3,1)=AE(j3,1)-AML(i,3);
AE(k1,1)=AE(k1,1)-AML(i,4)*cx(i)+AML(i,5)*cy(i);
AE(k2,1)=AE(k2,1)-AML(i,4)*cy(i)-AML(i,5)*cx(i);
AE(k3,1)=AE(k3,1)-AML(i,6);
end
AE;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%carga de nudo combinada
AC=AE*0;
for i=1:3*n;
if r(i,1)==0;
q=i-rc(i,1);
else
q=N+rc(i,1);
end
AC(q,1)=A(i,1)+AE(i,1);
end
AC;%ok carga de nudo combinada y ordenada
%%%%%%%%%%%%%%%%%%RESULTADOS%%%%%%%%%%%%%%%%
AD=AC(1:N,1);ARL=-1*AC(N+1:3*n,1)
S=SJ(1:N,1:N);SRD=SJ(N+1:3*n,1:N);
D=inv(S)*AD%desplazamientos de nudos
AR=ARL+SRD*D%reacciones en nudos
%%%%%%ACCIONES DE MIEMBRO%%%%%%%%%%%%%%%%%%
comp=zeros(3*n-N,1);
D=[D;comp];
AM=zeros(1,6);
for i=1:m
j1=3*memb(i,2)-2;j2=3*memb(i,2)-1;j3=3*memb(i,2);
k1=3*memb(i,3)-2;k2=3*memb(i,3)-1;k3=3*memb(i,3);
kk1=EA(i)/L(i);kk2=4*EI(i)/L(i);kk3=1.5*kk2/L(i);kk4=2*kk3/L(i);
AM(i,1)=AML(i,1)+kk1*((D(j1)-D(k1))*cx(i)+(D(j2)-D(k2))*cy(i));
AM(i,2)=AML(i,2)+kk4*(-(D(j1)-D(k1))*cy(i)+(D(j2)-D(k2))*cx(i))
+kk3*(D(j3)+D(k3));
AM(i,3)=AML(i,3)+kk3*(-(D(j1)-D(k1))*cy(i)+(D(j2)-D(k2))*cx(i))
+kk2*(D(j3)+D(k3)/2);
AM(i,4)=AML(i,4)+kk1*(-(D(j1)-D(k1))*cx(i)-(D(j2)-D(k2))*cy(i));
AM(i,5)=AML(i,5)+kk4*((D(j1)-D(k1))*cy(i)-(D(j2)-D(k2))*cx(i))-
kk3*(D(j3)+D(k3));
AM(i,6)=AML(i,6)+kk3*(-(D(j1)-D(k1))*cy(i)+(D(j2)-D(k2))*cx(i))
+kk2*(D(j3)/2+D(k3));
end
clc%limpia comand window
disp('----------------------RESULTADOS----------------------')
disp('Matriz desplazamientos')
disp(D)
disp('Matriz de Reacciones')
disp(AR);
disp('Matriz de Acciones de Miembro')
disp(AM);
disp ('RESPUESTAS EN COORDENADAS GLOBALES')
14. CODIFICACIÓN DEL PROGRAMA EN MATLAB PARA LA SOLUCIÓN DE PARRILAS POR EL
MÉTODO DE LA RIGIDEZ:
function parrilla
disp('ingrese');
node=input('coordenadas:[#n cx cy]=');
disp('ingrese');
memb=input('miembros:[#n ni nj prop.]=');
disp('libre=0 retringido=1');
disp('ingrese');
rest=input('restricciones:[#n resX resY resZ]=');
disp('ingrese');
prop=input('propiedades:[#prop A E I]=');
disp('ingrese');
nlc=input('Cargas en Nudos:[#n Fx(+)> Fy(+)^ Fz]=');
disp('ingrese');
mlc=input('Cargas Concentradas en miembro:[#m Fx< Fy! Mz d]=');
disp('ingrese');
mld=input('cargas distribuidas en miembro:[#m w1 w2 d1 d2]=');
%longitud
nn=size(node);
n=nn(1,1);
mm=size(memb);
m=mm(1,1);
L=zeros(1,1);
for i=1:m
L(i,1)=((node(memb(i,2),2)-node(memb(i,3),2))^2+...
(node(memb(i,2),3)-node(memb(i,3),3))^2)^.5;
end
L;
%cosenos directores
cx=zeros(1,1);
cy=zeros(1,1);
for i=1:m;
cx(i,1)=(node(memb(i,3),2)-node(memb(i,2),2))/L(i);
cy(i,1)=(node(memb(i,3),3)-node(memb(i,2),3))/L(i);
end
%matrices de rotacion de miembro
R=zeros(3,3,1);
for i=1:m
R(1,1,i)=cx(i);R(1,2,i)=cy(i);
R(2,1,i)=-cy(i);R(2,2,i)=cx(i);R(3,3,i)=1;
end
%restriccionesº
r=zeros(3*n,1);
tp=size(rest);
pt=tp(1,1);
for i=1:pt
tp=rest(i,1);
r(3*tp-2,1)=rest(i,2);
r(3*tp-1,1)=rest(i,3);%r:es la lista de restricciones
r(3*tp,1)=rest(i,4);
end
t=0;
rc=zeros(1,1);
for i=1:3*n;
rc(i,1)=r(i,1)+t;
t=rc(i,1); %rc:es rest cumu
end
rc;
%EA %[#m E Ix Iy G]
EI=zeros(1,1,1);
GI=zeros(1,1,1);
for i=1:m
k=memb(i,4);
EI(:,:,i)=prop(k,2)*prop(k,4);
15. GI(:,:,i)=prop(k,5)*prop(k,3);
end
EI=EI(:);
GI=GI(:);
%matriz miembro
SM=zeros(6,6,1);
for i=1:m;
SM(:,:,i)=[GI(i)/L(i) 0 0 -GI(i)/L(i) 0 0;...
0 4*EI(i)/L(i) -6*EI(i)/L(i)^2 0 2*EI(i)/L(i) 6*EI(i)/L(i)^2;...
0 -6*EI(i)/L(i)^2 12*EI(i)/L(i)^3 0 -6*EI(i)/L(i)^2
-12*EI(i)/L(i)^3;...
-GI(i)/L(i) 0 0 GI(i)/L(i) 0 0;...
0 2*EI(i)/L(i) -6*EI(i)/L(i)^2 0 4*EI(i)/L(i) 6*EI(i)/L(i)^2;...
0 6*EI(i)/L(i)^2 -12*EI(i)/L(i)^3 0 6*EI(i)/L(i)^2 12*EI(i)/L(i)^3];
end
SM;
%matriz miembro en coordendas globales
ze=zeros(3,3);
SMD=zeros(6,6,1);
for i=1:m
RT=R(:,:,i);
RT=[RT ze;ze RT];
SMD(:,:,i)=RT'*SM(:,:,i)*RT;
end
SMD;
%matriz total de nudo
N=3*n-sum(r);
SJ=zeros(3*n,3*n);
for i=1:m;
j1=3*memb(i,2)-2;j2=3*memb(i,2)-1;j3=3*memb(i,2);
k1=3*memb(i,3)-2;k2=3*memb(i,3)-1;k3=3*memb(i,3);
if r(j1,1)==0
j1=j1-rc(j1,1);
else
j1=N+rc(j1,1);
end
if r(j2,1)==0
j2=j2-rc(j2,1);
else
j2=N+rc(j2,1);
end
if r(j3,1)==0
j3=j3-rc(j3,1);
else
j3=N+rc(j3,1);
end
if r(k1,1)==0
k1=k1-rc(k1,1);
else
k1=N+rc(k1,1);
end
if r(k2,1)==0
k2=k2-rc(k2,1);
else
k2=N+rc(k2,1);
end
if r(k3,1)==0
k3=k3-rc(k3,1);
else
k3=N+rc(k3,1);
end
16. if r(j1,1)==0;
SJ(j1,j1)=SJ(j1,j1)+SMD(1,1,i);
SJ(j2,j1)=SJ(j2,j1)+SMD(2,1,i);
SJ(j3,j1)=SJ(j3,j1)+SMD(3,1,i);
SJ(k1,j1)=SMD(4,1,i);
SJ(k2,j1)=SMD(5,1,i);
SJ(k3,j1)=SMD(6,1,i);
end
if r(j2,1)==0;
SJ(j1,j2)=SJ(j1,j2)+SMD(1,2,i);
SJ(j2,j2)=SJ(j2,j2)+SMD(2,2,i);
SJ(j3,j2)=SJ(j3,j2)+SMD(3,2,i);
SJ(k1,j2)=SMD(4,2,i);
SJ(k2,j2)=SMD(5,2,i);
SJ(k3,j2)=SMD(6,2,i);
end
if r(j3,1)==0;
SJ(j1,j3)=SJ(j1,j3)+SMD(1,3,i);
SJ(j2,j3)=SJ(j2,j3)+SMD(2,3,i);
SJ(j3,j3)=SJ(j3,j3)+SMD(3,3,i);
SJ(k1,j3)=SMD(4,3,i);
SJ(k2,j3)=SMD(5,3,i);
SJ(k3,j3)=SMD(6,3,i);
end
if r(k1,1)==0;
SJ(j1,k1)=SMD(1,4,i);
SJ(j2,k1)=SMD(2,4,i);
SJ(j3,k1)=SMD(3,4,i);
SJ(k1,k1)=SJ(k1,k1)+SMD(4,4,i);
SJ(k2,k1)=SJ(k2,k1)+SMD(5,4,i);
SJ(k3,k1)=SJ(k3,k1)+SMD(6,4,i);
end
if r(k2,1)==0;
SJ(j1,k2)=SMD(1,5,i);
SJ(j2,k2)=SMD(2,5,i);
SJ(j3,k2)=SMD(3,5,i);
SJ(k1,k2)=SJ(k1,k2)+SMD(4,5,i);
SJ(k2,k2)=SJ(k2,k2)+SMD(5,5,i);
SJ(k3,k2)=SJ(k3,k2)+SMD(6,5,i);
end
if r(k3,1)==0;
SJ(j1,k3)=SMD(1,6,i);
SJ(j2,k3)=SMD(2,6,i);
SJ(j3,k3)=SMD(3,6,i);
SJ(k1,k3)=SJ(k1,k3)+SMD(4,6,i);
SJ(k2,k3)=SJ(k2,k3)+SMD(5,6,i);
SJ(k3,k3)=SJ(k3,k3)+SMD(6,6,i);
end
end
SJ;%matrizdenudototal
lc=size(mlc);
cl=lc(1,1);
AML1=zeros(m,6);
for i=1:cl;
temp=mlc(i,1);
Ai=mlc(i,2:4)';
a=mlc(i,5);b=L(temp)-a;
TML=[ -b/L(temp) 0 0;...
0 -b*(2*a-b)/L(temp)^2 -a*b^2/L(temp)^2 ;...
0 6*a*b/L(temp)^3 b^2*(3*a+b)/L(temp)^3;...
-a/L(temp) 0 0;...
0 -a*(2*b-a)/L(temp)^2 a^2*b/L(temp)^2;...
17. 0 -6*a*b/L(temp)^3 a^2*(a+3*b)/L(temp)^3];
AMi=TML*Ai;
AML1(temp,:)=AML1(temp,:)+AMi';
end
clear('lc','temp','map','mbp','mam','mbm','rap','rbp','rap','ram','a');AML1
lc=size(mld);
cl=lc(1,1);
AML2=zeros(m,6);
for i=1:cl;
temp=mld(i,1);
w1=mld(i,2);w2=mld(i,3);d1=mld(i,4);d2=mld(i,5);
q=min(w1,w2);c=L(temp)-d2;b=d2-d1;a=d1;e=c+b/2;d=a+b/2;
ma=q*b*(b^2*(L(temp)+3*(c-a))-24*e^2*d)/(24*L(temp)^2);
ra=q*b*(4*e^2*(L(temp)+2*d)-b^2*(c-a))/(4*L(temp)^3);
mb=-(ra*L(temp)-q*b*e+ma);rb=q*b-ra;
%AML2(temp,1)=AML2(temp,1)+ra;
AML2(temp,2)=AML2(temp,2)+ma;
AML2(temp,3)=AML2(temp,3)+ra;
AML2(temp,5)=AML2(temp,5)+mb;
AML2(temp,6)=AML2(temp,6)+rb;
end
clear('lc','cl','temp','ma','mb');AML2
%%%%%%%%%%%%%%%
AML=AML1+AML2;
%%%%%%%%%%%%%%%
%[#n Mx My Fz]
lc=size(nlc);
cl=lc(1,1);
A=zeros(3*n,1);
for i=1:cl;
temp=nlc(i,1);
A(3*temp-2,1)=nlc(i,2);
A(3*temp-1,1)=nlc(i,3);
A(3*temp,1)=nlc(i,4);
end
clear('temp','lc','cl');A
%matriz carga de nudo equivalente;
AE=zeros(3*n,1);
for i=1:m;
j1=3*memb(i,2)-2;j2=3*memb(i,2)-1;j3=3*memb(i,2);
k1=3*memb(i,3)-2;k2=3*memb(i,3)-1;k3=3*memb(i,3);
AE(j1,1)=AE(j1,1)-AML(i,1)*cx(i)+AML(i,2)*cy(i);
AE(j2,1)=AE(j2,1)-AML(i,1)*cy(i)-AML(i,2)*cx(i);
AE(j3,1)=AE(j3,1)-AML(i,3);
AE(k1,1)=AE(k1,1)-AML(i,4)*cx(i)+AML(i,5)*cy(i);
AE(k2,1)=AE(k2,1)-AML(i,4)*cy(i)-AML(i,5)*cx(i);
AE(k3,1)=AE(k3,1)-AML(i,6);
end
AE;
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%carga de nudo combinada
AC=AE*0;
for i=1:3*n;
if r(i,1)==0;
q=i-rc(i,1);
else
q=N+rc(i,1);
end
18. AC(q,1)=A(i,1)+AE(i,1);
end
AC;%ok carga de nudo combinada y ordenada
%%%%%%%%%%%%%%%%%%RESULTADOS%%%%%%%%%%%%%%%%
AD=AC(1:N,1);ARL=-1*AC(N+1:3*n,1);
S=SJ(1:N,1:N);SRD=SJ(N+1:3*n,1:N);
D=inv(S)*AD%desplazamientos de nudos
AR=ARL+SRD*D%reacciones en nudos
%%%%%%ACCIONES DE MIEMBRO%%%%%%%%%%%%%%%%%%
comp=zeros(3*n-N,1);
D=[D;comp];
AM=zeros(m,6);
for i=1:m
j1=3*memb(i,2)-2;j2=3*memb(i,2)-1;j3=3*memb(i,2);
k1=3*memb(i,3)-2;k2=3*memb(i,3)-1;k3=3*memb(i,3);
kk1=GI(i)/L(i);kk2=4*EI(i)/L(i);kk3=1.5*kk2/L(i);kk4=2*kk3/L(i);
AM(i,1)=AML(i,1)+kk1*((D(j1)-D(k1))*cx(i)+(D(j2)-D(k2))*cy(i));
AM(i,2)=AML(i,2)+kk2*(-(D(j1)+D(k1)/2)*cy(i)+(D(j2)+D(k2)/2)*cx(i))-
kk3*(D(j3)-D(k3));
AM(i,3)=AML(i,3)+kk3*((D(j1)+D(k1))*cy(i)-(D(j2)+D(k2))*cx(i))+kk4*(D(j3)-
D(k3));
AM(i,4)=AML(i,4)+kk1*(-(D(j1)-D(k1))*cx(i)-(D(j2)-D(k2))*cy(i));
AM(i,5)=AML(i,5)+kk2*(-(D(j1)/2+D(k1))*cy(i)+(D(j2)/2+D(k2))*cx(i))-
kk3*(D(j3)-D(k3));
AM(i,6)=AML(i,6)+kk3*(-(D(j1)+D(k1))*cy(i)+(D(j2)+D(k2))*cx(i))-kk4*(D(j3)-
D(k3));
end