Está en la página 1de 52

Taller de Programación con MATLAB

Combination Surface and Contour Plot

0.4

0.2

Resistencia de Materiales I 0

Pontificia Universidad Católica del Perú,


-0.2
Sección de Ingeniería Civil
Abril 17, 2017 -0.4

1 2
1
0
0
-1
-1
y-axis x-axis
-2 -2
Ventana de apertura de MATLAB

Editor de script
Directorio actual Área de trabajo

Ventana de comandos

2 [Moore, 2012]
Definiendo variables

Área de trabajo

Ventana de comandos

3
Operaciones escalares (calcular la masa de aire en un túnel
de viento)
Entrada
Volumen V = 1000 m3
Temperatura T = 300 K
Presión P = 100 kPa
Peso molecular MW = 29 kg/kmol
Constante de gas R = 8.314 kPa m3/kmol K

Ley del gas ideal Salida


PV = nRT Masa m = ¿? Kg
n = m/MW
4
Operaciones escalares

Primero, limpie la pantalla y la memoria:


>> clear, clc

5
Cálculos matriciales con escalares (cree una tabla que
convierta libras fuerza (lbf) a newtons (N)
Entrada
Valor inicial en la tabla 0 lbf
Valor final en la tabla 1000 lbf
Incremento entre valores 100 lbf

El factor de conversión es Salida


1 lbf = 4.4482216 N Tabla que presenta libras fuerza (lbf)
y newtons (N)

6
Cálculos matriciales con escalares

Factor de escala común

Primero, limpie la pantalla y la memoria:


>> clear, clc

7
Archivos-m script (cálculo del arrastre de una aeronave)

Entrada
Arrastre (drag) 20,000 N
Densidad del aire ρ 1 x 10-6 kg/m3
Rapidez V 100 mph
Área de la superficie A 1 m2

Ecuación de arrastre Salida


Coeficiente de arrastre
drag = Cd x ρ x V2 x A/2 Arrastre a rapideces de 0 a 200 mph

8
Archivos-m script (escribir en el editor de script)
clear, clc table =
% A Script M-file to find Drag
% First define the variables 1.0e+04 *
drag = 20000; %Define drag in Newtons
density= 0.000001; %Define air density in 0 0
kg/m^3 0.0009 0.0800
velocity = 100*0.4470; %Define velocity in 0.0018 0.3200
m/s 0.0027 0.7200
area = 1; %Define area in m^2 0.0036 1.2800
% Calculate coefficient of drag 0.0045 2.0000
cd = drag *2/(density*velocity^2*area) 0.0054 2.8800
% Find the drag for a variety of velocities 0.0063 3.9200
velocity = 0:20:200; %Redefine velocity 0.0072 5.1200
velocity = velocity*.4470 %Change velocity 0.0080 6.4800
to m/s 0.0089 8.0000
drag = cd*density*velocity.^2*area/2;
%Calculate drag
>>
table = [velocity',drag'] %Create a table
of results
9
Funciones matemáticas comunes

10
Graficas bidimensionales (títulos, etiquetas y retículas)
clear, clc
x = [0:2:18];
y = [0, 0.33, 4.13, 6.29, 6.85, 11.19, 13.19,
13.96, 16.33, 18.17];
plot(x,y)
title('Laboratory Experiment') Laboratory Experiment
20
xlabel('Time, sec' )
ylabel('Distance, ft') 18

grid 16

14

12
Distance, ft

10

0
0 2 4 6 8 10 12 14 16 18
11 Time, sec
Graficas bidimensionales (gráficas con más de una línea)
clear, clc
x = 0:pi/100:2*pi;
y1 = cos(x*4);
plot(x,y1)
y2 = sin(x); 1

hold on; 0.8

plot(x, y2) 0.6

0.4

0.2

-0.2

-0.4

-0.6

-0.8

-1
0 1 2 3 4 5 6 7
112
Graficas bidimensionales (gráficas con más de una línea)
clear, clc
X = 0:pi/100:2*pi;
Y1 = cos(X)*2;
Y2 = cos(X)*3;
Y3 = cos(X)*4; 5
Y4 = cos(X)*5; 4
Z = [Y1; Y2; Y3; Y4];
3
plot(X, Y1, X, Y2, X,
Y3, X, Y4) 2

%plot(X, Z)da el mismo 1


resultado
0

-1

-2

-3

-4

-5
0 1 2 3 4 5 6 7
13
Graficas bidimensionales (línea, color y estilo de marca)
clear, clc
x = [1:10];
y = [58.5, 63.8, 64.2, 67.3, 71.5, 88.3, 90.1,
90.6, 89.5,90.4];
plot(x,y,':ok')
95

90

85

80

75

70

65

60

55
1 2 3 4 5 6 7 8 9 10
14
Opciones de línea, marca y color

15
Graficas bidimensionales (línea, color y estilo de marca)
clear, clc
x = [1:10];
y = [58.5, 63.8, 64.2, 67.3, 71.5, 88.3, 90.1,
90.6, 89.5,90.4];
plot(x,y,':ok',x,y*2,'--xr',x,y/2,'-b')
200

180

160

140

120

100

80

60

40

20
1 2 3 4 5 6 7 8 9 10
16
Graficas bidimensionales (escalamiento de ejes y
anotaciones en gráficas)
clear, clc
Example graph
x = [1:10]; 200
line 1
y = [58.5, 63.8, 64.2, 67.3, 180 line 2

71.5, 88.3, 90.1, 90.6, 160


line3

89.5,90.4];
140
plot(x,y,':ok',x,y*2,'--
120
xr',x,y/2,'-b')

My y label
100 Label plots with the text command
legend('line 1', 'line 2',
'line3') 80

text(1,100,'Label plots with 60


the text command') 40
xlabel('My x label'),
20
ylabel('My y label')
0
title('Example graph') 0 1 2 3 4 5 6 7 8 9 10 11
My x label
axis([0,11,0,200])

17
Graficas bidimensionales (subgráficas )
clear, clc
x = 0:0.5:50;
y = 5*x.^2;
subplot(2,2,1)
plot(x,y)
Orden de gráficas
title('Polynomial - linear/linear')
ylabel('y'), grid 15000
Polynomial - linear/linear
15000
Polynomial - log/linear

subplot(2,2,2)
semilogx(x,y) 10000 10000

y
title('Polynomial - log/linear') 5000 5000

ylabel('y'), grid
subplot(2,2,3) 0
0 10 20 30 40 50
0
10-1 10 0 101 10 2

semilogy(x,y) Polynomial - linear/log Polynomial - log/log


5
10 10 5
title('Polynomial - linear/log')
xlabel('x'), ylabel('y'), grid
subplot(2,2,4)
y

y
loglog(x,y)
title('Polynomial - log/log') 10
0
0
10 20 30 40 50
10 0
10-1 10 0 101 10 2
x
xlabel('x'), ylabel('y'), grid x
18
Graficas bidimensionales (gráficas x-y con dos ejes y)
clear, clc
x = 0:pi/20:2*pi;
600
y1 = sin(x);
y2 = exp(x); 400

subplot(2,1,1) 200
plot(x,y1,x,y2)
0
subplot(2,1,2)
plotyy(x,y1,x,y2) -200
0 1 2 3 4 5 6 7

1 1000

0 500

-1 0
0 1 2 3 4 5 6 7

19
Graficas tridimensionales (gráfica lineal)
clear, clc
x = linspace(0,10*pi,1000);
y = cos(x);
z = sin(x);
plot3(x,y,z)
grid A Spring

xlabel('angle')
ylabel('cos(x)') 1
zlabel('sin(x)')
0.5
title('A Spring')
sin(x)

-0.5

-1
1
0.5 40
0 30
20
-0.5
10
cos(x) -1 0 angle
200
Graficas tridimensionales (gráficas de superficie)
clear, clc
x= [-2:0.2:2]; y= [-2:0.2:2];
[X,Y] = meshgrid(x,y); Z = X.*exp(-X.^2 - Y.^2);
subplot(2,2,1)
mesh(X,Y,Z)
title('Mesh Plot'), xlabel('x-axis'), ylabel('y-axis'),
zlabel('z-axis')
subplot(2,2,2)
surf(X,Y,Z)
title('Surface Plot'), xlabel('x-axis'), ylabel('y-axis'),
zlabel('z-axis')
subplot(2,2,3)
contour(X,Y,Z)
xlabel('x-axis'), ylabel('y-axis'), title('Contour Plot')
subplot(2,2,4)
surfc(X,Y,Z)
xlabel('x-axis'), ylabel('y-axis')
title('Combination Surface and Contour Plot')
211
Graficas tridimensionales (gráficas de superficie)

Mesh Plot Surface Plot

0.5 0.5
z-axis

z-axis
0 0

-0.5 -0.5
2 2
2 2
0 0 0 0
-2 -2 -2 -2
y-axis x-axis y-axis x-axis
Contour Plot Combination Surface and Contour Plot
2
0.4
1
y-axis

0
0
-0.4
-1
2
2
0 0
-2
-2 -1 0 1 2 -2 -2
y-axis x-axis
x-axis

222
Funciones (find)
clear, clc
height = [63,67,65,72,69,78,75];
accept = find(height>=66)
height(accept)

accept =

2 4 5 6 7

ans =

67 72 69 78 75

>>

233
Funciones (for-if-else-elseif)
clear; clc; close all;
A =
nrows = 4;
ncols = 6;
1 1 1 1 1 1
A = ones(nrows,ncols)
1 1 1 1 1 1
for c = 1:ncols
1 1 1 1 1 1
for r = 1:nrows
1 1 1 1 1 1
if r == c
A(r,c) = 2;
elseif abs(r-c) == 1
A =
A(r,c) = -1;
else
2 -1 0 0 0 0
A(r,c) = 0;
-1 2 -1 0 0 0
end
0 -1 2 -1 0 0
end
0 0 -1 2 -1 0
end
A
>>

244
Funciones (for-if-else-elseif)
clear; clc; close all;
x = 10;
minVal = 2;
maxVal = 6;

if (x >= minVal) && (x <= maxVal)


disp('Value within specified range.')
elseif (x > maxVal)
disp('Value exceeds maximum value.')
else
disp('Value is below minimum value.')
end

Value exceeds maximum value.


>>

255
Aplicación 1 : Fuerza cortante y momento flector de una
viga simplemente apoyada

266
Principio de superposición
Fuerza cortante
Verdadero
Ingresar «L» Contador
i=1

Ingresar «n»
RAi = Pi·(L – xi) / L
Contador RBi = Pi·xi / L
i=1

Ingresar «Pi» y «xi» DFC(izqXi) = DFC(izqXi) + RAi

DFC(derXi) = DFC(derXi) – RBi


xi ≤ L Ingresar «xi»
i=i+1
i=i+1 Verdadero
i=n
i=n
Verdadero
Verdadero
Imprimir DFC
277
Momento flector
Verdadero
Ingresar «L» Contador
i=1

Ingresar «n»
RAi = Pi·(L – xi) / L
Contador RBi = Pi·xi / L
i=1

Ingresar «Pi» y «xi» DMF(izqXi) = DMF(izqXi) + RAi·xi

DMF(derXi) = DMF(derXi) – RBi·(L – xi)


xi ≤ L Ingresar «xi»
i=i+1
i=i+1 Verdadero
i=n
i=n
Verdadero
Verdadero
Imprimir DMF
288
Código en Matlab: Fuerzas_viga.m
%% FILOSOFÍA DE LA SOLUCIÓN
% Se realizará el análisis para cada carga de manera independiente. Luego,
% por superposición se sumarán las respuestas para obtener la respuesta
% total. El gráfico de los diagramas se realiza de manera discretizada.
% Nota: El programa no calcula las reacciones de cargas puntuales ubicadas
sobre los apoyos

%% INGRESO DE DATOS
clear; clc; close all; % limpia variables, limpia pantalla y
cierra figuras
display('Ingresar las ubicaciones y el valor de las cargas correspondientes
dejando un espacio.')
display('El signo negativo de las cargas indican el sentido de la gravedad')
tit = 'Viga sometida a Cargas Puntuales';
prompt = {'Long. Viga (m)','Ubicación Xi de la fuerza Pi (i=1..n) [m]',...
'Fuerza Aplicada Pi [kN]'};
def = {'4.5', '1.8 3.6', '-60 -60'};
resp = inputdlg(prompt,tit,[1 50],def);
L=1000*sscanf(resp{1},'%f'); %Longitud total de la viga
X=1000*sscanf(resp{2},'%f'); %Ubicación Xi de las cargas aplicadas
P=sscanf(resp{3},'%f')*10^3; %Valor de las cargas aplicadas [N]
%Signo negativo = sentido de gravedad
%Signo positivo = sentido hacia arriba
%Respuestas serán en m y N. Y las gráficas se escalarán para kN y kN*m
%***********************************************************************

299
Código en Matlab: Fuerzas_viga.m (continuación 2/4)
%% CÁLCULOS PRELIMINARES
n=size(X,1); %Número de cargas aplicadas en el sistema
Xr=L-X; %Longitud complementaria a la ubicación de
cada carga

% Creación de Vectores para almacenar las respuestas


Ra=zeros(n,1); %Reacción en A
Rb=zeros(n,1); %Reacción en B
%**************************************************************************

%% Cálculo de reacciones en A y B para cada carga independiente

for i=1:n;
Rb(i)=-P(i)*X(i)/L; %Reacción en B.
Ra(i)=-P(i)*Xr(i)/L; %Reaccion en A.
end

%**************************************************************************

%% Creación de vectores para almacenar respuestas para las gráficas

% Se discretizará la viga para su análisis y respuesta

Xgraf=0:1:L; %Posición en X para cada punto graficado


igraf=length(Xgraf); %Discretizando de la viga
VgrafP=zeros(1, igraf); %Fuerza cortante por Cargas Puntuales para
la gráfica
MgrafP=zeros(1, igraf); %Momento flector para la gráfica por P 30
Código en Matlab: Fuerzas_viga.m (continuación 3/4)
% Cada elemento de estos vector fila corresponde a cada punto de la discretización
%**************************************************************************
%% Fuerza Cortante V
%(sentido positivo hacia abajo)
%Aporte de las cargas puntuales P
for i=1:n
Vizq=Ra(i); %Fuerza cortante a la izquierda de la carga
Vder=Ra(i)+P(i); %Fuerza cortante a la derecha de la carga
for j=1:X(i)
VgrafP(j)=VgrafP(j)+Vizq;
%Suma de todas las fuerzas cortantes generadas a la izquierda de las cargas aplicadas y
almacenadas en Vgraf
end
for j=X(i)+1:L+1
VgrafP(j)=VgrafP(j)+Vder;
%Suma de todas las fuerzas cortantes generadas a la derecha de las cargas aplicadas y
almacenadas en Vgraf
end
% Forma alternativa
% VgrafP = Vizq*heaviside(X) + (Vder-Vizq)*heaviside(X-X(i));
end

RA=sum(Ra); %Reacción total en el apoyo A [N]


RB=sum(Rb); %Reacción total en el apoyo B [N]
% Gráfica de la Fuerza Cortante [kN]
figure('Color','white');
stem(Xgraf/1000,VgrafP/1000,'Fill','blue','MarkerEdgeColor',...
'red','MarkerSize',4,'Marker','.')
axis([-inf,L/1000,-inf,inf])
title('Diagrama de Fuerza Cortante en la viga')
xlabel('Distancia [m]') % etiqueta x-axis
ylabel('Fuerza Cortante, V [kN]') % etiqueta y-axis
%**************************************************************************
31
Código en Matlab: Fuerzas_viga.m (continuación 4/4)
%% Momento Flector M
%(valor positivo cuando genere tensiones debajo de la viga)
%Aporte de las cargas puntuales P
for i=1:n
for j=1:X(i)
Mizq=Ra(i)*Xgraf(j); % Función del momento flector por la izquierda
MgrafP(j)=MgrafP(j)+Mizq; % Acumula momentos para cada carga
%Suma de todos los momentos flectores generadas a la izquierda de las cargas aplicadas
y almacenadas en Mgraf
end
for j=X(i)+1:L+1
Mder=Rb(i)*(L-Xgraf(j)); % Función del momento flector por la derecha
MgrafP(j)=MgrafP(j)+Mder; % Acumula momentos para cada carga
%Suma de todos los momentos flectores generadas a la derecha de las cargas aplicadas y
almacenadas en Mgraf
end
end
Mgraf=MgrafP/1000; %Conversión de kN-m
[Mmax, LocationJ] = max(Mgraf(:)); %Extracción del valor máximo
Mmax; %Momento Flector máximo de la viga
Xmax=Xgraf(LocationJ)/1000; %Ubicación del Momento Flector máximo

% Gráfica del Momento Flector [kN-m]


figure('Color','white');
stem(Xgraf/1000,-Mgraf/1000,'Fill','red','MarkerEdgeColor','red','MarkerSize',4,'Marker','.')
axis([-inf,L/1000,-inf,inf])
title('Diagrama del Momento Flector en la Viga')
xlabel('Distancia, [m]') %x-axis label
ylabel('Momento Flector, [kN-m]') %y-axis label
%**********************************************************************
%FIN DEL ANALISIS DE VIGA
%********************************************************************** 32
Ejecución del script: Fuerzas_viga.m
Diagrama de Fuerza Cortante en la viga

40

20

Fuerza Cortante, V [kN]


0

-20

-40

-60

0 0.5 1 1.5 2 2.5 3 3.5 4 4.5


Distancia [m]

Diagrama del Momento Flector en la Viga


0

-10

-20

Momento Flector, [kN-m]


-30

-40

-50

-60

-70

-80

33 0 0.5 1 1.5 2 2.5 3 3.5 4 4.5


Distancia, [m]
Aplicación 2 : Fuerza cortante y momento flector para
cargas puntuales y distribuidas

34
Código en Matlab: CD_VigaSA.m
%% Solución de la PC1

clear; clc; close all; % Limpia variables, limpia pantalla y cierra figuras

display('Ingresar las ubicaciones y el valor de las cargas.')


display('El signo negativo de las cargas indican hacia arriba')
tit = 'Viga sometida a cargas puntuales y distribuidas';
prompt = {'Long. Viga (m)','Ubicación Xi de la fuerza Pi (i=1..n) [m]',...
'Fuerza Aplicada Pi [kN]', 'Distribuidas'};
def = {'10', '3 6', '10 15', '3 2 3'};

resp = inputdlg(prompt,tit,[1 70],def);


L =sscanf(resp{1},'%f'); %Longitud total de la viga a analizar
np = 100; % número de puntos a graficar

x =sscanf(resp{2},'%f'); %Ubicación Xi de las cargas puntuales aplicadas


P =sscanf(resp{3},'%f'); %Valor de las cargas puntuales aplicadas [N]
w =sscanf(resp{4},'%f'); %Magnitud de las cargas distribuidas [N/m]

n = length(w); % numero de casos


ejex = (0: L/np : L)'; % número de puntos a analizar en el eje x
np = length(ejex); % numero de puntos

35
Código en Matlab: CD_VigaSA.m (continuación 2/4)

% Solución para la cargas puntuales


Ra = zeros(2*n-1,1); % Hay 2*n-1 casos a calcular
Rb = zeros(2*n-1,1);
DFC = zeros(np, 1);
DMF = zeros(np, 1);

% Para cada caso de carga puntual


for i = 1 : (n-1)

Ra(i) = Ra(i) + P(i)*(L-x(i)) / L;


Rb(i) = Rb(i) + P(i)*x(i)/L;

DFC = DFC + Ra(i)+ (-P(i))* (ejex > x(i));


DMF = DMF + Ra(i)*ejex + ( -P(i)* ( ejex-x(i) ) ) .* (ejex > x(i));
end
% termina n-1 casos

36
Código en Matlab: CD_VigaSA.m (continuación 3/4)
% Para cada caso de carga distribuida

xm = [ 0; x; L]; % posiciones modificadas (necesito 0 al ppio. y L al final)


for j = 1 : n % j referencia a las cargas
i = j + 1; % i referencia a las posiciones
k = (n-1) + j; % k referencia al caso de carga desde k=n hasta k=2n-1

longw = xm(i) - xm(i-1); % longitud de la carga distribuida


R = w(j)* longw; % Resultante de la carga distribuida
xr = xm(i-1) + ( xm(i) - xm(i-1) )/2; % posición de la resultante de la carga
distribuida
Ra(k) = Ra(k) + R*(L-xr)/L;
Rb(k) = Rb(k) + R*xr / L;

cort1 = Ra(k);
cort2 = -w(j) * ( ejex -xm(i-1) );
cort3 = +w(j) * ( ejex - xm(i) );
cortot = cort1 + cort2 .* (ejex > xm(i-1)) + cort3 .* (ejex > xm(i));
DFC = DFC + cortot;

mom1 = Ra(k) * ejex;


mom2 = -(1/2)*w(j) * ( ejex - xm(i-1) ).^2;
mom3 = (1/2)* w(j) * ( ejex - xm(i) ).^2;
momtot = mom1 + mom2 .* ( ejex > xm(i-1)) + mom3 .* (ejex > xm(i));
DMF = DMF + momtot;
end
36
Código en Matlab: CD_VigaSA.m (continuación 4/4)
aaa=find(DMF==max(DMF));
x1=ejex(aaa);
y1=DMF(aaa);

bbb=find(DFC==max(DFC));
x2=ejex(bbb);
y2=DFC(bbb);

stem(ejex, DFC,'k','LineWidth',.01); grid on;


hold on
text(x2,y2+y2/10,
['(',num2str(x2),',',num2str(y2),')'],'HorizontalAlignment','left','FontSize',10,'color','red
','FontWeight','bold');
title('DIAGRAMA DE FUERZA CORTANTE','FontSize',14,'color','blue'); %Título del gráfico

figure;
stem(ejex, DMF,'k','LineWidth',.01); grid on;
hold on
text(x1,y1+y1/20,
['(',num2str(x1),',',num2str(y1),')'],'HorizontalAlignment','left','FontSize',10,'color','red
','FontWeight','bold');
title('DIAGRAMA DE MOMENTO FLECTOR','FontSize',14,'color','blue'); %Título del gráfico
set(gca,'yDir','reverse')

36
Ejecución del script: MI_CircElipTubo.m
DIAGRAMA DE FUERZA CORTANTE
30 (0,26.35)

20

10

-10

-20

-30
0 1 2 3 4 5 6 7 8 9 10

DIAGRAMA DE MOMENTO FLECTOR


0

10

20

30

40

50

60

70

80
0 1 2 3 4 5 6(6,78.6)7 8 9 10
37
Aplicación 3 : Fuerza cortante y momento flector para un
tren de cargas

38
Código en Matlab: Diagr_Tren_cargas.m
clear; clc; close all; % limpia todo
%Solicite entrada del usuario
wp=input('Peso propio del puente (kN/m)=')
W=input('Contrapeso (kN)=')
L=input('Longitud del puente (m)=')
a=input('Ángulo del cable (°)=')
xd=input('Ubicación del punto D (m)=')
n=L/.1;%numero de veces que se mueve el tren de cargas
x(1)=0;
T(1)=(132+wp*4*L*L/9-W*L/3)/(L*sin(a*pi/180));%Tensión total de cables
t(1)=T(1)/2;%Tensión en un cable
RA(1)=W+220+wp*4*L/3-T(1)*sin(a*pi/180);%Reacción en A
m=xd/0.1;

39
Código en Matlab: Diagr_Tren_cargas.m (continuación 2/2)
%Graficando las variaciones de la reacción en A, el momento flector en D y
%la tensión en los cables
if (0 <= xd) & (xd <= 1.2)
Md(1)=RA(1)*xd-110*xd-W*(L/3+xd);%Momento en D
for i=1:12
x(i+1)=x(i)+0.1;
T(i+1)=(22*x(i+1)/0.1+132+wp*4*L*L/9-W*L/3)/(L*sin(a*pi/180));
t(i+1)=T(i+1)/2;
RA(i+1)=W+220+wp*4*L/3-T(i+1)*sin(a*pi/180);
Md(i+1)=RA(i+1)*xd-110*(xd-0.10*x(i+1)/0.1)-W*(L/3+xd);
end
for i=13:n
x(i+1)=x(i)+0.1;
T(i+1)=(22*x(i+1)/0.1+132+wp*4*L*L/9-W*L/3)/(L*sin(a*pi/180));
t(i+1)=T(i+1)/2;
RA(i+1)=W+220+wp*4*L/3-T(i+1)*sin(a*pi/180);
Md(i+1)=RA(i+1)*xd-W*(L/3+xd);
end

40
Código en Matlab: MI_CircElipTubo.m (continuación 2/5)
else
Md(1)=RA(1)*xd-110*xd-W*(L/3+xd)-110*(xd-1.2);
for i=1:m
x(i+1)=x(i)+0.1;
T(i+1)=(22*x(i+1)/0.1+132+wp*4*L*L/9-W*L/3)/(L*sin(a*pi/180));
t(i+1)=T(i+1)/2;
RA(i+1)=W+220+wp*4*L/3-T(i+1)*sin(a*pi/180);
Md(i+1)=RA(i+1)*xd-W*(L/3+xd)-110*(xd-0.10*x(i+1)/0.1)-110*(xd-0.10*x(i+1)/0.1-1.2);
end
for i=m+1:m+12
x(i+1)=x(i)+0.1;
T(i+1)=(22*x(i+1)/0.1+132+wp*4*L*L/9-W*L/3)/(L*sin(a*pi/180));
t(i+1)=T(i+1)/2;
RA(i+1)=W+220+wp*4*L/3-T(i+1)*sin(a*pi/180);
Md(i+1)=RA(i+1)*xd-W*(L/3+xd)-110*(xd-0.10*x(i+1)/0.1);
end
for i=m+13:n
x(i+1)=x(i)+0.1;
T(i+1)=(22*x(i+1)/0.1+132+wp*4*L*L/9-W*L/3)/(L*sin(a*pi/180));
t(i+1)=T(i+1)/2;
RA(i+1)=W+220+wp*4*L/3-T(i+1)*sin(a*pi/180);
Md(i+1)=RA(i+1)*xd-W*(L/3+xd);
end
end

41
Código en Matlab: Diagr_Tren_cargas.m (continuación 3/5)
end
subplot(2,3,1)
plot(x,RA)
title('Variación de la reacción en A')
xlabel('Posición de la carga vehicular desde A'),ylabel('Reacción en A'),grid
subplot(2,3,2)
plot(x,-Md)
title('Variación del momento flector en D')
xlabel('Posición de la carga vehicular desde A'),ylabel('Momento en D'),grid
subplot(2,3,3)
plot(x,t)
title('Variación de la tensión en un cable')
xlabel('Posición de la carga vehicular desde A'),ylabel('Tensión en un cable'),grid

42
Código en Matlab: Diagr_Tren_cargas.m (continuación 4/5)
%Graficando las envolventes
for k=1:n-12 % Variación del tren de cargas
p=4*L/3/0.10;
xp(1)=0;
T(k)=(22*k+132+wp*4*L*L/9-W*L/3)/(L*sin(a*pi/180));
RA(k)=W+220+wp*4*L/3-T(k)*sin(a*pi/180);
for j=1:p %variación de la fuerza normal, fuerza cortante, y momento flector
N(1)=0;
V(1)=-W-wp*xp(1);
M(1)=-W*xp(1)-wp*xp(1)*xp(1)/2;
xp(j+1)=xp(j)+0.10;
if (0 <= xp(j+1)) & (xp(j+1) < L/3)
N(j+1)=0;
V(j+1)=-W-wp*xp(j+1);
M(j+1)=-W*xp(j+1)-wp*xp(j+1)*xp(j+1)/2;
elseif (L/3 <= xp(j+1)) & (xp(j+1) < L/3+0.10*k)
N(j+1)=-T(k)*cos(a*pi/180);
V(j+1)=RA(k)-W-wp*xp(j+1);
M(j+1)=RA(k)*(xp(j+1)-L/3)-W*xp(j+1)-wp*xp(j+1)*xp(j+1)/2;
elseif (L/3+0.10*k <= xp(j+1)) & (xp(j+1) < L/3+0.10*k+1.2)
N(j+1)=-T(k)*cos(a*pi/180);
V(j+1)=RA(k)-W-wp*xp(j+1)-110;
M(j+1)=RA(k)*(xp(j+1)-L/3)-W*xp(j+1)-wp*xp(j+1)*xp(j+1)/2-110*(xp(j+1)-L/3-0.10*k);

43
Código en Matlab: Diagr_Tren_cargas.m (continuación 5/5)
else
N(j+1)=-T(k)*cos(a*pi/180);
V(j+1)=RA(k)-W-wp*xp(j+1)-220;
M(j+1)=RA(k)*(xp(j+1)-L/3)-W*xp(j+1)-wp*xp(j+1)*xp(j+1)/2-110*(xp(j+1)-L/3-0.10*k)-
110*(xp(j+1)-L/3-0.10*k-1.2);
end
end
subplot(2,3,4)
plot(xp,N)
hold on
title('Envolvente de fuerza normal')
xlabel('x'),ylabel('Fuerza normal'),grid on
subplot(2,3,5)
plot(xp,V)
hold on
title('Envolvente de fuerza cortante')
xlabel('x'),ylabel('Fuerza cortante'),grid on
subplot(2,3,6)
plot(xp,-M)
hold on
title('Envolvente del momento flector')
xlabel('x'),ylabel('Momento flector'),grid on

end

44
Ejecución del script: Diagr_Tren_cargas.m

Peso propio del puente (kN/m)=50.3


wp =
50.3000
Contrapeso (kN)=820
W =
820
Longitud del puente (m)=15
L =
15
Ángulo del cable (°)=45
a =
45
Ubicación del punto D (m)=10
xd =
10
>>

45
Ejecución del script: Diagr_Tren_cargas.m (continuación
2/2)
Variación de la reacción en A Variación del momento flector en D Variación de la tensión en un cable
2000 -5200 250

1950 -5400

Tensión en un cable
200

Momento en D
Reacción en A

1900 -5600
150
1850 -5800

100
1800 -6000

1750 -6200 50
0 5 10 15 0 5 10 15 0 5 10 15
Posición de la carga vehicular desde A Posición de la carga vehicular desde A Posición de la carga vehicular desde A

Envolvente de fuerza normal Envolvente de fuerza cortante Envolvente del momento flector
0 1000 1000

-50 0
500

Momento flector
Fuerza cortante
Fuerza normal

-100 -1000
0
-150 -2000
-500
-200 -3000

-1000
-250 -4000

-300 -1500 -5000


0 5 10 15 20 25 0 5 10 15 20 25 0 5 10 15 20 25
x x x

46
Aplicación 4 : DFC y DMF

SOLUCIÓN:
• Tratar a la viga entera como un
cuerpo rígido, determine las fuerzas
de reacción.
• Seccione la viga a una distancia del
extremo final.
Dibuje los diagramas de cortante y • Aplicar análisis de equilibrio sobre
momento flector para una viga AB en
el diagrama de cuerpo libre para
voladizo con un claro L que soporta una
determinar la fuerza cortante y el
carga uniformemente distribuida w.
momento flector.

47
Aplicación 4 : DFC y DMF

SOLUCIÓN:
• Se corta la viga en un punto C entre A y B y
se dibuja el diagrama de cuerpo libre de AC

- Fuerza cortante,

V   wx

- Momento flector,

1
M   wx 2
2

48
Aplicación 4 : DFC y DMF

- Fuerza cortante

- Momento flector

49
Aplicación 5 : Deformación de un elemento truncado

47

También podría gustarte