声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 2959|回复: 12

[编程技巧] matlab求符号矩阵特征值问题,

[复制链接]
发表于 2012-6-6 10:26 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
matlab中用eig(A)求符号矩阵特征值貌似不好使,一般都求不了,类似:
syms m;
g =[6.8098   -7.5011    0.6914
   -7.5011   10.6122   -3.1111
    0.6914   -3.1111   83.4198];
s=[6.6122         0         0
         0         0         0
         0         0   81.0000];
r=m^2*g+s;
[v,d]=eig(r);
需要输出特征值特征向量都是m的函数,不知道该怎么求,求大侠指点,多谢!
回复
分享到:

使用道具 举报

 楼主| 发表于 2012-6-6 10:59 | 显示全部楼层
自己顶一个
如果不能用自带的eig函数算,我考虑过通过矩阵运算把m提到外面,避开符号运算;如果s矩阵是单位阵,问题就好解决了,直接算g的特征值*m^+s的对角元即可,但是s矩阵式对角阵,融合不到一起啊。求指点。求思路,多谢!
 楼主| 发表于 2012-6-6 21:48 | 显示全部楼层
求高手指教啊,细节问题很要命也很关键。现有的特征值法都是数值解法,需要逼近的,这个符号矩阵没法用啊
 楼主| 发表于 2012-6-7 10:43 | 显示全部楼层
我用maple算了下,三阶的特征向量足足有一千多行,程序如下:
>
> A := Matrix(3, 3, {(1, 1) = (34049/5000)*ep^2+33061/5000, (1, 2) = -(75011/10000)*ep^2, (1, 3) = (3457/5000)*ep^2, (2, 1) = -(75011/10000)*ep^2, (2, 2) = (53061/5000)*ep^2, (2, 3) = -(31111/10000)*ep^2, (3, 1) = (3457/5000)*ep^2, (3, 2) = -(31111/10000)*ep^2, (3, 3) = (5870146565551895/70368744177664)*ep^2+81});
print(`output redirected...`); # input placeholder
                           Matrix(%id = 199116884)
> with(Student[LinearAlgebra]);
>
> Eigenvectors(A);
 楼主| 发表于 2012-6-7 10:44 | 显示全部楼层
貌似不行啊
发表于 2012-6-7 15:05 | 显示全部楼层
syms定义计算涉及到的每一个字母。然后eig。应该可行。
 楼主| 发表于 2012-6-7 20:51 | 显示全部楼层
回复 6 # 伤痕累累 的帖子

谢谢你,但是这里是涉及一个字母m我也定义了,还是不行啊。matlab里的特征值运算时用qr等迭代法求的,经过n次迭代,相似矩阵会收敛到对角阵,从而对角元就是特征值,但是这里是符号型元素,没办法迭代收敛,也就没法求啊。有的2阶可以算,方法和手算相同,对三阶以上来讲没有意义。今天我用maple试了这个3阶的,结果出来好几百行,他是用特征值定义求的,det(A-aI)=0,算出多项式,再求根,繁琐的不行。真心不知道这个问题该怎么解决了。
发表于 2012-6-8 01:09 | 显示全部楼层
1.虽了解LZ心急, 但一帖多发&连环帖个人实在不喜欢
2.写出matlab函数的作者绝非个人可比, 如果matlab的符号运算都无法解出, 是否应考虑其他方式(如数值解)!?
3.LZ的原始问题是否原创!? 不然别人如何解决!?

水平有限, 仅说说个人想法!

点评

赞成: 5.0
赞成: 5
深表赞同  发表于 2012-6-14 16:54
 楼主| 发表于 2012-6-8 09:30 | 显示全部楼层
回复 9 # ChaChing 的帖子

谢谢,在尝试变换矩阵形式后求解,不行再用maple试试。
发表于 2012-6-8 15:14 | 显示全部楼层
回复 8 # mayuanzhuo 的帖子

用字母求解的结果就是很复杂,需要自己再化简的
 楼主| 发表于 2012-6-8 15:24 | 显示全部楼层
回复 12 # 伤痕累累 的帖子

嗯:@),多谢!我自己再想想办法,有结果了分享下。
 楼主| 发表于 2012-6-13 16:25 | 显示全部楼层
问题已解决。matlab确实算不了,不过maple算出的结果需要化简,符号运算在此处也只是用作公式推导用,3阶矩阵算出的特征向量就有几百行。这个问题是要解决算法问题,需要的结果是数值不是公式,最终的思路还是要进行数值运算,是我的思路有问题。后来把矩阵里需要的符号未知量离散化成数值,matlab求解就很轻松了。考虑问题钻牛角尖真的很耽误时间,好在我钻出来了。哎

评分

1

查看全部评分

发表于 2012-7-2 23:10 | 显示全部楼层
呵呵,不错....
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-15 23:45 , Processed in 0.073109 second(s), 18 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表