Está en la página 1de 4

ESCUELA POLITÉCNICA NACIONAL

FACULTAD DE INGENIERíA
MECÁNICACARRERA EN
MECÁNICA
CONTROL DE SISTEMAS
MECÁNICOS2022A

Problema a analizar

Script de Matlab con datos del sistema

clear all %#ok<*CLALL>


clc
syms x

%---------------------------------------------------------------%
%Propiedades de la viga
p=input('Ingrese la densidad en [kg/m^3]:\n');
E=input('Ingrese el módulo de elasticidad en [GPa]:\n');
I=input('Ingrese el momento de inercia [m^4]:\n');
A=input('Ingrese el area transversal en [m^2]:\n');
L=input('Ingrese la longitud en [m]:\n');
phi=input('Ingrese ecuacion de la funcion de forma Φ(x):(debe incluir la
variable x)\n');

%%

%---------------------------------------------------------------%
%Masa del problema
Nm=input('Ingrese la cantidad de masas puntuales:\n');
Lm=zeros(1,Nm);
Cm=zeros(1,Nm);
for i = 0:Nm-1
Lm(i+1)=input("Ingrese la distancia de la masa "+(i+1)+" en [m]:\n");
Cm(i+1)=input("Ingrese la el valor de la masa "+(i+1)+ " en [kg]:\n");
end
%%Calculo de Mequivalente del sistema
Mint=p*A*phi^2;
Mintegrada=int(Mint,0,L);
Msum=0;
for i=0:Nm-1
x=Lm(i+1);
Msum=Cm(i+1)*eval(phi^2);
end
M=Mintegrada+Msum;

%----------------------------------------------------------------%
% Resortes puntuales
nk=input('Ingrese la cantidad de resortes puntuales del sistema:\n');
Lk=zeros(1,nk);
ki=zeros(1,nk);
for i = 0:nk-1
Lk(i+1)=input("Ingrese la posicion del resorte "+(i+1)+" en [m]:\n");
ki(i+1)=input("Ingrese la constante del resorte "+(i+1)+ " en [N/m]:\n");
end

%%
%--------------------------------------------------------------%
%Rigidez distribuida
syms x
kx=input('Ingrese la funcion de rigidez:(debe incluir la variable x, si no hay
ingrese 0*x) \n');
%%
%---------------------------------------------------------------%
%Calculo del k equivalente del sistema
phip=diff(phi);
phipp=diff(diff(phi));
Cintegrada1=int(E*I*(phipp^2),0,L);
Cintegrada2=int(kx*(phi^2),0,L);
ksum=0;
for i=0:nk-1
x=Lk(i+1);
ksum=ki(i+1)*eval(phi^2);
end
k=Cintegrada1+Cintegrada2+ksum;
%---------------------------------------------------------------%
%Amortiguamiento del problema
Nc=input('Ingrese la cantidad de amortiguadores puntuales:\n');
Lc=zeros(1,Nc);
Ci=zeros(1,Nc);
for i = 0:Nc-1
Lc(i+1)=input("Ingrese la distancia de amortiguador "+(i+1)+" en [m]:\n");
Ci(i+1)=input("Ingrese la constante de amortiguador "+(i+1)+ " en
[Ns^2/m]:\n");
end

%%AMORTIGUAMIENTO DISTRIBUIDO
syms x
Cx=input('Ingrese la funcion de amortiguamiento:(debe incluir la variable x, si
no hay ingrese 0*x) \n');

%%Calculo de Cequivalente del sistema


Cint=Cx*phi^2;
Cintegrada=int(Cint,0,L);
Csum=0;
for i=0:Nc-1
x=Lc(i+1);
Csum=Ci(i+1)*eval(phi^2);
end
C=Cintegrada+Csum;

%---------------------------------------------------------------------------%
%Tipos de Fuerza%
syms x t
Fpv=input('Ingrese los valores de las fuerzas puntuales de forma [a,b,c, ...]
Fpv= ');
n1=length(Fpv);
Fpp=input('Ingrese los valores de las posiciones de fuerzas puntuales de forma
[a,b,c, ...] Fpp= ');
n2=length(Fpp);
Wd=input('Ingrese la funcion temporal y espacial distribuida po(x,t): (debe
incluir la variable x y t, si no hay ingrese 0*x*t) \n');
Nx=input('Ingrese la funcion de N(X): (debe incluir la variable x, si no hay
ingrese 0*x) \n');
phi_1=diff(phi);
%Rigidez geométrica generalizada%
kint=Nx*phi_1^2;
k_G=int(kint,0,L);
%Calculo de la fuerza generalizada%
Fd=Wd*phi;
Q1=int(Fd,0,L);
Qsum=0;
for i=1:n1
x=Fpp(i);
Qsum=Qsum+Fpv(i)*eval(phi)*Fpp(i);
end
Q=Q1+Qsum;
keq=k+k_G; %Rigidez equivalente
%Ecuaciòn diferencial:
disp("La ecuacion diferencial es:"+double(M)+"q.._v + "+double(C)+"q._v +
"+double(keq)+"q_v=")
disp(Q)
%Metodo Piecewise%
%Caracteristicas del sistema
wn=sqrt(keq/M);
z=C/(2*sqrt(M*keq));
%CI
xo=0.005;
xop=0.2;
wd=wn*sqrt(1-z^2);
%Definir deltaT dt
dt=0.02;
%Calculo de coeficientes%
A=exp(-z*wn*dt)*(z*sin(wd*dt)/(sqrt(1-z^2))+cos(wd*dt));
B=exp(-z*wn*dt)*(sin(wd*dt)/wd);
C=(1/k)*[2*z/(wn*dt) + exp(-z*wn*dt)*(((1-2*z^2)/(wd*dt)-z/(sqrt(1-
z^2))*sin(wd*dt))-(1+ 2*z/(wn*dt)*cos(wd*dt)))];
D=(1/k)*[1-2*z/(wn*dt) + exp(-z*wn*dt)*((-1+2*z^2)/(wd*dt)*sin(wd*dt) +
2*z/(wn*dt)*cos(wd*dt))];
Ap=-exp(-z*wn*dt)*(wn*sin(wd*dt)/(sqrt(1-z^2)));
Bp=exp(-z*wn*dt)*(cos(wd*dt)-z*sin(wd*dt)/(sqrt(1-z^2)));
Cp=(1/k)*[-1/dt + exp(-z*wn*dt)*(((wn/sqrt(1-z^2)+z/(dt*sqrt(1-
z^2)))*sin(wd*dt))+(1/dt)*cos(wd*dt))];
Dp=[1/(dt*k)]*[1-exp(-z*wn*dt)*((z/sqrt(1-z^2))*sin(wd*dt) +cos(wd*dt))];
%Condiciones inciales
u=0:0.005:20;
up=0:0.005:20;
u(1)=xo;
up(1)=xop;
n=20/0.005 - 1;
t=0:0.005:20;
disp("Espere esto puede tardar un par de minutos...")
Qeval=eval(Q);
for i = 1:n-1
u(i+1)=A*u(i)+B*up(i)+C*Qeval(i)+D*Qeval(i+1);
up(i+1)=Ap*u(i)+Bp*up(i)+Cp*Qeval(i)+Dp*Qeval(i+1);
end

x=input('Ingrese el valor de x para el cual desea la respuesta total en


[m]:\n');
vxt=eval(phi)*u;

figure(2)
plot(t,vxt)
title ('Respuesta total Met. Piecewise')
xlabel('tiempo [s]')
ylabel("v("+x+"t)")

También podría gustarte