简体   繁体   English

Matlab:将二阶矩阵微分方程化简为标准特征问题

[英]Matlab: Reduce second order matrix differential equation to standard eigenproblem

I want to obtain the natural frequencies of a simple mechanical system with mass matrix M and stiffness matrix K (.mat-file -> Download ):我想获得具有质量矩阵 M 和刚度矩阵 K 的简单机械系统的固有频率(.mat-file -> Download ):

M x''(t)+K x(t)=0 (x= Position). M x''(t)+K x(t)=0(x=位置)。

It means basically, that I have to solve det(Kw^2*M)=0.这基本上意味着,我必须解决 det(Kw^2*M)=0。 But how can I solve it in Matlab (or if necessary reduce it to a standard eigenvalue problem and solve it then)?但是我怎样才能在 Matlab 中解决它(或者如果有必要的话,把它简化为一个标准的特征值问题然后解决它)? The matrices are definitely solvable with Abaqus (FEM Software), but I have to solve it in Matlab.矩阵肯定可以用 Abaqus(FEM 软件)求解,但我必须在 Matlab 中求解。

I tried the following without success: det(Kw^2*M)=0 => det(M^-1*Kw^2*I)=0 (I := unity matrix) But solving this eigenvalue problem with我尝试了以下但没有成功: det(Kw^2*M)=0 => det(M^-1*Kw^2*I)=0 (I := unity matrix) 但是用

sqrt(eigs(K*M^-1)) 

delivers wrong values and the warning:提供错误的值和警告:

"Matrix is singular to working precision. “Matrix 的工作精度是独一无二的。

In matlab.internal.math.mpower.viaMtimes (line 35)"在 matlab.internal.math.mpower.viaMtimes(第 35 行)中”

Other wrong values can be obtained via det(Kw^2*M)=0 => det(I/(w^2)-M*K^-1)=0:其他错误值可以通过 det(Kw^2*M)=0 => det(I/(w^2)-M*K^-1)=0 获得:

1./sqrt(eigs(M*K^-1))

Any hint would help me.任何提示都会帮助我。 Thanks in advance.提前致谢。

As @Arpi mentioned, you actually want to solve the generalized eigenvalue problem:正如@Arpi 所提到的,您实际上想要解决广义特征值问题:

K*x = w^2*M*x K*x = w^2*M*x

Since your matrices K and M are apparently singular (or just one of them), it is not possible to use eigs , but you have to use eig :由于您的矩阵 K 和 M 显然是奇异的(或只是其中之一),因此不可能使用eigs ,但您必须使用eig

V = eig(K,M);

w = sqrt(V);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM