[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Behavior of mldivide in Octave relative to Matlab
From: |
David Bateman |
Subject: |
Behavior of mldivide in Octave relative to Matlab |
Date: |
Tue, 08 Apr 2008 12:57:59 +0200 |
User-agent: |
Thunderbird 2.0.0.12 (X11/20080306) |
I was recently contacted by Marco Caliari in particular concerning the
behavior of the mldivide operator in Octave and Matlab for
underdetermined systems. He pointed out the thread
http://icl.cs.utk.edu/lapack-forum/viewtopic.php?p=497&
where the behavior of the Matlab mldivide operator is analyzed. It seems
that Matlab is not using the LAPACK xGEDLD function like Octave does,
but rather a formulation based on the QR factorization. The formulation
can be written as
m=10; n=20; A = randn(m,n); b=rand(m,1); [Q,R,E]=qr(A);
[A\b E(:,1:m)*(R(:,1:m)\(Q'*b))]
Result returned by this is not the minimum 2-norm solution, like in
Octave but is equally valid. It also appears that the matlab method is
faster and uses less memory. Marco points out that values like m=50 and
n=20000 in the above will result in an exhaustion of the memory of the
machine, whereas Matlab is still capable of returning a result.
Another issue is what is the result that is returned by Matlab and
Octave for singular matrices. Consider a case like
A = [eps, 0, -eps; 0, eps, -eps; -eps, 0, 10]; x = A \ ones(3,1)
Octave falls back to using xGELSD to solve the matrix in this case
whereas as Matlab returns the result based on LU factorization with a
warning of its inaccuracy.
Should we duplicate Matlab's behavior for the two cases above?
Regards
David
--
David Bateman address@hidden
Motorola Labs - Paris +33 1 69 35 48 04 (Ph)
Parc Les Algorithmes, Commune de St Aubin +33 6 72 01 06 33 (Mob)
91193 Gif-Sur-Yvette FRANCE +33 1 69 35 77 01 (Fax)
The information contained in this communication has been classified as:
[x] General Business Information
[ ] Motorola Internal Use Only
[ ] Motorola Confidential Proprietary
- Behavior of mldivide in Octave relative to Matlab,
David Bateman <=