yqly1234 发表于 2008-1-17 09:58

求解矩阵A和B的广义特征值

各位matlab高手,我有一个问题请教,在matlab中,想求矩阵A和B的广义特征值,但是B只是对称的,并不正定(只是半正定),
这样就无法调用=eigs(A,B)这个命令,该怎样才能求出我需要的结果呢?

网上也查过了,说是可以用qz这个命令求,但是我看不明白,请指教一下!

希望只是用matlab实现,用fortran的就免了,我不会。

谢谢了!

sigma665 发表于 2008-1-17 10:01

回复 楼主 的帖子

给出你的A,B矩阵

另外:查看帮助文档,doc qz

PS:欢迎校友,请先到新人区报道,那有积分送,然后有了足够的权限,可以查看论坛任意贴子

[ 本帖最后由 sigma665 于 2008-1-17 10:05 编辑 ]

yqly1234 发表于 2008-1-17 10:07

回复 2楼 的帖子

A,B的规模比较大,我都放在matlab中了,

不过B是一个对角矩阵,主对角元上有零元素,这两个矩阵是一个简单的梁的刚度矩阵和质量矩阵(集中质量矩阵),不过我对它作了修正,想验证修正结果要求出它们的广义特征值,可是matlab没办法算出来!

sigma665 发表于 2008-1-17 10:10

回复 3楼 的帖子

那你把A B保存为.mat,再通过附件传上来

yqly1234 发表于 2008-1-17 10:11

回复 4楼 的帖子

小西主任,你能告诉我方法么?我自己试试解决,呵呵,不耽误你时间!

谢谢!

sigma665 发表于 2008-1-17 10:13

回复 5楼 的帖子

doc qz
看了帮助
= qz(A,B)
= qz(A,B)
qz(A,B,flag)

没有试,不知道有没有用

yqly1234 发表于 2008-1-17 10:24

回复 6楼 的帖子

帮助文档我做晚看了2个小时,可是我没有搞明白,它这里所说的广义特征值好像不是我要的那个,也许有其它定义,我要的广义特征值英文是generalized eigenvalues,利用qz分解得出的结果是把两个矩阵同时分解为拟三对角矩阵,这里我不太清楚matlab的后台是怎么做的,也不清楚它的算法。

我需要的广义特征值实际上是eig(inv(B)*A),但是通常不对矩阵做求逆运算,即使这个矩阵可逆,所以想用eigs(A,B)求,但是这里B要求是对称、正定的,我得到的矩阵只是半正定的,扰动的方法可能可以做,但是会改变特征值,我也在想这个方法呢!

实在没招了!

sigma665 发表于 2008-1-17 10:31

QZ factorization for generalized eigenvalues

先找个小矩阵试试,看结果是什么

yqly1234 发表于 2008-1-17 12:06

回复 8楼 的帖子

谢谢小西,虽然问题还没解决,但是还是谢谢你!

sigma665 发表于 2008-1-17 14:45

If AA is triangular, the diagonal elements of AA and BB,alpha = diag(AA)
beta = diag(BB)are the generalized eigenvalues that satisfyA*V*diag(beta) = B*V*diag(alpha)
diag(beta)*W'*A = diag(alpha)*W'*BThe eigenvalues produced bylambda = eig(A,B)are the element-wise ratios of alpha and beta.
lambda = alpha ./ beta

qz求出的AA,BB的对角元素就是特征值,也许你要的是lambda
页: [1]
查看完整版本: 求解矩阵A和B的广义特征值