向前看 发表于 2007-11-29 09:37

振型叠加法和Newmark法计算结果不同

求解线性微分方程,在时域中,用振型叠加法和Newmark法计算得出的结果很不一样,这是为什么呢

vehicle 发表于 2007-11-30 08:46

可能是振型叠加法的模态数取少了,可以试着多取一些模态

wanyeqing2003 发表于 2007-11-30 09:00

我做过比较,会有一些差别,但不会差太多。

VibrationMaster 发表于 2007-11-30 12:20

振型叠加法:

1往往不考虑初始条件,,Newmark解法中则包含了初始条件

2.模态分解中一般要求阻尼可解藕,当阻尼不可解藕时,Newmark仍可以继续,当时振型叠加法往往需要将阻尼矩阵近似为可解藕矩阵,从而导致差异

3.当然Newmark中步长不能太大

无水1324 发表于 2007-11-30 13:53

回复 #3 wanyeqing2003 的帖子

这里有差别,我们该怎么评判解的正确性呢?

wanyeqing2003 发表于 2007-11-30 15:30

Newmark方法是在时域中的分析,需要提供初值条件,也就是需要设置初始位移和速度。

而振型叠加法是在频域内变换,对于解耦后的运动方程,可以在时域,也可以在频域内分析。

wanyeqing2003 发表于 2007-11-30 15:32

对于短时间内计算结果,时域分析和频域分析会有较大的偏差。这是因为存在初值的影响。经过一段长时间后,这样的偏差会减小。

频域分析注重的是稳态结果,所以初值影响应该忽略。

就方法本身来说振型叠加法和Newmark方法也会有一些差别,不过对于稳态响应和简单模型来说,误差不会太大。复杂模型难说。

向前看 发表于 2007-11-30 19:33

就以单自由度系统来说吧,考虑阻尼比为0.05,质量为0.5,刚度为1
初始条件X0,V0均为0;
用在正弦激励(正弦激励为f=2*sin(5*t))下,单自由度系统响应的位移精确值和Newmark法出来的图形差距也很大,(Newmark的步长为0.01)。

也不知道为什么差距那么大

wanyeqing2003 发表于 2007-12-1 09:26

能不能把比较的图形,或者数据提供上来,以便于分析讨论。

按道理说,单自由度简单系统应该不会有多少差别。

后知后觉 发表于 2007-12-1 10:01

Newmark可能结果能好些

向前看 发表于 2007-12-1 13:31

图一是精确解图形

图二是Newmark法做出的解图形

向前看 发表于 2007-12-1 13:36

%这是精确解程序
clear all
close all
m=0.5;
c=0.05;
k=1;
x0=0;
v0=0;
tf=30;
delt=0.001;
w=5;
f0=2;
wn=sqrt(k/m);
z=c/(2*m*wn);
lan=w/wn;
wd=wn*sqrt(1-z^2);
A=sqrt(((v0+z*wn*x0)^2+(x0*wd)^2)/wd^2);
t=0:tf/1000:tf;
phi=atan2(2*z*lan,1-lan^2);
phi1=atan2(v0+z*wn*x0,x0*wd);
B=f0/(k*sqrt((1-lan^2)^2+(2*lan*z)^2));
x=A*exp(-z*wn*t).*sin(wd*t+phi1)+B*sin(w*t+phi);
plot(t,x);grid
xlabel('时间(s)')
ylabel('位移')
title('位移与时间的关系')

%这是Newmark法的程序
close all
clear all
tf=30;
delt=0.01;
fid1=fopen('disp1','wt');
m=0.5;
c=0.05;
k=1;
x0=0;
v0=0;
bita=1/6;
md=inv(m+delt/2*c+bita*delt^2*k);
ml=inv(m);
for t=0:delt:tf
    f=2*sin(5*t);
    if t==0
      xdd0=ml*(f-k*x0-c*v0);
    else
      xdd=md*(f-c*(v0+delt/2*xdd0)-k*(x0+delt*v0+(1/2-bita)*delt^2*xdd0));
      xd=v0+delt/2*(xdd0+xdd);
      x=x0+delt*v0+(1/2-bita)*delt^2*xdd0+bita*delt^2*xdd;
      xdd0=xdd;
      v0=xd;
      x0=x;
      fprintf(fid1,'%10.4f',x0);
    end
end
fid2=fopen('disp1','rt');
n=tf/delt;
x=fscanf(fid2,'%f');
t=1:n;
figure('numbertitle','off','name','自由度1的位移','pos',);
plot(t,x),grid on,xlabel('时间*0.1秒'),title('自由度1的位移与时间的关系');

wanyeqing2003 发表于 2007-12-1 15:36

从图形看:
1、精确解中,没有包含初值影响的因素;
2、newmark方法好像有一些谐波分量。
请检查数据。

我现在手边没有资料,我有时间再帮你看看。

wanyeqing2003 发表于 2007-12-1 15:53

我把原来用Newmark方法和振型叠加法分析的结果放上来,供参考。

wanyeqing2003 发表于 2007-12-1 15:54

这是一个两自由度模型。脉冲激励。结果非常接近。误差小于3%。
页: [1] 2
查看完整版本: 振型叠加法和Newmark法计算结果不同