cmi码型变换matlab程序_【转载】动力时程分析入门 [含Matlab源码]

本文通过Matlab程序对比了Duhamel积分、Fourier变换法、中心差分方法和Newmark方法在单自由度弹性体系中的精度。四种方法在不同时间步长下的表现各异,Duhamel方法精度最高,Newmark线性加速度法次之,中心差分法和Newmark常加速度法精度相当。此外,当时间间隔取0.1s时,FFT算法采样误差较大。文章还介绍了功率谱方法在随机过程反应分析中的应用,并指出非线性体系需要采用时域逐步积分法。
摘要由CSDN通过智能技术生成

Duhamel积分、Fourier变换法、中心差分方法、Newmark法、功率谱法……傻傻分不清楚,相信有不少小伙伴像笔者一样好奇:这些方法精度如何,结果有什么特点?以下笔者将以单自由度弹性体系为例,对比这几种方法的精度。为了便于感兴趣的小伙伴重现,同时附上了Matlab代码。

算例为《结构动力学》(刘晶波主编)习题5.2

33ab7bf16c727c0f963ba8e431673f3e.png

518299bed6ae25e3b2514290c6936c86.png

1  Duhamel积分方法

Duhamel积分是一种时域分析方法,它将荷载分解为一系列脉冲,获得每一个脉冲作用下结构的反应,然后叠加每一脉冲作用下的反应得到结构总的反应。Duhamel积分方法以积分的方式给出了体系运动的解析表达式(忽略离散采样带来的误差的情况下),但从实际应用上看,当采用数值积分时,其计算效率不高,因为对于计算任一个时间点t的反应,积分都要从0积到t,而实际要计算一时间点系列,可能要几百到几千个点,计算量很大。因为使用了叠加原理,仅适用于线弹性分析。

Matlab程序如下:

function y=duhamel(dt)

%duhamel

m=17.5; %质量

k=875.5; %刚度

zeta=0.14138;%阻尼比

%dt=0.01; %时间步长

t0=0; %起始时间

t2=6.4; %结束时间

w0=sqrt(k/m);

w1=w0*sqrt(1-zeta^2);

t=t0:dt:t2;

y=t;

for i=1:(length(t))

    x=linspace(t(1),t(i));

    px=(100*x).*(x>=0&x<=0.4)+(80-100*x).*(x>0.4&x<0.8);

    a=px.*exp(zeta*w0*x).*cos(w1*x);

    A=trapz(x,a);

    b=px.*exp(zeta*w0*x).*sin(w1*x);

    B=trapz(x,b);

    y(i)=exp(-zeta*w0*t(i))*(A*sin(w1*t(i))-B*cos(w1*t(i)))/(m*w1);

end

    ymax=max(y)

    figure

    plot(t,y);

2 Fourier变换法

Fourier变换法是一种频域分析方法,其基本计算步骤是:

1)对外荷载做Fourier变换,得到外荷载的Fourier谱;

2)利用复频反应函数得到反应的频域解;

3)应用Fourier逆变换,得到反应的时域解。

在用频域法分析中涉及到两次Fourier变换,均为无穷域积分,特别是Fourier逆变换,被积函数是复数,有时涉及复杂的围道积分。当外荷载是复杂的时间函数(如地震动)时,用解析型的Fourier变换几乎是不可能的,实际计算中大量采用的是离散Fourier变换。因为使用了叠加原理,仅适用于线弹性分析。

Matlab程序如下:

function [un,tf]=qiaoFFT(dt,N)

% Fourier

%% 执行FFT点数为64

% 构建原信号

% dt=0.1;

% N=64;

t=[0:N-1]*dt;  % 时间序列

xn=(100*t).*(t>=0&t<=0.4)+(80-100*t).*(t>0.4&t<0.8);

subplot(2,2,1)

plot(t,xn)  % 绘出原始信号

xlabel('时间/s'),title('原始信号')  

axis([0 6.4 0 50])  % 调整坐标范围

% FFT分析

NN=N;  % 执行64点FFT

XN=fft(xn,NN);  %

f0=1/(dt*NN);  % 基频

f=[0:NN-1]*f0;  % 频率序列

A=

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值