作业帮 > 综合 > 作业

我在matlab中编写了一段程序,理论上得到的应该是个正定矩阵,可以进行cholesky分解,可是matlab中却显示

来源:学生作业帮 编辑:灵鹊做题网作业帮 分类:综合作业 时间:2024/04/29 04:39:15
我在matlab中编写了一段程序,理论上得到的应该是个正定矩阵,可以进行cholesky分解,可是matlab中却显示
不是正定的,于是用eig函数求特征值检验,发现除了正特征值歪还有一些零面前有符号,这是倒是矩阵不正定的原因,应该是数值计算误差导致的,不知道该怎么处理,求高手帮帮忙啊 跪谢了!
我在matlab中编写了一段程序,理论上得到的应该是个正定矩阵,可以进行cholesky分解,可是matlab中却显示
看你做cholesky分解的目的.如果只是为了做分解而做分解,那么遗憾的告诉你,你给出的矩阵没法做分解,除非修改得到矩阵的代码,规避负特征值;如果是做完分解还有其他的计算,那么或许可以考虑矩阵移位之类的方法.
再问: 我是根据一书上说的进行做的:生成K*N的顺序矩阵,顺序矩阵的每一行是由整数1-N随机排列组成的,若顺序矩阵的各行之间的相关计算矩阵为P,则P一定为正定对称矩阵,对P进行cholesky分解。 我取K为10,N为3,用matlab纠结时P不是任意时刻都能够cholesky分解的,觉得很奇怪,求大神指点啊!这是为什么啊!
再答: 我猜可能是因为matlab生成的随机数是伪随机造成的。你按照时间撒种生成随机数试试看
再问: 额 不是很懂。。请问如果我按照时间撒种生成随机数,用什么函数呢 求指点啊!
再答: ctime = datestr(now, 30); tseed = str2num(ctime((en - 5) : end)) ;rand('seed', tseed)