【发布时间】:2016-04-27 16:57:52
【问题描述】:
我想获得一个质量矩阵 M 和刚度矩阵 K 的简单机械系统的固有频率(.mat-file -> Download):
Mx''(t)+Kx(t)=0(x= 位置)。
这基本上意味着,我必须解决 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))
提供错误的值和警告:
“矩阵对于工作精度来说是奇异的。
在 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))
任何提示都会对我有所帮助。提前致谢。
【问题讨论】:
-
您的问题被称为generalized eigenvalue problem 并且“在大多数情况下,最好不要执行反演,而是解决最初所述的广义特征值问题”。幸运的是,Matlab 可以处理这类问题。在您的情况下:
eigs(K,M)。问题似乎是M和K都是单数。 -
非常感谢。问题只是矩阵与 Abaqus 求解的矩阵完全相同。 Abaqus 产生了很好的结果(可以通过分析验证)。请允许我提出第二个问题:是否也可以在 Matlab 中使用阻尼和复特征值以某种方式做到这一点?
-
是的,有趣的是Abaqus可以解决这个问题。我很确定 Matlab 可以处理复杂的特征值,可能也有阻尼(与速度成正比?)。关于原始问题:刚度矩阵是奇异的很奇怪,因为这意味着结构不能承受任何力。你确定这些是正确的矩阵吗?如果是,我建议先用一个简单的静态问题复制 Abaqus 结果,其中只涉及刚度矩阵。
-
谢谢。 Abaqus 有一个导出方程组的选项。我用过。我模拟了一个弹性很小的无质量弹簧,它连接到一个弹性非常高的质量 - 所以基本上是一个质量阻尼器。但是你的提示给了我一些想法,我明天可以做什么。对于第二个问题:是的,它与速度成正比——非常简单:Mx''(t)+Dx'(t)+Kx(t)=0