Backslash inversion vs inv-function

Rolf Fabian Rolf.Fabian at gmx.de
Fri Jan 18 04:54:29 CST 2008


Because of its underlying algorithm, I expected that 
inversion of a (nonsingular) square matrix should
be faster using backslash operator  'y2 = x\eye(n)'
instead of Octave's  builtin 'y1 = inv(x)'  function.

Thus I conducted  dimension n - depending tests
using random matrices input in order to sched
some light on this issue.

octave-3.0.0.exe:48> n=5; x=randn(n); tic; y1 = inv(x); toc,
                                      tic; y2 = x\eye(n); toc, 
max(max(abs(y1-y2)))

             Elapsed time is sec.
   n         inv(x)          x\eye(n)   Speed Gain Fac   max(max(abs(result
difference)))
   5         0.05531     0.000258        214              1.1102e-016
  10         0.06063     0.000313       194              4.4409e-016
  25         0.05705     0.000705         81              6.9944e-015
  50         0.05889     0.002197         27              1.2212e-015
 100        0.07195     0.01153          6.2              1.8952e-015
 150        0.08721     0.03425          2.6              2.2649e-014
 200        0.1271       0.06117         2.1               3.9413e-015
 300        0.2892       0.1991           1.5               8.5820e-014
 400        0.6255       0.609             1.03             8.9484e-014
 500        1.176         1.263             0.93            2.2163e-014
 600        2.05           2.197            0.93             7.0499e-015
 700        3.228         3.458            0.93             2.4092e-014
 800        4.855         5.137            0.95             2.2243e-014
 900        6.873         7.272            0.95             3.0781e-014
1000       9.506         9.988            0.95             2.8283e-014

I've done this on a relative old laptop 
(Windows XP, SP2, Intel III Mobile CPU 933 MHz 512 MB RAM)
so do not wonder about absolute performance times.

>From the the table above it can be seen that the results confirm my
expectations.
Up to about 400x400 sized matrices the speed gain (column 4) can be
enormous.
Consequently replacing 'inv(x)' in existing code by 'x\eye(n)' might be an
option and should be considered.

Unfortunately the maximal absolute difference between the two results
also increases with dimension n. Does anybody know which algorithm
is considered to be the more precise ?

Rolf Fabian

< r dot fabian at jacobs-university dot de>

-----
Rolf Fabian
<r dot fabian at jacobs-university dot de>

-- 
View this message in context: http://www.nabble.com/Backslash-inversion-vs-inv-function-tp14948079p14948079.html
Sent from the Octave - Maintainers mailing list archive at Nabble.com.



More information about the Octave-maintainers mailing list