shock 发表于 2009-2-12 08:26:53

弹簧振动问题

一个常见的三自由度质量-弹簧系统,其动力学方程为:
{x''}+{x}={F}
质量、刚度和激励矩阵分别为:
M=diag();k=;F={sin(3*t);0;0};
我分别用模态叠加法和Runge-Kutta算法求解,但是两种解法得到的结果却不相同,请问这是什么原因,何种方法才是正确的。
这是我用模态叠加法的代码:
%利用模态叠加法分析扭转振动的实例
%定义符号,a、b为阻尼的比例系数
syms t;
%齿轮系统参数
m1=1;m2=1;m3=1;k1=2;k2=2;k3=1;k4=2;
M=diag();
% K=[k1+k2 -k2 0;
%   -k2 k2+k3 -k3;
%   0 -k3 k3+k4];
K=;
F1=1;F2=0;F3=0;w=3;
w0(1)=w;w0(2)=0*w;w0(3)=0*w;
f1=F1*sin(w0(1)*t);f2=F2*sin(w0(2)*t);f3=F3*sin(w0(3)*t);
%求振动系统的正则振型矩阵和固有频率
=eig(K,M);
ModeValue=sqrt(diag(V));
w1=ModeValue(1);
w2=ModeValue(2);
w3=ModeValue(3);
%定义振动系统的初始条件
x0=';
X0=N'*M*x0;
    a1=X0(1);
    a2=X0(2);
    a3=X0(3);
%正则变换,求出正则坐标下的激励力
Q=;
Q_Fai=N'*;
Qn=N'*diag();
% Qn1=N'*;
% Qn2=N'*;
% Qn3=N'*;
Q_Fai1=N'*;
Q_Fai2=N'*;
Q_Fai3=N'*;
%求出在正则坐标下的响应
n=length(M);
%求系统的无阻尼受迫振动解
for i=1:3
    b1(i)=1/(ModeValue(i)^2-w^2);
    b2(i)=1/(ModeValue(i)^2-(3*w)^2);
    b3(i)=1/(ModeValue(i)^2-(8*w)^2);
end
Xn1=b1'.*Q_Fai1;
Xn2=b2'.*Q_Fai2;
Xn3=b3'.*Q_Fai3;
x1=N*Xn1;
x2=N*Xn2;
x3=N*Xn3;
x=x1+x2+x3;
% x=C*Xn;
% Qn=N'*;
x=-0.088.*.*sin(3*t)-2.63.*[-1.732;0;1.732].*sin(3*t)+0.21.*.*sin(3*t)
%定义仿真时间和采样点数
t=0:0.01:100;
%对结果进行fft变换
u1=eval(x(1));
u2=eval(x(2));
u3=eval(x(3));(省去后面的画图和FFt变换部分),


下面是调用ode45函数的代码
%test4.m
function f=test4(t,y);
m1=1;m2=1;m3=2;k=1;
U=[0 1 0 0 0 0;
    -3 0 1 0 0 0;
    0 0 0 1 0 0;
    1 0 -2 0 1 0;
    0 0 0 0 0 1;
    0 0 1 0 -3 0];
f=U*y+';

%test4Result.m
=ode45('test4',,');
u1=y(:,1);
u2=y(:,3);
u3=y(:,5);
(后面省去画图和fft变换部分)

zajhappy 发表于 2009-2-12 11:14:17

老大,可以讲解下吗?没有看明白

84883181 发表于 2009-2-17 17:05:30

请教

我也没有看懂可以讲一下吗
页: [1]
查看完整版本: 弹簧振动问题