我想获得具有质量矩阵 M 和刚度矩阵 K 的简单机械系统的固有频率(.mat-file -> 下载):
M x''(t)+K x(t)=0 (x= Position).
基本上,这意味着我必须解决det(K-w^2*M)= 0。但是我如何在 Matlab 中解决它(或者如有必要,将其简化为标准特征值问题并解决它)?矩阵绝对可以用Abaqus(FEM软件)求解,但我必须在Matlab中解决它。
我尝试了以下内容但没有成功:det(K-w^2*M)=0 => det(M^-1*K-w^2*I)=0 (I := unity matrix)但是用
sqrt(eigs(K*M^-1))
提供错误的值和警告:
"矩阵对于工作精度至关重要。
In matlab.internal.math.mpower.viaMtimes(第 35 行)"
其他错误值可以通过 det(K-w^2*M)=0 => det(I/(w^2)-M*K^-1)=0 获得:
1./sqrt(eigs(M*K^-1))
任何提示都会对我有所帮助。提前谢谢。
正如@Arpi提到的,你实际上想解决广义的特征值问题:
K*x = w^2*M*x
由于矩阵 K 和 M 显然是单数(或只是其中之一),因此无法使用 eigs
,但您必须使用 eig
:
V = eig(K,M);
w = sqrt(V);