是否有任何内置功能可以消除对角线零点?

时间:2015-11-15 23:03:10

标签: matlab matrix

考虑如下矩阵:

A=   4     0    31     1     0     0
     0     0     0    -1     1    11
     0     0     0    24    -1     0
     2     1     0     0    17    -3
    27     2     0     0     1     1
     3    12     0    -1     0     0

现在我需要执行Jacobi迭代(问题是某些对角线元素为零)。因此,我需要执行一些矩阵变换,例如行操作将此矩阵转换为新矩阵,使对角元素变为非零,新形成的矩阵的行列式应与A相同。在Matlab中有没有办法做到这一点?

1 个答案:

答案 0 :(得分:4)

假设A是满级,您可以使用QR分解(Matlab qr函数)。

[Q,R] = qr(A)

From the Matlab documentation,我们知道R是上三角形,Q是单一的,A = Q * R

因为R是一个上三角矩阵,所以它非常适合求解和反向替换。如果A为满秩,则其对角元素将为非零(如果A为单数,则可能没有符合您要求的矩阵)。

使用A = Q * R,因此Q' * A = Q' * Q * R但由于Q是单一的,因此R = Q' * A。因此Q'描述了您需要执行的行操作,R是具有非零对角线的结果矩阵。另外,因为|det(Q)| = 1(单一的结果),然后是|det(A)| = |det(R)|。要解决符号不匹配问题,可以否定一行。