Learn R Programming

rstiefel (version 1.0.1)

lineSearchBB: A curvilinear search on the Stiefel manifold with BB steps (Wen and Yin 2013, Algo 2) This is based on the line search algorithm described in (Zhang and Hager, 2004)

Description

A curvilinear search on the Stiefel manifold with BB steps (Wen and Yin 2013, Algo 2) This is based on the line search algorithm described in (Zhang and Hager, 2004)

Usage

lineSearchBB(F, X, Xprev, G_x, G_xprev, rho, C, maxIters = 20)

Arguments

F

A function V(n, p) -> R

X

an n x p semi-orthogonal matrix (the current )

Xprev

an n x p semi-orthogonal matrix (the previous)

G_x

an n x p matrix with (G_x)_ij = dF(X)/dX_ij

G_xprev

an n x p matrix with (G_xprev)_ij = dF(X_prev)/dX_prev_ij

rho

Convergence parameter, usually small (e.g. 0.1)

C

C_t+1 = (etaQ_t + F(X_t+1))/Q_t+1 See section 3.2 in Wen and Yin, 2013

maxIters

Maximum number of iterations

Value

A list containing Y: a semi-orthogonal matrix Ytau which satisfies convergence criteria (Eqn 29 in Wen & Yin '13), and tau: the stepsize satisfying these criteria

References

(Wen and Yin, 2013) and (Zhang and Hager, 2004)

Examples

Run this code
# NOT RUN {
N <- 10
P <- 2
M <- diag(10:1)
F <- function(V) { - sum(diag(t(V) %*% M %*% V)) }
dF <- function(V) { - 2*M %*% V }
Xprev <- rustiefel(N, P)
G_xprev <- dF(Xprev)
X <- rustiefel(N, P)
G_x <- dF(X)
Xprev <- dF(X)
res <- lineSearchBB(F, X, Xprev, G_x, G_xprev, rho=0.1, C=F(X))

# }

Run the code above in your browser using DataLab