Matlab:将二阶矩阵微分方程化为标准特征值问题
我想用质量矩阵M和刚度矩阵K(.mat file->)得到一个简单机械系统的固有频率: 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:=单位矩阵) 但要解决这个特征值问题Matlab:将二阶矩阵微分方程化为标准特征值问题,matlab,matrix,Matlab,Matrix,我想用质量矩阵M和刚度矩阵K(.mat file->)得到一个简单机械系统的固有频率: 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:=单位矩阵) 但要解决这个特征值问题
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获得:
任何暗示都会对我有帮助。提前感谢。正如@Arpi提到的,您实际上想要解决广义特征值问题: K*x=w^2*M*x 由于矩阵K和M显然是单数的(或只是其中一个),因此不可能使用
eig
,但必须使用eig
:
V = eig(K,M);
w = sqrt(V);
您的问题被称为“在大多数情况下,最好不要执行反演,而是按照最初的说明解决广义特征值问题”。幸运的是,Matlab可以处理此类问题。在你的例子中:
eigs(K,M)
。问题似乎是M
和K
都是单数。非常感谢。问题是矩阵与Abaqus求解的完全相同。Abaqus产生了良好的结果(可以通过分析进行验证)。请允许我问第二个问题:在Matlab中,是否也可以通过阻尼和复特征值来实现这一点?是的,Abaqus可以解决这个问题,这很有趣。我非常确信Matlab可以处理复杂的特征值,可能还有阻尼(与速度成比例?)。关于原始问题:刚度矩阵是奇异的,这很奇怪,因为这意味着结构无法承受任何力。你确定这些是正确的矩阵吗?如果是,我建议首先用一个简单的静态问题复制Abaqus结果,其中只涉及刚度矩阵。谢谢。Abaqus可以选择导出方程系统。我用过。我模拟了一个小弹性的无质量弹簧,它与一个高弹性的质量相连,所以基本上是一个质量阻尼器。但是你的暗示给了我一些想法,我明天可以做什么。关于第二个问题:是的,它与速度成正比-非常简单:Mx'(t)+Dx'(t)+Kx(t)=0M
和K
是稀疏矩阵,因此不能使用eig
。“当A或B稀疏时,EIG不支持广义特征值问题EIG(A,B)。请改用EIG。”@Arpi,我猜K和M的稀疏性很重要,因为它是FEM应用程序。然后,在使用eigs
之前,必须首先解决矩阵的奇异性(绝对是K)。怀疑边界条件存在一些问题。
V = eig(K,M);
w = sqrt(V);