Speed and Accuracy of Direct Methods for PageRank

In evaluating the quadrature formulas to solve for the expected value of the PageRank vector exactly, we need to solve about 3000 PageRank linear systems. We want to have each solution as accurate as possible. In this experiment, we evaluate the accuracy of our solutions as well as the time they take.

Contents

Experimental setup

This experiment should be run from the rapr/experiments/correctness directory. To reduce the computational load, we'll load the cs-stanford graph and just take the largest strong component.

cwd = pwd;
dirtail = 'experiments/correctness';
if strcmp(cwd(end-length(dirtail)+1:end),dirtail) == 0
    warning('%s should be executed from rapr/%s\n', mfilename, dirtail);
end
load ('../../data/wb-cs.stanford.mat');
% just use the largest strong component for this experiment;
P = Pcc; A = Acc;
%load ('../../data/example-small.mat');
n=size(P,1);

Add the path

addpath('../../matlab');

Generate a set of alphas

One of the goals is to see how long each method takes: Hessenberg update (theoretically faster) vs. Sparse LU factorization (exploits sparsity) for a range of values of alpha. The Hessenberg method should not be sensitive to this parameter, but the Sparse LU factorization may be due to the pivot tolerance.

To generate the alpha's, we'll use the Chebyshev points computed for the Fejer type 2 rule.

as=0.5*(fejer2_rule_compute(15)+1);m=max(as);as=[as;(1-m)*as+m];nas=length(as);

Hessenberg solution

We are going to compute the solutions for many values of alpha. The computationally efficient means of updating alpha is to use an upper hessenberg decomposition of the matrix P. This is real and always exists. Then the solution can be computed in O(n^2) time for any value a, with good numerical stability.

Factorize the matrix once.

[Q,H] = hess(full(P'));

Generate the appropriate right hand side.

v = ones(n,1)./n; w = Q'*v;

Solve all the systems

tic, for ai=1:nas, x=solve_pr_hess(n,Q,H,as(ai),w); end, dt=toc;
fprintf('%40s : %7f sec\n', 'solving Hessenberg systems', dt);
              solving Hessenberg systems : 8.826154 sec

One thing we need to check is if the function call itself is causing the overhead. This next call is the same thing, but with everything un-abstracted into the body.

tic; sopts=struct('UHESS',true); % tell Matlab our system is hessenberg
for ai=1:nas
    a = as(ai);
    Ha = -a*H;
    Ha = H+eye(n);
    wa = (1-a)*w;
    x = linsolve(Ha,wa,sopts);
    x = Q*x;
    s = norm(x,1);
    x = x./s;
end
dt=toc;
fprintf('%40s : %7f sec\n', '(inline) solving Hessenberg systems', dt);
     (inline) solving Hessenberg systems : 10.020536 sec

Direct solution

Now, we'll try the direct solution using a sparse LU factorization of the matrix (I-a*P') directly. This function is implemented directly in Matlab as the "backslash" operation for sparse matrices. The key issue here is how best to form the matrix (I-a*P'). We will try a few varieties.

The first variety is the most obvious: construct everything in one line.

tic, for ai=1:nas, x=(speye(n)-as(ai)*P')\((1-as(ai))*v); x=x./norm(x,1); end, dt=toc;
fprintf('%40s : %7f sec\n', 'simple SparseLU', dt);
                         simple SparseLU : 0.482570 sec

The second variety keeps the matrix transposed first

Pt = P';
tic, for ai=1:nas, x=(speye(n)-as(ai)*Pt)\((1-as(ai))*v);  x=x./norm(x,1); end, dt=toc;
fprintf('%40s : %7f sec\n', 'pre-stored transpose SparseLU', dt);
           pre-stored transpose SparseLU : 0.480823 sec

The third variety keeps the matrix explicitly stores the rhs and matrix

Pt = P';
tic, for ai=1:nas, Pa=(speye(n)-as(ai)*Pt); va=v; va=(1-as(ai))*va; x=Pa\va; x=x./norm(x,1); end, dt=toc;
fprintf('%40s : %7f sec\n', 'explicit matrix rhs SparseLU', dt);
            explicit matrix rhs SparseLU : 0.483929 sec

The fourth variety keeps the matrix explicitly stores the rhs

Pt = P';
tic, for ai=1:nas, va=v; va=(1-as(ai))*va; x=(speye(n)-as(ai)*Pt)\va; x=x./norm(x,1); end, dt=toc;
fprintf('%40s : %7f sec\n', 'explicit rhs SparseLU', dt);
                   explicit rhs SparseLU : 0.498586 sec

Speed conclusion

The fastest way of going is definitely the SparseLU approach. The simplest optimization is just storing the matrix transpose explicitly. This yields a tiny optimization.

Accuracy

One of the problems with the SparseLU approach is that the accuracy bounds may not be as good as for the Hessenberg case. We will test this idea by first, looking at the difference in the solution between the Hessenberg and SparseLU solutions and checking the residuals.

for ai=1:nas
    a=as(ai);
    xlu = (speye(n)-a*Pt)\((1-a)*v); xlu=xlu./norm(x,1);
    xh = solve_pr_hess(n,Q,H,a,w);
    rlu = Pt*xlu; rlu = xlu - a*(rlu + (sum(xlu)-sum(rlu)).*v) - (1-a).*v;
    rh = Pt*xh; rh = xh - a*(rh + (sum(xh)-sum(rh)).*v) - (1-a).*v;
    fprintf('a = %7.5f  ||xlu-xh|| = %10e  r(xlu) = %10e  r(xh) = %10e\n', ...
        a, norm(xlu-xh,1), norm(rlu,1), norm(rh,1));
end
a = 0.00961  ||xlu-xh|| = 8.963858e-15  r(xlu) = 9.047667e-17  r(xh) = 8.843241e-15
a = 0.03806  ||xlu-xh|| = 5.481293e-15  r(xlu) = 2.731647e-16  r(xh) = 5.286245e-15
a = 0.08427  ||xlu-xh|| = 1.001727e-14  r(xlu) = 1.495332e-15  r(xh) = 1.028192e-14
a = 0.14645  ||xlu-xh|| = 5.610963e-15  r(xlu) = 2.942525e-16  r(xh) = 5.470342e-15
a = 0.22221  ||xlu-xh|| = 9.666096e-15  r(xlu) = 5.236696e-16  r(xh) = 7.504143e-15
a = 0.30866  ||xlu-xh|| = 5.581906e-15  r(xlu) = 2.924635e-16  r(xh) = 5.410982e-15
a = 0.40245  ||xlu-xh|| = 8.750027e-15  r(xlu) = 3.565480e-15  r(xh) = 6.173339e-15
a = 0.50000  ||xlu-xh|| = 7.764405e-15  r(xlu) = 1.622238e-16  r(xh) = 6.569669e-15
a = 0.59755  ||xlu-xh|| = 8.141410e-15  r(xlu) = 1.698294e-15  r(xh) = 6.624529e-15
a = 0.69134  ||xlu-xh|| = 1.034559e-14  r(xlu) = 1.922724e-15  r(xh) = 7.055324e-15
a = 0.77779  ||xlu-xh|| = 1.087132e-14  r(xlu) = 3.954140e-15  r(xh) = 8.486687e-15
a = 0.85355  ||xlu-xh|| = 1.267714e-14  r(xlu) = 2.708208e-15  r(xh) = 6.964454e-15
a = 0.91573  ||xlu-xh|| = 1.896496e-14  r(xlu) = 1.270285e-15  r(xh) = 7.000178e-15
a = 0.96194  ||xlu-xh|| = 2.218130e-14  r(xlu) = 6.362447e-15  r(xh) = 8.431383e-15
a = 0.99039  ||xlu-xh|| = 4.182585e-14  r(xlu) = 2.729979e-15  r(xh) = 6.124217e-15
a = 0.99048  ||xlu-xh|| = 4.899638e-14  r(xlu) = 2.924330e-15  r(xh) = 8.363144e-15
a = 0.99076  ||xlu-xh|| = 4.065856e-14  r(xlu) = 3.163213e-15  r(xh) = 6.325603e-15
a = 0.99120  ||xlu-xh|| = 4.160387e-14  r(xlu) = 6.992089e-15  r(xh) = 7.825636e-15
a = 0.99180  ||xlu-xh|| = 4.316260e-14  r(xlu) = 4.207479e-16  r(xh) = 1.127657e-14
a = 0.99253  ||xlu-xh|| = 4.715741e-14  r(xlu) = 1.114498e-15  r(xh) = 6.354627e-15
a = 0.99336  ||xlu-xh|| = 4.873753e-14  r(xlu) = 4.440537e-15  r(xh) = 6.659042e-15
a = 0.99426  ||xlu-xh|| = 6.349724e-14  r(xlu) = 7.902542e-16  r(xh) = 7.312426e-15
a = 0.99520  ||xlu-xh|| = 7.075295e-14  r(xlu) = 3.731582e-15  r(xh) = 6.304933e-15
a = 0.99613  ||xlu-xh|| = 8.445049e-14  r(xlu) = 5.291964e-15  r(xh) = 1.171013e-14
a = 0.99703  ||xlu-xh|| = 9.147885e-14  r(xlu) = 2.410645e-15  r(xh) = 9.560306e-15
a = 0.99787  ||xlu-xh|| = 1.350890e-13  r(xlu) = 1.412468e-15  r(xh) = 9.304670e-15
a = 0.99859  ||xlu-xh|| = 1.791253e-13  r(xlu) = 2.910392e-15  r(xh) = 7.009492e-15
a = 0.99919  ||xlu-xh|| = 1.730660e-13  r(xlu) = 4.327377e-15  r(xh) = 9.206886e-15
a = 0.99963  ||xlu-xh|| = 2.876400e-13  r(xlu) = 4.305627e-15  r(xh) = 9.053680e-15
a = 0.99991  ||xlu-xh|| = 1.571275e-12  r(xlu) = 5.216715e-15  r(xh) = 8.426092e-15

Unfortunately, these two solutions start to disagree as alpha -> 1. This fact is not surprising as the problem becomes very illconditioned at that point. Also, the residual doesn't tell the full tail. To fix the situation, we are going to explicitly compute some right hand sides from known values of the solution.

nrhs=5;
for ai=1:nas
    a = as(ai);
    for rhsi=1:nrhs
        y = rand(n,1); y=y./norm(y,1);
        z = Pt*y; z = y - a*z;
        xlu = (speye(n)-a*Pt)\z;
        xh = solve_pr_hess(n,Q,H,a,Q'*(z./(1-a)));
        fprintf('a = %7.5f  t=%i  e(xlu) = %10e  e(xh) = %10e\n',...
            a, rhsi, norm(xlu-y,1), norm(xh-y,1));
    end
end
a = 0.00961  t=1  e(xlu) = 3.887463e-17  e(xh) = 5.046902e-15
a = 0.00961  t=2  e(xlu) = 4.117057e-17  e(xh) = 5.064396e-15
a = 0.00961  t=3  e(xlu) = 4.256242e-17  e(xh) = 5.197635e-15
a = 0.00961  t=4  e(xlu) = 4.047409e-17  e(xh) = 5.359409e-15
a = 0.00961  t=5  e(xlu) = 4.226844e-17  e(xh) = 5.060008e-15
a = 0.03806  t=1  e(xlu) = 4.114332e-17  e(xh) = 5.146858e-15
a = 0.03806  t=2  e(xlu) = 4.402533e-17  e(xh) = 5.319322e-15
a = 0.03806  t=3  e(xlu) = 4.741190e-17  e(xh) = 5.262505e-15
a = 0.03806  t=4  e(xlu) = 4.234426e-17  e(xh) = 5.328592e-15
a = 0.03806  t=5  e(xlu) = 4.474859e-17  e(xh) = 5.175815e-15
a = 0.08427  t=1  e(xlu) = 5.200814e-17  e(xh) = 5.177015e-15
a = 0.08427  t=2  e(xlu) = 4.479502e-17  e(xh) = 5.121270e-15
a = 0.08427  t=3  e(xlu) = 4.620544e-17  e(xh) = 5.061650e-15
a = 0.08427  t=4  e(xlu) = 5.061358e-17  e(xh) = 4.997278e-15
a = 0.08427  t=5  e(xlu) = 4.380274e-17  e(xh) = 5.015379e-15
a = 0.14645  t=1  e(xlu) = 6.386705e-17  e(xh) = 5.150210e-15
a = 0.14645  t=2  e(xlu) = 5.822342e-17  e(xh) = 5.244626e-15
a = 0.14645  t=3  e(xlu) = 5.453447e-17  e(xh) = 5.230214e-15
a = 0.14645  t=4  e(xlu) = 5.707588e-17  e(xh) = 5.228726e-15
a = 0.14645  t=5  e(xlu) = 5.629201e-17  e(xh) = 5.236476e-15
a = 0.22221  t=1  e(xlu) = 6.475649e-17  e(xh) = 5.458023e-15
a = 0.22221  t=2  e(xlu) = 6.815015e-17  e(xh) = 5.477833e-15
a = 0.22221  t=3  e(xlu) = 6.403801e-17  e(xh) = 5.501928e-15
a = 0.22221  t=4  e(xlu) = 7.696581e-17  e(xh) = 5.178137e-15
a = 0.22221  t=5  e(xlu) = 7.598971e-17  e(xh) = 5.299894e-15
a = 0.30866  t=1  e(xlu) = 9.537456e-17  e(xh) = 5.666558e-15
a = 0.30866  t=2  e(xlu) = 1.000731e-16  e(xh) = 5.516578e-15
a = 0.30866  t=3  e(xlu) = 9.837639e-17  e(xh) = 5.755475e-15
a = 0.30866  t=4  e(xlu) = 8.305232e-17  e(xh) = 5.884702e-15
a = 0.30866  t=5  e(xlu) = 8.815061e-17  e(xh) = 5.585678e-15
a = 0.40245  t=1  e(xlu) = 1.287841e-16  e(xh) = 6.197990e-15
a = 0.40245  t=2  e(xlu) = 1.198425e-16  e(xh) = 6.176810e-15
a = 0.40245  t=3  e(xlu) = 1.485374e-16  e(xh) = 6.125893e-15
a = 0.40245  t=4  e(xlu) = 9.889348e-17  e(xh) = 6.282799e-15
a = 0.40245  t=5  e(xlu) = 1.347072e-16  e(xh) = 6.494946e-15
a = 0.50000  t=1  e(xlu) = 1.669542e-16  e(xh) = 7.154087e-15
a = 0.50000  t=2  e(xlu) = 1.436866e-16  e(xh) = 6.857298e-15
a = 0.50000  t=3  e(xlu) = 1.278784e-16  e(xh) = 6.478634e-15
a = 0.50000  t=4  e(xlu) = 1.191671e-16  e(xh) = 6.807803e-15
a = 0.50000  t=5  e(xlu) = 9.407143e-17  e(xh) = 6.853743e-15
a = 0.59755  t=1  e(xlu) = 3.479903e-16  e(xh) = 8.377404e-15
a = 0.59755  t=2  e(xlu) = 1.696020e-16  e(xh) = 7.406722e-15
a = 0.59755  t=3  e(xlu) = 2.291127e-16  e(xh) = 8.142468e-15
a = 0.59755  t=4  e(xlu) = 1.356913e-16  e(xh) = 7.816735e-15
a = 0.59755  t=5  e(xlu) = 2.268509e-16  e(xh) = 8.221971e-15
a = 0.69134  t=1  e(xlu) = 1.918207e-16  e(xh) = 9.488601e-15
a = 0.69134  t=2  e(xlu) = 2.183674e-16  e(xh) = 1.003005e-14
a = 0.69134  t=3  e(xlu) = 3.596051e-16  e(xh) = 8.965987e-15
a = 0.69134  t=4  e(xlu) = 3.303264e-16  e(xh) = 8.979789e-15
a = 0.69134  t=5  e(xlu) = 2.983068e-16  e(xh) = 9.570013e-15
a = 0.77779  t=1  e(xlu) = 4.793861e-16  e(xh) = 1.193443e-14
a = 0.77779  t=2  e(xlu) = 5.190624e-16  e(xh) = 1.200261e-14
a = 0.77779  t=3  e(xlu) = 2.936017e-16  e(xh) = 1.087412e-14
a = 0.77779  t=4  e(xlu) = 3.908875e-16  e(xh) = 1.087695e-14
a = 0.77779  t=5  e(xlu) = 4.448696e-16  e(xh) = 1.167150e-14
a = 0.85355  t=1  e(xlu) = 5.534169e-16  e(xh) = 1.286899e-14
a = 0.85355  t=2  e(xlu) = 3.621531e-16  e(xh) = 1.544105e-14
a = 0.85355  t=3  e(xlu) = 5.661698e-16  e(xh) = 1.621619e-14
a = 0.85355  t=4  e(xlu) = 5.036373e-16  e(xh) = 1.633098e-14
a = 0.85355  t=5  e(xlu) = 6.448715e-16  e(xh) = 1.839005e-14
a = 0.91573  t=1  e(xlu) = 8.706561e-16  e(xh) = 2.027904e-14
a = 0.91573  t=2  e(xlu) = 1.351748e-15  e(xh) = 2.226271e-14
a = 0.91573  t=3  e(xlu) = 4.262297e-16  e(xh) = 2.070634e-14
a = 0.91573  t=4  e(xlu) = 1.177286e-15  e(xh) = 2.495788e-14
a = 0.91573  t=5  e(xlu) = 1.190137e-15  e(xh) = 2.414875e-14
a = 0.96194  t=1  e(xlu) = 1.169876e-15  e(xh) = 3.986753e-14
a = 0.96194  t=2  e(xlu) = 2.935904e-15  e(xh) = 3.786366e-14
a = 0.96194  t=3  e(xlu) = 1.054236e-15  e(xh) = 2.890171e-14
a = 0.96194  t=4  e(xlu) = 1.366598e-15  e(xh) = 6.960393e-14
a = 0.96194  t=5  e(xlu) = 2.613678e-15  e(xh) = 4.986098e-14
a = 0.99039  t=1  e(xlu) = 6.377240e-15  e(xh) = 9.828599e-14
a = 0.99039  t=2  e(xlu) = 6.258703e-15  e(xh) = 8.990663e-14
a = 0.99039  t=3  e(xlu) = 4.555252e-15  e(xh) = 1.177574e-13
a = 0.99039  t=4  e(xlu) = 2.333741e-15  e(xh) = 1.791113e-13
a = 0.99039  t=5  e(xlu) = 5.848443e-15  e(xh) = 2.261245e-13
a = 0.99048  t=1  e(xlu) = 7.829195e-15  e(xh) = 1.591206e-13
a = 0.99048  t=2  e(xlu) = 2.715429e-15  e(xh) = 3.093821e-13
a = 0.99048  t=3  e(xlu) = 1.033630e-14  e(xh) = 2.269685e-13
a = 0.99048  t=4  e(xlu) = 4.340870e-15  e(xh) = 2.115548e-13
a = 0.99048  t=5  e(xlu) = 4.325077e-15  e(xh) = 1.602966e-13
a = 0.99076  t=1  e(xlu) = 6.354488e-15  e(xh) = 1.925008e-13
a = 0.99076  t=2  e(xlu) = 5.460212e-15  e(xh) = 1.593712e-13
a = 0.99076  t=3  e(xlu) = 1.155287e-14  e(xh) = 9.664854e-14
a = 0.99076  t=4  e(xlu) = 6.092786e-15  e(xh) = 1.141859e-13
a = 0.99076  t=5  e(xlu) = 2.845496e-15  e(xh) = 2.424948e-13
a = 0.99120  t=1  e(xlu) = 1.082160e-14  e(xh) = 1.425415e-13
a = 0.99120  t=2  e(xlu) = 7.182046e-15  e(xh) = 1.668784e-13
a = 0.99120  t=3  e(xlu) = 7.656403e-15  e(xh) = 1.823957e-13
a = 0.99120  t=4  e(xlu) = 4.733679e-15  e(xh) = 1.317201e-13
a = 0.99120  t=5  e(xlu) = 1.171435e-14  e(xh) = 2.773571e-13
a = 0.99180  t=1  e(xlu) = 1.102525e-14  e(xh) = 1.070634e-13
a = 0.99180  t=2  e(xlu) = 6.543937e-15  e(xh) = 2.005612e-13
a = 0.99180  t=3  e(xlu) = 3.536172e-15  e(xh) = 2.112617e-13
a = 0.99180  t=4  e(xlu) = 1.301778e-14  e(xh) = 1.193800e-13
a = 0.99180  t=5  e(xlu) = 7.657269e-15  e(xh) = 2.304289e-13
a = 0.99253  t=1  e(xlu) = 1.410294e-14  e(xh) = 2.247292e-13
a = 0.99253  t=2  e(xlu) = 5.059531e-15  e(xh) = 1.498995e-13
a = 0.99253  t=3  e(xlu) = 5.933601e-15  e(xh) = 1.069620e-13
a = 0.99253  t=4  e(xlu) = 1.012769e-14  e(xh) = 2.481107e-13
a = 0.99253  t=5  e(xlu) = 3.736935e-15  e(xh) = 2.358999e-13
a = 0.99336  t=1  e(xlu) = 1.084064e-14  e(xh) = 1.836207e-13
a = 0.99336  t=2  e(xlu) = 5.916080e-15  e(xh) = 1.040381e-13
a = 0.99336  t=3  e(xlu) = 1.634017e-15  e(xh) = 5.503147e-13
a = 0.99336  t=4  e(xlu) = 4.835756e-15  e(xh) = 2.253475e-13
a = 0.99336  t=5  e(xlu) = 1.198279e-14  e(xh) = 1.272646e-13
a = 0.99426  t=1  e(xlu) = 1.405241e-14  e(xh) = 5.150909e-13
a = 0.99426  t=2  e(xlu) = 5.020309e-15  e(xh) = 5.629680e-13
a = 0.99426  t=3  e(xlu) = 1.692573e-14  e(xh) = 2.660182e-13
a = 0.99426  t=4  e(xlu) = 1.404920e-14  e(xh) = 1.057671e-13
a = 0.99426  t=5  e(xlu) = 2.851127e-15  e(xh) = 3.430005e-13
a = 0.99520  t=1  e(xlu) = 8.546874e-15  e(xh) = 4.744631e-13
a = 0.99520  t=2  e(xlu) = 1.273970e-14  e(xh) = 1.931740e-13
a = 0.99520  t=3  e(xlu) = 1.588886e-14  e(xh) = 4.276518e-13
a = 0.99520  t=4  e(xlu) = 5.481078e-15  e(xh) = 1.052332e-13
a = 0.99520  t=5  e(xlu) = 3.207341e-15  e(xh) = 2.552714e-13
a = 0.99613  t=1  e(xlu) = 1.359039e-14  e(xh) = 5.406111e-13
a = 0.99613  t=2  e(xlu) = 2.060023e-14  e(xh) = 2.465309e-13
a = 0.99613  t=3  e(xlu) = 3.203939e-14  e(xh) = 2.970807e-13
a = 0.99613  t=4  e(xlu) = 3.529680e-14  e(xh) = 3.976254e-13
a = 0.99613  t=5  e(xlu) = 1.084738e-14  e(xh) = 2.954745e-13
a = 0.99703  t=1  e(xlu) = 3.484163e-14  e(xh) = 2.959908e-13
a = 0.99703  t=2  e(xlu) = 1.064145e-14  e(xh) = 5.979331e-13
a = 0.99703  t=3  e(xlu) = 1.590024e-14  e(xh) = 5.051998e-13
a = 0.99703  t=4  e(xlu) = 1.610886e-14  e(xh) = 7.308578e-13
a = 0.99703  t=5  e(xlu) = 1.640683e-14  e(xh) = 3.489657e-13
a = 0.99787  t=1  e(xlu) = 1.518662e-14  e(xh) = 4.245950e-13
a = 0.99787  t=2  e(xlu) = 5.046209e-14  e(xh) = 1.497630e-12
a = 0.99787  t=3  e(xlu) = 4.113923e-14  e(xh) = 7.684214e-13
a = 0.99787  t=4  e(xlu) = 3.576288e-14  e(xh) = 2.333451e-13
a = 0.99787  t=5  e(xlu) = 6.892103e-15  e(xh) = 7.788778e-13
a = 0.99859  t=1  e(xlu) = 1.680433e-14  e(xh) = 8.195123e-13
a = 0.99859  t=2  e(xlu) = 1.687716e-14  e(xh) = 3.862629e-13
a = 0.99859  t=3  e(xlu) = 5.093965e-14  e(xh) = 7.836930e-13
a = 0.99859  t=4  e(xlu) = 1.304861e-14  e(xh) = 1.065549e-12
a = 0.99859  t=5  e(xlu) = 3.585368e-14  e(xh) = 6.434158e-13
a = 0.99919  t=1  e(xlu) = 1.008850e-13  e(xh) = 9.231361e-13
a = 0.99919  t=2  e(xlu) = 6.420526e-14  e(xh) = 4.015397e-13
a = 0.99919  t=3  e(xlu) = 4.964249e-14  e(xh) = 1.562200e-12
a = 0.99919  t=4  e(xlu) = 6.216359e-14  e(xh) = 2.508802e-12
a = 0.99919  t=5  e(xlu) = 1.437955e-13  e(xh) = 5.461983e-13
a = 0.99963  t=1  e(xlu) = 2.411120e-13  e(xh) = 8.849245e-13
a = 0.99963  t=2  e(xlu) = 7.365057e-14  e(xh) = 2.651689e-12
a = 0.99963  t=3  e(xlu) = 7.792605e-14  e(xh) = 1.069276e-12
a = 0.99963  t=4  e(xlu) = 6.565472e-14  e(xh) = 5.211781e-13
a = 0.99963  t=5  e(xlu) = 1.100592e-13  e(xh) = 4.350507e-12
a = 0.99991  t=1  e(xlu) = 3.729519e-13  e(xh) = 7.861449e-12
a = 0.99991  t=2  e(xlu) = 9.154293e-13  e(xh) = 2.766905e-11
a = 0.99991  t=3  e(xlu) = 3.354954e-13  e(xh) = 1.733288e-11
a = 0.99991  t=4  e(xlu) = 1.289765e-12  e(xh) = 1.602315e-11
a = 0.99991  t=5  e(xlu) = 2.678596e-13  e(xh) = 3.226213e-11

SparseLU with iterative refinement

The previous experiment showed that SparseLU was generally more accurate than the Hessenberg solution. Because the answers are so much faster, we could afford a few steps of iterative refinement.

nrhs=5;
for ai=1:nas
    a = as(ai);
    for rhsi=1:nrhs
        y = rand(n,1); y=y./norm(y,1);
        z = Pt*y; z = y - a*z;
        xlu = (speye(n)-a*Pt)\z;
        rlu = z-xlu+a*(Pt*xlu);
        z1 = (speye(n)-a*Pt)\rlu;
        xlu1 = xlu+z1;
        rlu2 = z-xlu1+a*(Pt*xlu1);
        z2 = (speye(n)-a*Pt)\rlu2;
        xlu2 = xlu1+z2;
        fprintf('a = %7.5f  t=%i  e(xlu) = %10e  e(xlu1) = %10e  e(xlu2) = %10e\n',...
            a, rhsi, norm(xlu-y,1), norm(xlu1-y,1), norm(xlu2-y,1));
    end
end
a = 0.00961  t=1  e(xlu) = 4.350709e-17  e(xlu1) = 7.969124e-19  e(xlu2) = 7.942390e-19
a = 0.00961  t=2  e(xlu) = 4.438114e-17  e(xlu1) = 7.579621e-19  e(xlu2) = 6.163753e-19
a = 0.00961  t=3  e(xlu) = 4.112991e-17  e(xlu1) = 4.919938e-19  e(xlu2) = 2.775356e-19
a = 0.00961  t=4  e(xlu) = 4.137800e-17  e(xlu1) = 7.863642e-19  e(xlu2) = 5.097616e-19
a = 0.00961  t=5  e(xlu) = 4.576305e-17  e(xlu1) = 8.609825e-19  e(xlu2) = 5.410423e-19
a = 0.03806  t=1  e(xlu) = 4.873838e-17  e(xlu1) = 2.160172e-18  e(xlu2) = 1.356735e-18
a = 0.03806  t=2  e(xlu) = 4.281700e-17  e(xlu1) = 2.840062e-18  e(xlu2) = 1.856948e-18
a = 0.03806  t=3  e(xlu) = 4.490303e-17  e(xlu1) = 1.872363e-18  e(xlu2) = 1.929630e-18
a = 0.03806  t=4  e(xlu) = 4.537264e-17  e(xlu1) = 2.857969e-18  e(xlu2) = 2.413012e-18
a = 0.03806  t=5  e(xlu) = 4.590283e-17  e(xlu1) = 2.480112e-18  e(xlu2) = 2.201227e-18
a = 0.08427  t=1  e(xlu) = 4.698375e-17  e(xlu1) = 5.860886e-18  e(xlu2) = 4.165814e-18
a = 0.08427  t=2  e(xlu) = 5.347531e-17  e(xlu1) = 6.385676e-18  e(xlu2) = 4.246388e-18
a = 0.08427  t=3  e(xlu) = 5.002535e-17  e(xlu1) = 5.130659e-18  e(xlu2) = 4.353471e-18
a = 0.08427  t=4  e(xlu) = 5.156866e-17  e(xlu1) = 4.828094e-18  e(xlu2) = 3.811542e-18
a = 0.08427  t=5  e(xlu) = 4.920245e-17  e(xlu1) = 6.121189e-18  e(xlu2) = 4.077722e-18
a = 0.14645  t=1  e(xlu) = 5.532701e-17  e(xlu1) = 8.417205e-18  e(xlu2) = 7.663398e-18
a = 0.14645  t=2  e(xlu) = 5.479367e-17  e(xlu1) = 8.136982e-18  e(xlu2) = 7.568306e-18
a = 0.14645  t=3  e(xlu) = 6.245330e-17  e(xlu1) = 1.161621e-17  e(xlu2) = 9.918676e-18
a = 0.14645  t=4  e(xlu) = 5.826554e-17  e(xlu1) = 1.019813e-17  e(xlu2) = 8.982281e-18
a = 0.14645  t=5  e(xlu) = 5.006121e-17  e(xlu1) = 9.071571e-18  e(xlu2) = 7.619776e-18
a = 0.22221  t=1  e(xlu) = 6.534939e-17  e(xlu1) = 1.666071e-17  e(xlu2) = 1.206228e-17
a = 0.22221  t=2  e(xlu) = 7.651988e-17  e(xlu1) = 1.596816e-17  e(xlu2) = 1.330632e-17
a = 0.22221  t=3  e(xlu) = 6.805153e-17  e(xlu1) = 1.790040e-17  e(xlu2) = 1.094488e-17
a = 0.22221  t=4  e(xlu) = 6.098796e-17  e(xlu1) = 1.292413e-17  e(xlu2) = 1.113022e-17
a = 0.22221  t=5  e(xlu) = 7.588939e-17  e(xlu1) = 1.594794e-17  e(xlu2) = 1.229648e-17
a = 0.30866  t=1  e(xlu) = 1.225182e-16  e(xlu1) = 2.017082e-17  e(xlu2) = 1.926703e-17
a = 0.30866  t=2  e(xlu) = 7.824135e-17  e(xlu1) = 2.658294e-17  e(xlu2) = 2.441635e-17
a = 0.30866  t=3  e(xlu) = 7.748615e-17  e(xlu1) = 2.413684e-17  e(xlu2) = 1.924120e-17
a = 0.30866  t=4  e(xlu) = 7.591682e-17  e(xlu1) = 2.590789e-17  e(xlu2) = 2.116467e-17
a = 0.30866  t=5  e(xlu) = 8.841700e-17  e(xlu1) = 2.082325e-17  e(xlu2) = 2.160463e-17
a = 0.40245  t=1  e(xlu) = 9.785729e-17  e(xlu1) = 3.506605e-17  e(xlu2) = 2.856468e-17
a = 0.40245  t=2  e(xlu) = 9.835834e-17  e(xlu1) = 3.895732e-17  e(xlu2) = 3.101624e-17
a = 0.40245  t=3  e(xlu) = 1.540545e-16  e(xlu1) = 3.344759e-17  e(xlu2) = 2.390441e-17
a = 0.40245  t=4  e(xlu) = 1.115333e-16  e(xlu1) = 3.273274e-17  e(xlu2) = 4.018261e-17
a = 0.40245  t=5  e(xlu) = 1.124645e-16  e(xlu1) = 3.807110e-17  e(xlu2) = 2.930648e-17
a = 0.50000  t=1  e(xlu) = 1.289296e-16  e(xlu1) = 4.323403e-17  e(xlu2) = 4.437576e-17
a = 0.50000  t=2  e(xlu) = 1.221920e-16  e(xlu1) = 4.416493e-17  e(xlu2) = 3.755310e-17
a = 0.50000  t=3  e(xlu) = 1.302747e-16  e(xlu1) = 4.508044e-17  e(xlu2) = 3.976555e-17
a = 0.50000  t=4  e(xlu) = 1.103151e-16  e(xlu1) = 4.411086e-17  e(xlu2) = 3.876591e-17
a = 0.50000  t=5  e(xlu) = 1.443555e-16  e(xlu1) = 5.613764e-17  e(xlu2) = 4.362950e-17
a = 0.59755  t=1  e(xlu) = 2.345219e-16  e(xlu1) = 1.036945e-16  e(xlu2) = 9.103726e-17
a = 0.59755  t=2  e(xlu) = 1.881788e-16  e(xlu1) = 7.653201e-17  e(xlu2) = 7.052563e-17
a = 0.59755  t=3  e(xlu) = 2.937298e-16  e(xlu1) = 1.149443e-16  e(xlu2) = 8.909129e-17
a = 0.59755  t=4  e(xlu) = 2.514226e-16  e(xlu1) = 7.695543e-17  e(xlu2) = 5.642065e-17
a = 0.59755  t=5  e(xlu) = 2.114929e-16  e(xlu1) = 8.059751e-17  e(xlu2) = 6.719311e-17
a = 0.69134  t=1  e(xlu) = 3.710944e-16  e(xlu1) = 1.593374e-16  e(xlu2) = 1.183239e-16
a = 0.69134  t=2  e(xlu) = 2.265479e-16  e(xlu1) = 1.278446e-16  e(xlu2) = 9.219287e-17
a = 0.69134  t=3  e(xlu) = 2.517728e-16  e(xlu1) = 1.060556e-16  e(xlu2) = 8.660160e-17
a = 0.69134  t=4  e(xlu) = 3.382890e-16  e(xlu1) = 1.116473e-16  e(xlu2) = 1.040127e-16
a = 0.69134  t=5  e(xlu) = 2.306458e-16  e(xlu1) = 1.028056e-16  e(xlu2) = 8.212440e-17
a = 0.77779  t=1  e(xlu) = 3.362612e-16  e(xlu1) = 1.775570e-16  e(xlu2) = 1.747907e-16
a = 0.77779  t=2  e(xlu) = 3.379333e-16  e(xlu1) = 1.523229e-16  e(xlu2) = 1.328655e-16
a = 0.77779  t=3  e(xlu) = 2.936459e-16  e(xlu1) = 2.057918e-16  e(xlu2) = 1.741727e-16
a = 0.77779  t=4  e(xlu) = 5.867052e-16  e(xlu1) = 1.930568e-16  e(xlu2) = 1.668945e-16
a = 0.77779  t=5  e(xlu) = 3.387796e-16  e(xlu1) = 1.502703e-16  e(xlu2) = 1.541924e-16
a = 0.85355  t=1  e(xlu) = 5.403966e-16  e(xlu1) = 2.517095e-16  e(xlu2) = 2.973332e-16
a = 0.85355  t=2  e(xlu) = 6.309152e-16  e(xlu1) = 2.879589e-16  e(xlu2) = 2.608290e-16
a = 0.85355  t=3  e(xlu) = 5.644566e-16  e(xlu1) = 2.256120e-16  e(xlu2) = 2.683807e-16
a = 0.85355  t=4  e(xlu) = 3.246421e-16  e(xlu1) = 4.612828e-16  e(xlu2) = 4.253625e-16
a = 0.85355  t=5  e(xlu) = 3.914232e-16  e(xlu1) = 2.707795e-16  e(xlu2) = 3.365101e-16
a = 0.91573  t=1  e(xlu) = 9.563649e-16  e(xlu1) = 3.934169e-16  e(xlu2) = 4.311759e-16
a = 0.91573  t=2  e(xlu) = 7.941922e-16  e(xlu1) = 8.120501e-16  e(xlu2) = 8.956847e-16
a = 0.91573  t=3  e(xlu) = 5.485422e-16  e(xlu1) = 3.778438e-16  e(xlu2) = 2.444246e-16
a = 0.91573  t=4  e(xlu) = 1.457349e-15  e(xlu1) = 6.230556e-16  e(xlu2) = 7.744574e-16
a = 0.91573  t=5  e(xlu) = 7.655116e-16  e(xlu1) = 6.852423e-16  e(xlu2) = 6.641641e-16
a = 0.96194  t=1  e(xlu) = 8.384689e-16  e(xlu1) = 1.017136e-15  e(xlu2) = 7.790933e-16
a = 0.96194  t=2  e(xlu) = 2.032596e-15  e(xlu1) = 1.897319e-15  e(xlu2) = 1.844241e-15
a = 0.96194  t=3  e(xlu) = 1.604642e-15  e(xlu1) = 7.083235e-16  e(xlu2) = 9.334335e-16
a = 0.96194  t=4  e(xlu) = 1.828417e-15  e(xlu1) = 1.933949e-15  e(xlu2) = 1.946861e-15
a = 0.96194  t=5  e(xlu) = 2.251078e-15  e(xlu1) = 8.208068e-16  e(xlu2) = 1.137903e-15
a = 0.99039  t=1  e(xlu) = 8.181002e-15  e(xlu1) = 1.977972e-15  e(xlu2) = 3.929462e-15
a = 0.99039  t=2  e(xlu) = 9.107957e-15  e(xlu1) = 1.961309e-15  e(xlu2) = 5.843187e-15
a = 0.99039  t=3  e(xlu) = 7.366166e-15  e(xlu1) = 4.276239e-15  e(xlu2) = 4.928417e-15
a = 0.99039  t=4  e(xlu) = 9.818908e-15  e(xlu1) = 1.817318e-15  e(xlu2) = 1.941059e-15
a = 0.99039  t=5  e(xlu) = 2.288872e-15  e(xlu1) = 5.331900e-15  e(xlu2) = 3.118854e-15
a = 0.99048  t=1  e(xlu) = 8.972472e-15  e(xlu1) = 7.582562e-15  e(xlu2) = 3.782537e-15
a = 0.99048  t=2  e(xlu) = 1.016970e-14  e(xlu1) = 6.488861e-15  e(xlu2) = 3.807037e-15
a = 0.99048  t=3  e(xlu) = 6.281378e-15  e(xlu1) = 6.691950e-15  e(xlu2) = 2.718171e-15
a = 0.99048  t=4  e(xlu) = 6.328666e-15  e(xlu1) = 6.101567e-15  e(xlu2) = 3.623312e-15
a = 0.99048  t=5  e(xlu) = 9.494382e-15  e(xlu1) = 6.836954e-15  e(xlu2) = 4.877432e-15
a = 0.99076  t=1  e(xlu) = 5.960841e-15  e(xlu1) = 3.876370e-15  e(xlu2) = 4.073692e-15
a = 0.99076  t=2  e(xlu) = 4.123168e-15  e(xlu1) = 2.034445e-15  e(xlu2) = 2.607703e-15
a = 0.99076  t=3  e(xlu) = 8.326575e-15  e(xlu1) = 1.125153e-14  e(xlu2) = 2.364081e-15
a = 0.99076  t=4  e(xlu) = 5.910588e-15  e(xlu1) = 5.451069e-15  e(xlu2) = 1.862159e-15
a = 0.99076  t=5  e(xlu) = 5.941522e-15  e(xlu1) = 5.851661e-15  e(xlu2) = 3.545920e-15
a = 0.99120  t=1  e(xlu) = 5.434496e-15  e(xlu1) = 3.298619e-15  e(xlu2) = 6.596097e-15
a = 0.99120  t=2  e(xlu) = 5.679206e-15  e(xlu1) = 3.185588e-15  e(xlu2) = 3.064046e-15
a = 0.99120  t=3  e(xlu) = 9.232071e-15  e(xlu1) = 6.127863e-15  e(xlu2) = 4.714735e-15
a = 0.99120  t=4  e(xlu) = 1.025134e-14  e(xlu1) = 1.041003e-14  e(xlu2) = 1.179281e-14
a = 0.99120  t=5  e(xlu) = 4.422367e-15  e(xlu1) = 5.515136e-15  e(xlu2) = 9.389411e-15
a = 0.99180  t=1  e(xlu) = 5.398633e-15  e(xlu1) = 4.026161e-15  e(xlu2) = 5.011814e-15
a = 0.99180  t=2  e(xlu) = 9.750331e-15  e(xlu1) = 7.276911e-15  e(xlu2) = 2.608920e-15
a = 0.99180  t=3  e(xlu) = 3.811902e-15  e(xlu1) = 7.028362e-15  e(xlu2) = 8.970459e-15
a = 0.99180  t=4  e(xlu) = 1.197685e-14  e(xlu1) = 4.332873e-15  e(xlu2) = 8.797655e-15
a = 0.99180  t=5  e(xlu) = 6.031933e-15  e(xlu1) = 1.809429e-14  e(xlu2) = 6.543821e-15
a = 0.99253  t=1  e(xlu) = 6.566390e-15  e(xlu1) = 8.487050e-15  e(xlu2) = 6.042657e-15
a = 0.99253  t=2  e(xlu) = 8.375099e-15  e(xlu1) = 3.022805e-15  e(xlu2) = 3.293952e-15
a = 0.99253  t=3  e(xlu) = 2.753572e-15  e(xlu1) = 4.815772e-15  e(xlu2) = 9.162251e-15
a = 0.99253  t=4  e(xlu) = 7.434566e-15  e(xlu1) = 5.729693e-15  e(xlu2) = 5.505612e-15
a = 0.99253  t=5  e(xlu) = 1.099824e-14  e(xlu1) = 5.855138e-15  e(xlu2) = 4.325274e-15
a = 0.99336  t=1  e(xlu) = 1.199061e-14  e(xlu1) = 3.503176e-15  e(xlu2) = 7.764545e-15
a = 0.99336  t=2  e(xlu) = 1.206417e-14  e(xlu1) = 3.469444e-15  e(xlu2) = 4.189825e-15
a = 0.99336  t=3  e(xlu) = 9.245554e-15  e(xlu1) = 8.338209e-15  e(xlu2) = 6.815850e-15
a = 0.99336  t=4  e(xlu) = 7.663895e-15  e(xlu1) = 8.392700e-15  e(xlu2) = 6.381386e-15
a = 0.99336  t=5  e(xlu) = 2.986895e-15  e(xlu1) = 6.599564e-15  e(xlu2) = 7.404548e-15
a = 0.99426  t=1  e(xlu) = 6.731476e-15  e(xlu1) = 8.828966e-15  e(xlu2) = 1.311383e-14
a = 0.99426  t=2  e(xlu) = 8.406850e-15  e(xlu1) = 1.161026e-14  e(xlu2) = 4.734212e-15
a = 0.99426  t=3  e(xlu) = 6.076550e-15  e(xlu1) = 6.785383e-15  e(xlu2) = 1.091843e-14
a = 0.99426  t=4  e(xlu) = 7.896903e-15  e(xlu1) = 4.973773e-15  e(xlu2) = 8.027024e-15
a = 0.99426  t=5  e(xlu) = 4.329545e-15  e(xlu1) = 8.383896e-15  e(xlu2) = 7.831181e-15
a = 0.99520  t=1  e(xlu) = 7.544240e-15  e(xlu1) = 8.732347e-15  e(xlu2) = 8.436931e-15
a = 0.99520  t=2  e(xlu) = 9.156429e-15  e(xlu1) = 2.456780e-15  e(xlu2) = 7.944947e-15
a = 0.99520  t=3  e(xlu) = 1.446345e-14  e(xlu1) = 1.437447e-14  e(xlu2) = 1.225700e-14
a = 0.99520  t=4  e(xlu) = 2.116654e-14  e(xlu1) = 3.319279e-15  e(xlu2) = 7.218606e-15
a = 0.99520  t=5  e(xlu) = 1.678110e-14  e(xlu1) = 1.138798e-14  e(xlu2) = 7.927886e-15
a = 0.99613  t=1  e(xlu) = 3.360404e-14  e(xlu1) = 5.094035e-15  e(xlu2) = 9.530794e-15
a = 0.99613  t=2  e(xlu) = 1.480075e-14  e(xlu1) = 2.368913e-14  e(xlu2) = 1.289500e-14
a = 0.99613  t=3  e(xlu) = 1.284652e-14  e(xlu1) = 8.619690e-15  e(xlu2) = 1.027236e-14
a = 0.99613  t=4  e(xlu) = 1.444306e-14  e(xlu1) = 1.716513e-14  e(xlu2) = 1.237807e-14
a = 0.99613  t=5  e(xlu) = 1.714838e-14  e(xlu1) = 1.804688e-14  e(xlu2) = 1.208832e-14
a = 0.99703  t=1  e(xlu) = 2.251931e-14  e(xlu1) = 2.283004e-14  e(xlu2) = 1.723162e-14
a = 0.99703  t=2  e(xlu) = 1.256143e-14  e(xlu1) = 1.228514e-14  e(xlu2) = 1.095589e-14
a = 0.99703  t=3  e(xlu) = 1.527148e-14  e(xlu1) = 7.431238e-15  e(xlu2) = 3.850739e-14
a = 0.99703  t=4  e(xlu) = 1.669169e-14  e(xlu1) = 1.294981e-14  e(xlu2) = 1.521584e-14
a = 0.99703  t=5  e(xlu) = 2.040241e-14  e(xlu1) = 2.103465e-14  e(xlu2) = 1.174347e-14
a = 0.99787  t=1  e(xlu) = 2.678060e-14  e(xlu1) = 2.802275e-14  e(xlu2) = 3.763166e-14
a = 0.99787  t=2  e(xlu) = 2.556869e-14  e(xlu1) = 2.705321e-14  e(xlu2) = 1.578681e-14
a = 0.99787  t=3  e(xlu) = 2.188863e-14  e(xlu1) = 2.501106e-14  e(xlu2) = 2.141014e-14
a = 0.99787  t=4  e(xlu) = 9.073518e-15  e(xlu1) = 1.561405e-14  e(xlu2) = 1.264478e-14
a = 0.99787  t=5  e(xlu) = 4.173853e-14  e(xlu1) = 1.625356e-14  e(xlu2) = 2.141139e-14
a = 0.99859  t=1  e(xlu) = 4.093733e-14  e(xlu1) = 3.623367e-14  e(xlu2) = 7.881382e-15
a = 0.99859  t=2  e(xlu) = 4.174908e-14  e(xlu1) = 2.066486e-14  e(xlu2) = 4.521499e-14
a = 0.99859  t=3  e(xlu) = 2.623626e-14  e(xlu1) = 1.917555e-14  e(xlu2) = 2.053473e-14
a = 0.99859  t=4  e(xlu) = 4.300177e-14  e(xlu1) = 2.884831e-14  e(xlu2) = 4.108588e-14
a = 0.99859  t=5  e(xlu) = 1.872317e-14  e(xlu1) = 4.487089e-14  e(xlu2) = 6.581127e-14
a = 0.99919  t=1  e(xlu) = 9.535090e-14  e(xlu1) = 1.054840e-13  e(xlu2) = 1.450379e-13
a = 0.99919  t=2  e(xlu) = 3.723757e-14  e(xlu1) = 1.028834e-13  e(xlu2) = 4.760231e-14
a = 0.99919  t=3  e(xlu) = 4.051219e-14  e(xlu1) = 7.129963e-14  e(xlu2) = 6.225203e-14
a = 0.99919  t=4  e(xlu) = 7.453855e-14  e(xlu1) = 2.050326e-14  e(xlu2) = 5.229245e-14
a = 0.99919  t=5  e(xlu) = 1.796265e-14  e(xlu1) = 4.371221e-14  e(xlu2) = 1.452875e-14
a = 0.99963  t=1  e(xlu) = 7.945984e-14  e(xlu1) = 7.272837e-15  e(xlu2) = 1.165559e-13
a = 0.99963  t=2  e(xlu) = 2.479302e-13  e(xlu1) = 3.325406e-13  e(xlu2) = 1.963665e-13
a = 0.99963  t=3  e(xlu) = 7.462981e-14  e(xlu1) = 7.458401e-14  e(xlu2) = 2.599646e-14
a = 0.99963  t=4  e(xlu) = 2.283331e-13  e(xlu1) = 9.421576e-14  e(xlu2) = 7.509877e-14
a = 0.99963  t=5  e(xlu) = 1.918194e-13  e(xlu1) = 8.485453e-14  e(xlu2) = 6.891602e-14
a = 0.99991  t=1  e(xlu) = 4.008496e-13  e(xlu1) = 1.535237e-13  e(xlu2) = 1.132539e-13
a = 0.99991  t=2  e(xlu) = 3.243177e-13  e(xlu1) = 5.070710e-13  e(xlu2) = 1.065362e-12
a = 0.99991  t=3  e(xlu) = 2.698736e-13  e(xlu1) = 4.503917e-13  e(xlu2) = 6.526841e-13
a = 0.99991  t=4  e(xlu) = 1.485534e-13  e(xlu1) = 3.394294e-13  e(xlu2) = 4.771368e-13
a = 0.99991  t=5  e(xlu) = 3.291290e-13  e(xlu1) = 3.965766e-13  e(xlu2) = 2.882358e-13

Iterative refinement didn't seem to help much. My conclusion from this experiment is that just using the standard backslash solver is best (R2007a/b) as long as the total quadrature weight on the nodes above 0.99 is less than 1e-4