En este ejemplo se halla las graficas que describen posicion, velocidad y aceleración
para cada una de las cuatro barras de un mecanismo de cuatro barras.
Aqui se escribe la ecuacion de cierre y se utiliza "fsolve" para resolver las posiciones
a cada instante.
function y=ejemplo(x) y=x^3 + sin(2*x^2 +5) endfunction // fsolve necesita un parametro inicial x0=1 xsol=fsolve(x0,ejemplo) // La ecuacion de cierre r2=0.1 ; r3=0.4; r4=0.35 Z = [0.5;-0.2] grados=1*%pi/180; radian=180/%pi; fi2=45*grados W2 = 10; // 10 rad/seg alfa2 = 0; // Usamos la ecn . de cierre //r2*e^i(fi2) + r3*e^i(fi3) - r4*e^i(fi4) - Z = 0 function y=cierre(x) // x=[fi3,fi4] fi3=x(1); fi4=x(2); y(1)=r2*cos(fi2)+r3*cos(fi3)-r4*cos(fi4)-Z(1); y(2)=r2*sin(fi2)+r3*sin(fi3)-r4*sin(fi4)-Z(2); endfunction // Cinematica function y=Velocidades(fi2, fi3, fi4, w2) //w3 y(1)=-w2*r2*cos(fi2-fi4+%pi/2)/(r3*cos(fi3-fi4+%pi/2)) //w4 y(2)=w2*r2*cos(fi2-fi3+%pi/2)/(r4*cos(fi4-fi3+%pi/2)) endfunction function y=Aceleraciones(fi2, fi3, fi4, w2, w3, w4, alfa2) //alfa3 a=r2*cos(fi2-fi4+%pi)*(w2)^2; b=r3*cos(fi3-fi4+%pi)*(w3)^2; c=r4*w4*w4; d=alfa2*r2*cos(fi2-fi4+%pi/2); y(1)=-(a+b+c+d)/(r3*cos(fi3-fi4+%pi/2)); //w4 a=r2*cos(fi2-fi3+%pi)*(w2)^2; b=alfa2*r2*cos(fi2-fi4+%pi/2); c=-r3*(w3)^2; d=-r4*w4*w4*cos(fi4-fi3+%pi); y(2)=(a+b+c+d)/(r4*cos(fi4-fi3+%pi/2)); endfunction //estimativo inicial fi3_ini = 10*grados; fi4_ini = 100*grados; x0=[fi3_ini;fi4_ini]; xsol=fsolve(x0,cierre); Npasos= 100; dt = 2*%pi/(W2*Npasos); Tf= Npasos*dt; Soluciones=zeros(Npasos+1,6); Tiempo=zeros(Npasos+1,1); i=1; fi2_0=45*grados; for t=0:dt:Tf, // Calcular el fi2 para cada tiempo fi2 = fi2_0 + W2*t; //Calcular fi3, y fi4 xsol=fsolve(x0,cierre); xsolg = xsol*radian; // expresado en grados x0(1)=xsol(1); // actualizar el vaor de x0 x0(2)=xsol(2); // para el nuevo incremento dt vv=Velocidades(fi2,xsol(1),xsol(2),W2); aa=Aceleraciones(fi2,xsol(1),xsol(2),W2,vv(1),vv(2),0); // Guardar los alores calculados Soluciones(i,1)=xsolg(1);// fi3 Soluciones(i,2)=xsolg(2);// fi4 Soluciones(i,3)=vv(1);// w3 Soluciones(i,4)=vv(2);// w4 Soluciones(i,5)=aa(1);// alfa3 Soluciones(i,6)=aa(2);// alfa4 Tiempo(i)=t; i = i+1 end plot(Tiempo,Soluciones(:,1)); title("Fi3") scf plot(Tiempo,Soluciones(:,2)); title("Fi4") scf plot(Tiempo,Soluciones(:,3)); title("W3") scf plot(Tiempo,Soluciones(:,4)); title("W4") scf plot(Tiempo,Soluciones(:,5)); title("alfa3") scf plot(Tiempo,Soluciones(:,6)); title("alfa4")