yanyongju 发表于 2006-11-21 19:03

欧拉法求解多自由系统响应的MATLAB程序

function =vbr(n,dt,x0,xd0,a,b,c,u)

%vbr
%Solves the forced multiples degree of freedom system using Euler's method.
%x=vbr(n,dt,x0,a,u)
%Solves the system given the initial state vector 'x0',
%                        the state matrix 'a',
%                        the time step to be used 'dt',
%                        and the number of steps to take 'n'.
%    The force matrix u is ordered such that the nth column of u is the force vector u evaluated at time n*dt.
%=vbr(n,dt,x0,v0,m,d,k,u)
%Solves the system given the initial displacement vector 'x0',
%                        the mass matrix 'm',
%                        the stiffness matrix 'k',
%                        and the damping matrix 'd'.
%    The remaining parameters are as described above.
%The outputs are in the form of a matrix where each column represents the
%states a one time step and the rows represent a state as a function of time.

if nargin==8
   la=length(a);
   x0=;
   a=;
   u=;
else
   u=a;
   a=xd0;
end


% -----------------------------------------------
%             Where the action is.
% -----------------------------------------------
x(:,1)=x0;
for i=2:1:n+1
x(:,i)=a*dt*x(:,i-1)+x(:,i-1)+dt*u(:,i-1);
end
% -----------------------------------------------
%             Where the action is finished.
% -----------------------------------------------

lx=length(a);
if lx/2==floor(lx/2)
xd=x(lx/2+1:lx,:);
x=x(1:lx/2,:);
else
xd=x;
end
页: [1]
查看完整版本: 欧拉法求解多自由系统响应的MATLAB程序