【发布时间】:2019-08-05 02:47:53
【问题描述】:
我正在使用以下函数来阻止对角化反对称矩阵。
function [R, RI , S ] = Matrix_block (A)
[U,D]= schur (A);
E=ordeig(double(D)) ;
[R, S]= ordschur (U,D, abs(E)<1000*eps ) ;
RI=R';
该代码对于真正的反对称矩阵非常有效,但对于复杂反对称矩阵则失败,如下所示:-
a = rand(6); a = a-a'; [r,ri,s] = Matrix_block(a);
b = rand(6)+1i*rand(6); b= b-conj(b)'; [r,ri,s] = Matrix_block(b);
如何更正我的代码以使其也适用于复杂矩阵?我想要一个块对角矩阵(以下形式)作为实矩阵和复矩阵的输出。
0 e1 -0.0000 -0.0000 0.0000 -0.0000
-e1 0 0.0000 0.0000 -0.0000 0.0000
0 0 -0.0000 e2 0.0000 -0.0000
0 0 -e2 -0.0000 0.0000 -0.0000
0 0 0 0 -0.0000 e3
0 0 0 0 -e3 -0.0000
【问题讨论】:
-
b= b-conj(b)';stackoverflow.com/questions/25150027/… -
为实数和复数反对称矩阵添加一些预期输出。
标签: matlab matrix linear-algebra