懒羊羊2.0 发表于 2010-3-23 22:55

线性加速度法求解三自由度系统振动响应的计算程序

怎么用matlab编写线性加速度法啊?本人刚接触matlab,很多基本函数都不太懂,各位高手帮帮我吧

3F是线性加速度法求解三自由度谐迫振动响应的程序,已测试没有错误,本来该程序是解如下振动微分方程的mx''+cx'+kx=f(t).
现在f(t)=kQ(t)+cQ'(t)
Q(t)是一组离散变量,请高手帮我看看该怎么改啊?
该模型相当于人骑自行车行驶在高低不平的路面上,Q(t)就是路面参数,我需要得到的是人和自行车的振动响应,谢谢

[ 本帖最后由 ChaChing 于 2010-3-24 23:28 编辑 ]

hehy350901 发表于 2010-3-24 16:37

把程序贴上来

这样方便大家阅读

懒羊羊2.0 发表于 2010-3-24 20:01

高手们就帮帮我吧,确实不会啊,纠结一下午了

高手们就帮帮我吧,确实不会啊,纠结一下午了

function vtb5(tf,delt)
close all;clc
fid1=fopen('disp','wt');
m=2*;
c=1.5*;
k=50*;
x0=';
v0=';
bita=1/6;
md=m+delt/2*c+bita*delt^2*k;
=eig(m\k);
diag(sqrt(F));
for t=0:delt:tf;
    f=';
    if t==0;xdd0=m\(f-k*x0-c*v0);
    else
      xdd=md\(f-c*(v0+delt/2*xdd0)-k*(x0+delt*v0+(1/2-bita)*delt^2*xdd0));
x=md\(m*(x0+delt*v0+delt^2/3*xdd0)+c*(delt/2*x0+delt^2/3*v0+delt^3/12*xdd0)+delt^2/6*f);
      xd=v0+delt/2*(xdd0+xdd);
      xdd0=xdd;v0=xd;x0=x;
      fprintf(fid1,'%10.4f',x0);
    end
end
    fid2=fopen('disp','rt');
    n=tf/delt;
    x=fscanf(fid2,'%f',);
    t=1:n;
    figure('numbertitle','off','name','自由度1的位移','pos',);
    plot(t,x(1,t)),grid,xlabel('时间*0.1秒'),title('自由度1的位移与时间的关系')
    figure('numbertitle','off','name','自由度2的位移','pos',);
    plot(t,x(2,t)),grid,xlabel('时间*0.1秒'),title('自由度2的位移与时间的关系')
    figure('numbertitle','off','name','自由度3的位移','pos',);
    plot(t,x(3,t)),grid,xlabel('时间*0.1秒'),title('自由度3的位移与时间的关系')


[ 本帖最后由 ChaChing 于 2010-3-24 23:29 编辑 ]

destiny 发表于 2010-3-31 10:29

LZ这个我难题解决了吗?我也遇到相同的问题,好头痛啊。

懒羊羊2.0 发表于 2010-4-1 22:31

回复 地板 destiny 的帖子

路面参数用随机rand,然后q'(t)也用类似求加速度的方法,我的问题解决了,不知道能不能帮上你。
页: [1]
查看完整版本: 线性加速度法求解三自由度系统振动响应的计算程序