MATLAB爱好者论坛-LabFans.com

MATLAB爱好者论坛-LabFans.com (https://www.labfans.com/bbs/index.php)
-   MATLAB论坛 (https://www.labfans.com/bbs/forumdisplay.php?f=6)
-   -   矩阵如何开方 (https://www.labfans.com/bbs/showthread.php?t=493)

mxwt 2007-07-01 23:06

矩阵如何开方
 
最近思考的问题是矩阵如何就开方,这个问题好像很简单,但是我发现不然,总结下来有以下几种方法:

1)利用求未知数的方法,解N元二次方程组,理论上是可解得,但是我昨天用Matlab试过了,结果没有出来,电脑差不多快崩溃了;

2)利用Matlab中的函数Sqrtm(),这个解法比较方便,但是其算法究竟是什么,不得而知;

3)利用奇异值开方求矩阵的开放,这边要利用奇异值的性质,同样有三种方法求奇异值,经Matlab仿真表明均可行:

a.利用eig()函数,但是这样的函数必须是实矩阵,而且是正定的,当然eig求出来的是特征值,我认为特征值是奇异值的一种特殊情况,所以条件比较苛刻;

b.利用Svd()函数,这是标准的求奇异值的函数,可以在我以前的博文中看到定义;

c.用乔来斯基分解Chol()函数,先将原矩阵乔来斯基分解,然后再求上对角阵的奇异值,最后同上面几种解法,这个方法在老外的一本矩阵分析中出现,但是有人持怀疑态度,我也没有看到原文,但是我用Matlab试过,是可行的。

可能还有其他的解法,我个人认为,只有想办法把矩阵的奇异值求出来就解决了问题,因而问题的焦点是究竟由多少种求解的方法?

这个问题可能真是个小问题,但是到现在我还没有找到答案。

请求高手理论指导!!!!

xhsh 2007-07-18 05:53

我不知道是不是真有这么复杂。如果单纯就想知道结果来说,利用matlab求矩阵开放是非常简单的。例如,假设a为一方阵,其平方根为a^0.5,立方根为a^(1.0/3.0),任意次方根都可以这样简单求得。当然,也许楼主早就知道了,我只是谈谈我的看法,且我也不是搞数学理论的,就算我是胡说吧,呵呵:-)

yangmp 2007-08-23 17:35

应该如此把
 
当A为方阵,p为非整数时,A^P=V*D*INV(V),其中V为A的特征向量矩阵, D为每个特征植的P次方所构成的对角矩阵。如果有重根,以上指令不成立。

xemcluobiq 2008-02-24 14:59

sqrtm(A),A为矩阵名


所有时间均为北京时间。现在的时间是 02:53

Powered by vBulletin
版权所有 ©2000 - 2025,Jelsoft Enterprises Ltd.