好的,这是它应该如何运作的。在while循环中,计算变量lambda中U的增量的特征值。这个想法是在变量lambda的实部变为正数时断开while循环,并返回发生这种情况的U的值。我试图使用一个for循环为多个k1值做这个,所以最后我有一个向量,其中在一列中我有我的k1值,在下一列中的值为λ,其中lambda变为正数。希望你明白这个主意。问题是,某些东西似乎并没有在这里工作,我真的无法弄清楚是什么。谢谢你的帮助
rho=1.225;
b=0.2;
m=5;
I_cg=0.05;
k1=2000;
k2=1000;
c1=10;
k_theta=2000;
c_theta=2;
c=2*b;
s=1;
x2=0.1;
xg=0.04;
M=[m -m*xg;-m*xg (m*(xg^2)+I_cg)];
kRoof = 60;
for kIndex = 0:kRoof
kStart = 2000;
k1 = kStart * kIndex;
U=0.1;
lambda=-1;
while (real(lambda)<0)
i=1;
U(i)=U+i;
q=0.5*rho*U(i)^2;
B=[((2*pi*q*s*c)/U(i))+c1 (pi*q*s*c)/(5*U(i));-pi*q*s*(c^2)/(2*U(i)) c_theta];
C=[k1+k2 -k2*x2+(2*pi*q*s*c);-k2*x2 (k2*(x2^2)+(k_theta)-(pi*q*s*(c^2)/2))];
A=[M B;zeros(2) M];
D=[zeros(2) C;-M zeros(2)];
lambda=eig(D,-A);
i=i+1
U=U+i
if imag(lambda)==0
disp(lambda)
end
end
end