Está en la página 1de 3

clear; clc; close all; % Limpiar todo, Limpiar ventana de comandos, Cerrar todo

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

% 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

% 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
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')

También podría gustarte