【问题标题】:Matlab: Reduce second order matrix differential equation to standard eigenproblemMatlab:将二阶矩阵微分方程简化为标准特征问题
【发布时间】: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)。问题似乎是MK 都是单数。
  • 非常感谢。问题只是矩阵与 Abaqus 求解的矩阵完全相同。 Abaqus 产生了很好的结果(可以通过分析验证)。请允许我提出第二个问题:是否也可以在 Matlab 中使用阻尼和复特征值以某种方式做到这一点?
  • 是的,有趣的是Abaqus可以解决这个问题。我很确定 Matlab 可以处理复杂的特征值,可能也有阻尼(与速度成正比?)。关于原始问题:刚度矩阵是奇异的很奇怪,因为这意味着结构不能承受任何力。你确定这些是正确的矩阵吗?如果是,我建议先用一个简单的静态问题复制 Abaqus 结果,其中只涉及刚度矩阵。
  • 谢谢。 Abaqus 有一个导出方程组的选项。我用过。我模拟了一个弹性很小的无质量弹簧,它连接到一个弹性非常高的质量 - 所以基本上是一个质量阻尼器。但是你的提示给了我一些想法,我明天可以做什么。对于第二个问题:是的,它与速度成正比——非常简单:Mx''(t)+Dx'(t)+Kx(t)=0

标签: matlab matrix


【解决方案1】:

正如@Arpi 提到的,您实际上想要解决广义特征值问题:

K*x = w^2*M*x

由于您的矩阵 K 和 M 显然是单数(或只是其中之一),因此无法使用 eigs,但您必须使用 eig

V = eig(K,M);

w = sqrt(V);

【讨论】:

  • MK 是稀疏矩阵,因此不能使用 eig。 “当 A 或 B 稀疏时,EIG 不支持广义特征问题 EIG(A,B)。请改用 EIGS。”
  • @Arpi 我猜 K 和 M 的稀疏性很重要,因为它是 FEM 应用程序。然后必须先求解矩阵的奇异性(绝对是 K),然后才能使用 eigs。怀疑边界条件存在一些问题。
猜你喜欢
  • 1970-01-01
  • 2020-05-14
  • 1970-01-01
  • 1970-01-01
  • 2022-01-04
  • 1970-01-01
  • 2012-09-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多