振型叠加法和Newmark法计算结果不同
求解线性微分方程,在时域中,用振型叠加法和Newmark法计算得出的结果很不一样,这是为什么呢 可能是振型叠加法的模态数取少了,可以试着多取一些模态 我做过比较,会有一些差别,但不会差太多。 振型叠加法:1往往不考虑初始条件,,Newmark解法中则包含了初始条件
2.模态分解中一般要求阻尼可解藕,当阻尼不可解藕时,Newmark仍可以继续,当时振型叠加法往往需要将阻尼矩阵近似为可解藕矩阵,从而导致差异
3.当然Newmark中步长不能太大
回复 #3 wanyeqing2003 的帖子
这里有差别,我们该怎么评判解的正确性呢? Newmark方法是在时域中的分析,需要提供初值条件,也就是需要设置初始位移和速度。而振型叠加法是在频域内变换,对于解耦后的运动方程,可以在时域,也可以在频域内分析。 对于短时间内计算结果,时域分析和频域分析会有较大的偏差。这是因为存在初值的影响。经过一段长时间后,这样的偏差会减小。
频域分析注重的是稳态结果,所以初值影响应该忽略。
就方法本身来说振型叠加法和Newmark方法也会有一些差别,不过对于稳态响应和简单模型来说,误差不会太大。复杂模型难说。 就以单自由度系统来说吧,考虑阻尼比为0.05,质量为0.5,刚度为1
初始条件X0,V0均为0;
用在正弦激励(正弦激励为f=2*sin(5*t))下,单自由度系统响应的位移精确值和Newmark法出来的图形差距也很大,(Newmark的步长为0.01)。
也不知道为什么差距那么大 能不能把比较的图形,或者数据提供上来,以便于分析讨论。
按道理说,单自由度简单系统应该不会有多少差别。 Newmark可能结果能好些 图一是精确解图形
图二是Newmark法做出的解图形 %这是精确解程序
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的位移与时间的关系'); 从图形看:
1、精确解中,没有包含初值影响的因素;
2、newmark方法好像有一些谐波分量。
请检查数据。
我现在手边没有资料,我有时间再帮你看看。 我把原来用Newmark方法和振型叠加法分析的结果放上来,供参考。 这是一个两自由度模型。脉冲激励。结果非常接近。误差小于3%。
页:
[1]
2