我在matlab中编写了一段程序,理论上得到的应该是个正定矩阵,可以进行cholesky分解,可是matlab中却显示
来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/10/02 17:46:35
我在matlab中编写了一段程序,理论上得到的应该是个正定矩阵,可以进行cholesky分解,可是matlab中却显示
不是正定的,于是用eig函数求特征值检验,发现除了正特征值歪还有一些零面前有符号,这是倒是矩阵不正定的原因,应该是数值计算误差导致的,不知道该怎么处理,求高手帮帮忙啊 跪谢了!
不是正定的,于是用eig函数求特征值检验,发现除了正特征值歪还有一些零面前有符号,这是倒是矩阵不正定的原因,应该是数值计算误差导致的,不知道该怎么处理,求高手帮帮忙啊 跪谢了!
看你做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)
再问: 我是根据一书上说的进行做的:生成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)
我在matlab中编写了一段程序,理论上得到的应该是个正定矩阵,可以进行cholesky分解,可是matlab中却显示
MATLAB中为何无法进行cholesky分解
用MATLAB编写矩阵A的LU分解程序.
matlab 我的程序中生成了多个随机点,我想在程序中实现在命令框中依次显示他们坐标.
matlab中如何进行矩阵的特征分解?
情急哦,奇异值分解.请问:在matlab中对矩阵进行奇异值分解是使用[U,D,V]=SVD(A)函数,可以的得到矩阵A
matlab中对一个矩阵所有的数进行循环判断,经过重新计算后存入AQI矩阵中.我的程序如下,不知道哪里错了.
matlab中,用for,if语句编写矩阵1-范数的程序.
matlab中,已知矩阵A,已完成对A的QR分解,下一步求A的特征值和特征向量,程序怎么编写?
在matlab中我定义了一个函数f=@(x) sin(x)/x;这时我想得到f(0)=1可是显示出结果是NAN,怎么处理
怎么编写一段MATLAB程序,
编一个程序,用C++实现矩阵的cholesky分解