我开始用两个向量编码一个正定矩阵。下面给出了两个向量
ehat = matrix(c(-0.01, -0.10, -0.02, -0.12, -0.004, -0.02, -0.007, 0.004), 8, 1)
Z = matrix(c(-0.07, -0.07, -0.04, 0.10, 0.08, 0.04, -0.01, -0.08), 8, 1)
根据代数,下面的代码必须给出正定矩阵。但是R中的代码不起作用,因为它应该工作。显然有一个错误,但我找不到。
请提出任何建议
omegahat <- matrix(0,ncol(Z),ncol(Z))
N = length(Z)
q = round(N^1/3)
for (j in 1:q) {
Gq=matrix(0,ncol(omegahat),ncol(omegahat))
for (k in (j+1):N)
{
Gq <- Gq+(ehat[k]*ehat[(k-j)])*(t(Z[k,])%*%(Z[(k-j),]))
}
Gq=1/N*Gq
omegahat=omegahat+(1-j/q)*(Gq+t(Gq))
}
omegahat