Contents
Generate problem data
rand('seed', 0); randn('seed', 0);
m = 250; n = 500;
k = 25;
A = randn(m,n);
x_ref = zeros(n,1);
x_ref(randsample(n,k)) = randn(k,1);
b = A*x_ref;
Solve problem
alpha = 5*norm(x_ref,inf);
opts.tol = 1e-4;
opts.x_ref = x_ref;
t0 = tic;
[x,out] = lbreg_accelerated(A,b,alpha,opts);
time = toc(t0);
Reporting
fprintf('time = %4.2e, ', time);
fprintf('solution relative error = %4.2e\n\n', norm(x - x_ref)/norm(x_ref));
figure;
plot(1:out.iter, out.hist_obj, 'k-', 'LineWidth', 2);
title('Dual objective')
xlabel('iteration'); ylabel('dual objective');
figure;
semilogy(1:out.iter, out.hist_err/norm(x_ref), 'k-', 'LineWidth', 2);
title('Primal solution relative error')
xlabel('iteration'); ylabel('||x - x_{ref}||_2/||x_{ref}||_2');
time = 2.52e-02, solution relative error = 1.28e-04