MATLAB中的对称Kronecker产品

时间:2018-06-20 08:52:52

标签: matlab math matrix

我想验证对称Kronecker运算符实现的正确性,但是我很难找到任何库或“正确”的实现。我设法找到的一种实现是在here的MATLAB中实现的,但我认为这是不正确的:

function M = sk(A,B)
    % symmetric kronecker product for two square matrices, each of size nxn
    n = size(A,1);
    U = eye(n^2);
    a = reshape(1:n^2,n,n);
    b = a';
    U = U + U(b(:),:);
    c = tril(a);
    c = c(:);
    c(c==0) = [];
    U = U(c,:);
    U(U==1) = sqrt(2);
    U(U==2) = 1;
    M = (1/2)*U*kron(A,B)*U';
end

矩阵U的非零索引的计算与我的一致,但我认为倒数第四行应为U(U==1) = 1/sqrt(2),倒数第二行应为M = (1/2)*U*(kron(A,B)+kron(B,A))*U';。我们俩似乎都使用过的对称Kronecker产品的定义来自Todd,Toh和Tutuncu的“在准定编程中的Nesterov-Todd方向”。

0 个答案:

没有答案