声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2392|回复: 7

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

[复制链接]
发表于 2008-6-6 11:05 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

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 编辑 ]
回复
分享到:

使用道具 举报

 楼主| 发表于 2008-6-6 19:02 | 显示全部楼层
已经解决!!:lol :lol
发表于 2008-6-6 19:26 | 显示全部楼层
发表于 2008-6-7 13:14 | 显示全部楼层

回复 2楼 的帖子

希望能在解决问题之后加以说明
也许会帮助其他人少走弯路:victory:
 楼主| 发表于 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 了!!!

评分

1

查看全部评分

 楼主| 发表于 2008-6-10 15:38 | 显示全部楼层
还有一个注意的地方,加速度初值 设定错了! 请大家注意

评分

2

查看全部评分

发表于 2010-5-22 15:49 | 显示全部楼层
楼主加速度是如何设置的啊?你看哪本书上有例子啊?我也在学
发表于 2011-1-11 15:17 | 显示全部楼层
回复 5 # leeking30 的帖子

不知楼主用的是那本参考书?
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-28 02:28 , Processed in 0.093869 second(s), 19 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表