求助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 编辑 ] 已经解决!!:lol :lol 原帖由 leeking30 于 2008-6-6 19:02 发表 http://www.chinavib.com/forum/images/common/back.gif
已经解决!!:lol :lol
LZ能否跟大家分享一下问题是怎么解决的?
回复 2楼 的帖子
希望能在解决问题之后加以说明也许会帮助其他人少走弯路:victory: 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 了!!! 还有一个注意的地方,加速度初值 设定错了! 请大家注意 楼主加速度是如何设置的啊?你看哪本书上有例子啊?我也在学 回复 5 # leeking30 的帖子
不知楼主用的是那本参考书?
页:
[1]