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

时间:2016-04-27 16:57:53

标签: matlab matrix

我想获得具有质量矩阵M和刚度矩阵K(.mat-file - > Download)的简单机械系统的固有频率:

M x''(t)+ K x(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:=单位矩阵) 但用

解决这个特征值问题
Map(
  (0 -> Map("age" -> null, "name" -> "Michael")),
  (1 -> Map("age" -> 30, "name" -> "Andy")),
  (2 -> Map("age" -> 19, "name" -> "Justin"))
)

提供错误的值和警告:

  

“矩阵对于工作精度来说是单数。

     

在matlab.internal.math.mpower.viaMtimes(第35行)“

其他错误的值可以通过det(K-w ^ 2 * M)= 0 =>获得。 DET(I /(W ^ 2)-M * K ^ -1)= 0:

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

任何提示都会对我有所帮助。提前谢谢。

1 个答案:

答案 0 :(得分:1)

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

K * x = w ^ 2 * M * x

由于您的矩阵K和M显然是单数(或只是其中之一),因此无法使用#!/bin/bash cd /home/hadoop/ sudo yum -y install zeppelin echo 'export ZEPPELIN_NOTEBOOK_S3_BUCKET=mybucket' | sudo tee -a /etc/zeppelin/conf.dist/zeppelin-env.sh echo 'export ZEPPELIN_NOTEBOOK_S3_USER=zeppelin' | sudo tee -a /etc/zeppelin/conf.dist/zeppelin-env.sh echo 'export ZEPPELIN_NOTEBOOK_STORAGE=org.apache.zeppelin.notebook.repo.S3NotebookRepo' | sudo tee -a /etc/zeppelin/conf.dist/zeppelin-env.sh # Start Zeppelin sudo /usr/lib/zeppelin/bin/zeppelin-daemon.sh start ,但您必须使用eigs

eig