Page 386 - MATLAB an introduction with applications
P. 386

Direct Numerical Integration Methods ———  371


                   M=[1 0;0 10];
                   C=[0.5 –0.1;–0.1 0.1];
                   dt=0.05;T=2;
                   X0=[0;0];X0d=[0;0];F0=[0;10];
                   X0dd=inv(M)*(F0–C*X0d–K*X0);
                   theta=1.4;
                   a0=6/(theta*dt)^2;a1=3/(theta*dt);a2=2*a1;
                   a3=2;a4=(1/2*theta*dt);a5=–a2/theta;
                   a6=1–3/theta;
                   a7=dt/2;a8=dt^2/6;
                   Kb=K+a0*M+a1*C;
                   i=1;
                   X(:,1)=X0;Xd(:,1)=X0d;Xdd(:,1)=X0dd;t=0;
                   fprintf(‘time(s)\t\tX1\t\tX2\n’);
                   fprintf(‘%f\t%f\t%f\n’,t,X(1,1),X(2,1));
                   for t=dt:dt:T
                      i=i+1;
                      F=[0;10];
                      Ftb=F0+M*(a0*X(:,i–1)+a2*Xd(:,i–1)+a3*Xdd(:,i–1))+C*(a1*X(:,i–1)
                         + a3*Xd(:,i–1)+a4*Xdd(:,i–1))+theta*(F–F0);
                      Xt(:,i)=inv(Kb)*Ftb;
                      Xdd(:,i)=(a0/theta)*(Xt(:,i)–X(:,i–1))+a5*Xd(:,i–1)+a6*Xdd(:,i–1);
                      Xd(:,i)=Xd(:,i–1)+a7*(Xdd(:,i)+Xdd(:,i–1));
                      X(:,i)=X(:,i–1)+dt*Xd(:,i–1)+a8*(Xdd(:,i)+2*Xdd(:,i–1));
                      F0=F;
                      fprintf(‘%f\t%f\t%f\n’,t,X(1,i),X(2,i));
                   end
                   t=[0:dt:T];
                   plot(t,X(1,:),’–p’,t,X(2,:),’–*’)
                   xlabel(‘time(s)’);
                   ylabel(‘displacement(m)’);
                   legend(‘DOF–1’,’DOF–2');
                   grid on;

                   The output is shown below:
                                 time            X(1)           X(2)
                               0.000000        0.000000        0.000000
                               0.050000        0.000003        0.001250
                               0.100000        0.000022        0.004998
   381   382   383   384   385   386   387   388   389   390   391