xjyhuijia 发表于 2010-11-8 10:13

matlab求广义特征值问题

求解(p.*A+B)*x=0的特征值和特征向量,下面是我的程序,可是算出来的特征向量总是有问题,请各位帮我找下问题,多谢各位大虾
A=
B=[-2 0 0 0;0 -2 0 0;0 0 6000 -2000;0 0 -2000 6000]
C=B*inv(A)
=eigs(-C)
这是第一个程序,后来算出来的特征向量有问题,验证的时候带进去算出来的值不是零,所以我换了个方法是这个
A=
B=[-2 0 0 0;0 -2 0 0;0 0 6000 -2000;0 0 -2000 6000]
=eig(B,-A)
可是算出来的还是和书上的结果不太一致。。。

Happy99 发表于 2010-11-8 14:18

本帖最后由 Happy99 于 2010-11-8 14:22 编辑

xjyhuijia 发表于 2010-11-8 10:13 http://www.chinavib.com/static/image/common/back.gif
...后来算出来的特征向量有问题,验证的时候带进去算出来的值不是零 ...

什麼问题?
记住数值计算要完全等於零, 是不可能的!
只要误差比率可以就好了:@)

xjyhuijia 发表于 2010-11-8 16:19

Happy99 发表于 2010-11-8 14:18 static/image/common/back.gif
什麼问题?
记住数值计算要完全等於零, 是不可能的!
只要误差比率可以就好了

其实是导师让我针对书上的一个例题编程,计算一般粘性阻尼系统的系统极点和特征向量,最后通过我写的这个方程获得,我算出来的极点是对的,和例题上一样,可是极点对应的特征向量却和书上的不一样,差的有点多,我换了几个函数算都不一样,可是我觉得我的算法应该是没有什么错误的,不知道问题出在哪里

Happy99 发表于 2010-11-8 23:25

本帖最后由 Happy99 于 2010-11-8 23:26 编辑

xjyhuijia 发表于 2010-11-8 16:19 http://www.chinavib.com/static/image/common/back.gif
...算出来的极点是对的,和例题上一样,可是极点对应的特征向量却和书上的不一样,差的有点多 ...差的有点多? 方便列出来看看吗!?
理论上极点(特征值)对了, 特征向量不应该不对!

appleseed05 发表于 2010-11-8 23:35

回复 3 # xjyhuijia 的帖子

我对你的两个矩阵有点疑惑,因为如果是有阻尼系统,正常的特征值应该是det(Ms^2+Cs+K)=0,即使写成状态空间det(A-sI)=0,A 也应该是,即A第一行第三个数和第二行第四个数应该是1啊。我有点不明白了

xjyhuijia 发表于 2010-11-9 08:32

Happy99 发表于 2010-11-8 23:25 static/image/common/back.gif
差的有点多? 方便列出来看看吗!?
理论上极点(特征值)对了, 特征向量不应该不对!

A=
B=[-2 0 0 0;0 -2 0 0;0 0 6000 -2000;0 0 -2000 6000]
C=B*inv(A)
=eigs(-C)
结果是下面这个,特征值和书上的答案一样,可是特征向量不一样
C =

1.0e+003 *

    0.0020   -0.0005   -0.0010         0
   -0.0005    0.0025         0   -0.0010
    3.0000   -1.0000         0         0
   -1.0000    3.0000         0         0


v =

-0.0001 - 0.0112i-0.0001 + 0.0112i   0.0002 + 0.0158i   0.0002 - 0.0158i
   0.0003 + 0.0112i   0.0003 - 0.0112i   0.0000 + 0.0158i   0.0000 - 0.0158i
-0.7070 - 0.0056i-0.7070 + 0.0056i   0.7070             0.7070         
   0.7070             0.7070             0.7067 + 0.0158i   0.7067 - 0.0158i


d =

-1.3750 -63.2296i      0                  0                  0         
      0            -1.3750 +63.2296i      0                  0         
      0                  0            -0.8750 -44.7135i      0         
      0                  0                  0            -0.8750 +44.7135i
书上给出了p1= -0.8750 +44.7135i和P2=-1.3750 +63.2296i的特征向量,分别是
y1=
y2=[-9.1825*10^(-2)+7.0097*10^(-1)*i;1.0291*10^(-1)+6.9954*10^(-1)*i;1.1112*10^(-2)+1.2106*10^(-3)*i;-1.1094*10^(-2)-1.3864*10^(-3)*i]

xjyhuijia 发表于 2010-11-9 08:41

appleseed05 发表于 2010-11-8 23:35 static/image/common/back.gif
回复 3 # xjyhuijia 的帖子

我对你的两个矩阵有点疑惑,因为如果是有阻尼系统,正常的特征值应该是det(Ms^ ...

这是一个二自由度系统,质量、刚度、阻尼矩阵分别是
M=
C=
K=
书上推导是{X(p)}=(p^2.*M+p.*C+K)*{X(p)}={F(p)},然后为了将其转化为一般特征值问题。引入方程,(p.*M-p.*M){X(p)}={0}
最后得到:(p.*A+B)*{Y}={F'}
A=[ M;M C],B=[-M ; K],{Y}={p.*{X};{X}},{F'}={{0};{F}}
所以就变成了det(p.*A+B)=0
这就是整个推导过程

xjyhuijia 发表于 2010-11-9 08:42

Happy99 发表于 2010-11-8 23:25 static/image/common/back.gif
差的有点多? 方便列出来看看吗!?
理论上极点(特征值)对了, 特征向量不应该不对!

这是一个二自由度系统,质量、刚度、阻尼矩阵分别是
M=
C=
K=
书上推导是{X(p)}=(p^2.*M+p.*C+K)*{X(p)}={F(p)},然后为了将其转化为一般特征值问题。引入方程,(p.*M-p.*M){X(p)}={0}
最后得到:(p.*A+B)*{Y}={F'}
A=[ M;M C],B=[-M ; K],{Y}={p.*{X};{X}},{F'}={{0};{F}}
所以就变成了det(p.*A+B)=0
这就是整个推导过程

Happy99 发表于 2010-11-9 13:56

理论上极点(特征值)对了, 特征向量不应该不对!
个人以为是一样的, LZ比较下
abs(v)
页: [1]
查看完整版本: matlab求广义特征值问题