施奇 发表于 2013-5-28 13:05:57

识别单自由度系统振动参数遇到问题

在matlab中用递推最小二乘法,识别单自由度系统在正弦型干扰力作用下的强迫振动,得出的参数全为零,求答疑。系统的运动微分方程式为 400x''+36x'+160x=5000sin(100t),x(0)=12,x'(0)=10所用程序如下,其中S为运动微分方程所求得的x的解析解t=0:50;S=(6666139369*cos((15919^(1/2)*t)/200))./(555511562*exp((9*t)/200)) - cos((15919^(1/2)*t)/200).*((625*cos(100*t - (15919^(1/2)*t)/200))/1111023124 + (625*cos(100*t + (15919^(1/2)*t)/200))/1111023124 + (1041625*sin(100*t - (15919^(1/2)*t)/200))/1666534686 + (1041625*sin(100*t + (15919^(1/2)*t)/200))/1666534686 + (3125125*15919^(1/2)*cos(100*t - (15919^(1/2)*t)/200))/8843188555478 - (3125125*15919^(1/2)*cos(100*t + (15919^(1/2)*t)/200)):'( /8843188555478 + (41665016875*15919^(1/2)*sin(100*t - (15919^(1/2)*t)/200))/53059131332868 - (41665016875*15919^(1/2)*sin(100*t + (15919^(1/2)*t)/200))/53059131332868) + (3554720134963*15919^(1/2)*sin((15919^(1/2)*t)/200))./(26529565666434*exp((9*t)/200)) - (1250*15919^(1/2)*sin((15919^(1/2)*t)/200).*(((9*sin(t*(15919^(1/2)/200 - 100)))/200 - cos(t*(15919^(1/2)/200 - 100))*(15919^(1/2)/200 - 100))/((15919^(1/2)/200 - 100)^2 + 81/40000) - ((9*sin(t*(15919^(1/2)/200 + 100)))/200 - cos(t*(15919^(1/2)/200 + 100)).*(15919^(1/2)/200 + 100))/((15919^(1/2)/200 + 100)^2 + 81/40000)))/15919;plot(t,S)U=5000*sin(100*t);S(2)=0;S(1)=0;c0=';p0=10^6*eye(3,3);E=0.0000005;c=;e=zeros(3,50);for k=3:50;      h1=[-S(k-1),-S(k-2),u(k-1)]'; x=h1'*p0*h1+1; x1=inv(x);   k1=p0*h1*x1;    d1=S(k)-h1'*c0; c1=c0+k1*d1;    e1=c1-c0;    e2=e1./c0;    e(:,k)=e2;         c0=c1;    c(:,k)=c1;    p1=p0-k1*k1'*;    p0=p1;    if e2<=E         break;    endendc,e
页: [1]
查看完整版本: 识别单自由度系统振动参数遇到问题