# NOT RUN {
fun <- function(X, W) {
G = -2*(W %*% X)
F = -sum(diag(t(X) %*% W %*% X))
return(list(F = F, G = G))
}
n = 1000; k = 6;
W = matrix(rnorm(n^2), n, n); W = t(W) %*% W
opts=c()
opts$record = 0;
opts$maxiter = 1000;
opts$xtol = 1e-5;
opts$gtol = 1e-5;
opts$ftol = 1e-8;
Gamma0 = matrix(rnorm(n*k), n, k);
Gamma0 = qr.Q(qr(Gamma0));
eva <- OptStiefelGBB(Gamma0, opts, fun, W)
Gamma <- eva$Gamma
out <- eva$out
out$fval = -2*out$fval;
# }
Run the code above in your browser using DataLab