shangguantengyu 发表于 2015-5-4 20:48

Newmark算出的位移响应,频率对不上(理论计算值与FFT变换后...

请问用Newmark算出的位移响应(对一多自由度系统),经FFT变换后,求出的频率与理论计算的不一致,是什么原因?以下的是我的程序

%Newmark算法
clear;clc;
m1 = 1; m2 = 1;m3 = 1;
k1 = 1000; k2 = 1000; k3 = 1000;
c1 = 0.01; c2 = 0.01; c3 = 0.01;
M = ;
C = ;
K = ;%参数
= size(K);
dt = 1/20;%步长
tend = 100;%仿真时间
gama = 0.5;
beta = 0.25;
Nalpha0 = 1/beta/(dt^2);%A1
Nalpha1 = gama/beta/dt; %A2
Nalpha2 = 1/beta/dt;    %A3
Nalpha3 = 1/2/beta - 1; %A4
Nalpha4 = gama/beta - 1; %A6
Nalpha5 = dt/2*(gama/beta-2); %A5
Nalpha6 = dt*(1-gama);
Nalpha7 = gama*dt;
NK1 = K + Nalpha0*M + Nalpha1*C;%有效刚度
Nd = zeros( n, tend/dt + 1 );%位移
Nv = zeros( n, tend/dt + 1 );%速度
Na = zeros( n, tend/dt + 1 );%加速度
f = zeros( n, tend/dt + 1 );%载荷
Nd(1,1) = 0; %初始位移值
Nd(2,1) = 0;
Nd(3,1) = 0;
Nv(1,1) = 0;%速度初始值
Nv(2,1) = 0;
Nv(3,1) = 0;
Na(1,1) = 0; %初始加速度
Na(2,1) = 0;
Na(3,1) = 0;
f(:,1) = ;%初始载荷
t = 0 : dt : tend;
% y = unifrnd(-1,1,1,length(t));
y = randn(length(t),1);
for i = 2 : 1 : length(t)
    f(:,i)=;%不同时刻的载荷
    f2 = f(:,i) + M*(Nalpha0*Nd(:,i-1)+Nalpha2*Nv(:,i-1)+Nalpha3*Na(:,i-1))+ C*(Nalpha1*Nd(:,i-1)+Nalpha4*Nv(:,i-1)+Nalpha5*Na(:,i-1)); %有效载荷
    Nd(:,i) = inv(NK1)*f2; %求位移
    Na(:,i)=Nalpha0*(Nd(:,i)-Nd(:,i-1))-Nalpha2*Nv(:,i-1)-Nalpha3*Na(:,i-1);%求加速度
    Nv(:,i) = Nv(:,i-1) + Nalpha6*Na(:,i-1) + Nalpha7*Na(:,i);%求速度
end

mni987654321 发表于 2017-10-26 11:32

我也遇到过,你解决了吗?我一般是调一下步长试试

william 发表于 2017-10-27 14:43

mni987654321 发表于 2017-10-26 11:32
我也遇到过,你解决了吗?我一般是调一下步长试试

调步长管用吗

mni987654321 发表于 2017-10-30 09:11

william 发表于 2017-10-27 14:43
调步长管用吗

我只能说有时候管用,具体的原因我没有仔细推敲过,一般都是提高采样频率计算,然后降采样
页: [1]
查看完整版本: Newmark算出的位移响应,频率对不上(理论计算值与FFT变换后...