线性加速度法求解三自由度系统振动响应的计算程序
怎么用matlab编写线性加速度法啊?本人刚接触matlab,很多基本函数都不太懂,各位高手帮帮我吧3F是线性加速度法求解三自由度谐迫振动响应的程序,已测试没有错误,本来该程序是解如下振动微分方程的mx''+cx'+kx=f(t).
现在f(t)=kQ(t)+cQ'(t)
Q(t)是一组离散变量,请高手帮我看看该怎么改啊?
该模型相当于人骑自行车行驶在高低不平的路面上,Q(t)就是路面参数,我需要得到的是人和自行车的振动响应,谢谢
[ 本帖最后由 ChaChing 于 2010-3-24 23:28 编辑 ]
把程序贴上来
这样方便大家阅读高手们就帮帮我吧,确实不会啊,纠结一下午了
高手们就帮帮我吧,确实不会啊,纠结一下午了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 编辑 ] LZ这个我难题解决了吗?我也遇到相同的问题,好头痛啊。
回复 地板 destiny 的帖子
路面参数用随机rand,然后q'(t)也用类似求加速度的方法,我的问题解决了,不知道能不能帮上你。
页:
[1]