|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?我要加入
x
今天使用wilson theta法算了 书上一道题, 怎么算出来和书上使用的WILSON THETA法结果不一样啊, 求解过程中 求解步长=0.28, theta=1.4,和书上是一样的, 书上给出第二点的位移响应是0.366,1.34,2.64,3.92。。。。。。我的程序算出来对不上,
把程序附上, 望那个大侠能帮忙指正下!!
还弱弱的问一下,初始条件位移,速度,加速度都设定为0对不? 好像作用力就有加速度了吧??
:@Q :@Q 发现这个程序算任何系统总是发散???怎么回事???
clear
K=[6 -2;-2 4];
M=[2,0;0,1];
%%%%%%%%%%%%%%%%%%%设定求解时域信号范围 %%%%%%%%%%%%%%%%%
dt=0.28; % 求解步长(时间步长)
tend=250; % 时域信号总时间(秒)
t=0:dt:tend; % 设定时域范围
num=size(t); % 时间信号的个数
%设置阻尼矩阵
C=0;
FF=zeros(2,num(1,2));
for i=1:num(1,2)
FF(2,i)=10;
end
n=2; %%%%2自由度
%%%%%%%%%%%%设定theta值%%%%%%%%%%%%%%%%%%%%
theta=1.4; % theta>1.36 稳定
%%%%%%%%%%%%%%%%%% 设置各点初始位移,初始速度,初始加速度%%%%%%%%%%%%%%%
x=zeros(n,num(1,2)); % 初始化位移
dx=zeros(n,num(1,2)); % 初始化速度
ddx=zeros(n,num(1,2)); % 初始化加速度
%%这里假设所有点的初始化状态都为0,即第一列都为0
x(:,1) =0 ; % 初始位移
dx(:,1) =0 ; % 初始速度
ddx(:,1)=0 ; % 初始加速度
%%%%%%%%%%%%%%%%%%使用wilson-theta法求解响应%%%%%%%%%%%%%%%%%%
KK=K+6/(theta*dt)^2*M+3/(theta*dt)*C; % 即方法中的K'阵
R=zeros(n,1); % 初始化R阵
%%%%%%
for i=1:num(1,2)-1
R=FF(:,i)+theta*(FF(:,i+1)-FF(:,i))+M*(6/(theta*dt)^2*x(:,i)+6/(theta*dt)*dx(:,i)+2*ddx(:,i))+C*(3/(theta*dt)*x(:,i)+2*dx(:,i)+theta*dt/2*ddx(:,i));
XX=KK^(-1)*R; % XX为 t+theta*delta(t) 时的位移,实质是求解静力方程
ddx(:,i+1)=1/theta*6/(theta*dt)^2*(XX-x(:,i))-1/theta*6/(theta*dt)*dx(:,i)+(1-3/theta)*(ddx(:,i));
dx(:,i+1)=dx(:,i)+dt/2*(ddx(:,i+1)+ddx(:,i));
x(:,i+1)=x(:,i)+dt*dx(:,i)+dt^2/6*(dx(:,i+1)+2*ddx(:,i));
i
end
在线等!!!!!!!!!!!!:@Q :@Q :@L :'(
[ 本帖最后由 leeking30 于 2008-6-6 11:11 编辑 ] |
|