leeking30 发表于 2008-6-6 11:05

求助wilson theta法求解响应,怎么算的结果与书上不一样啊,附求解程序

今天使用wilson theta法算了 书上一道题, 怎么算出来和书上使用的WILSON THETA法结果不一样啊, 求解过程中 求解步长=0.28, theta=1.4,和书上是一样的, 书上给出第二点的位移响应是0.366,1.34,2.64,3.92。。。。。。我的程序算出来对不上,
把程序附上, 望那个大侠能帮忙指正下!!
还弱弱的问一下,初始条件位移,速度,加速度都设定为0对不? 好像作用力就有加速度了吧??

:@Q :@Q 发现这个程序算任何系统总是发散???怎么回事???

clear
K=;
M=;



%%%%%%%%%%%%%%%%%%%设定求解时域信号范围 %%%%%%%%%%%%%%%%%                  
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 编辑 ]

leeking30 发表于 2008-6-6 19:02

已经解决!!:lol :lol

ch_j1985 发表于 2008-6-6 19:26

原帖由 leeking30 于 2008-6-6 19:02 发表 http://www.chinavib.com/forum/images/common/back.gif
已经解决!!:lol :lol

LZ能否跟大家分享一下问题是怎么解决的?

iewoug 发表于 2008-6-7 13:14

回复 2楼 的帖子

希望能在解决问题之后加以说明
也许会帮助其他人少走弯路:victory:

leeking30 发表于 2008-6-10 15:37

x(:,i+1)=x(:,i)+dt*dx(:,i)+dt^2/6*(dx(:,i+1)+2*ddx(:,i));
应该是x(:,i+1)=x(:,i)+dt*dx(:,i)+dt^2/6*(ddx(:,i+1)+2*ddx(:,i));
ddx 写成dx 了!!!

leeking30 发表于 2008-6-10 15:38

还有一个注意的地方,加速度初值 设定错了! 请大家注意

第七页 发表于 2010-5-22 15:49

楼主加速度是如何设置的啊?你看哪本书上有例子啊?我也在学

lvhaiwei007 发表于 2011-1-11 15:17

回复 5 # leeking30 的帖子

不知楼主用的是那本参考书?
页: [1]
查看完整版本: 求助wilson theta法求解响应,怎么算的结果与书上不一样啊,附求解程序