[Scilab-users] Is cond([]) 0 or 1 ? (bug 15579)

classic Classic list List threaded Threaded
10 messages Options
Samuel GOUGEON Samuel GOUGEON
Reply | Threaded
Open this post in threaded view
|

[Scilab-users] Is cond([]) 0 or 1 ? (bug 15579)

Hello,

Another case with []:
The bug 15579 reports that cond([]) returns 1, while cond([],2) -- that computes the same 2-norm conditional number for any other matrix than [] -- returns 0.

Actually, cond([], p) returns 0 for any accepted p value.

At least since Scilab 4, and likely since the beginning of Scilab,  cond([]) is set to 1 as a specific case.
I am wondering why.

In my opinion, the mismatch between cond([]) and the equivalent cond([],2) must be fixed.
There are at least two way to do it :

  • either keep cond([]) to 1 and set all cond([], p) to 1 instead of 0
  • or set cond([]) to 0.

I don't see any clear reason enforcing a choice rather than the other.
Do you?

Let's note that

  • Octave returns 0 in both cond([]) and cond([],p) cases
  • Julia, Python, and R (with kappa()) yield an error
Regards
Samuel



_______________________________________________
users mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/users
Rafael Guerra Rafael Guerra
Reply | Threaded
Open this post in threaded view
|

Re: Is cond([]) 0 or 1 ? (bug 15579)

Hi Samuel,

 

Please read the following article on this interesting topic of the algebra of empty matrices:

https://pdfs.semanticscholar.org/0f3b/c36f19d5c6a761c19fbc3c4ebde2f31b0a10.pdf

 

It states that the condition number of the empty matrix should be 0.

 

Regards,

Rafael

 

From: users [mailto:[hidden email]] On Behalf Of Samuel Gougeon
Sent: Monday, May 21, 2018 3:46 PM
To: International users mailing list for Scilab. <[hidden email]>
Subject: [Scilab-users] Is cond([]) 0 or 1 ? (bug 15579)

Hello,

Another case with []:
The bug 15579 reports that cond([]) returns 1, while cond([],2) -- that computes the same 2-norm conditional number for any other matrix than [] -- returns 0.

Actually, cond([], p) returns 0 for any accepted p value.

At least since Scilab 4, and likely since the beginning of Scilab,  cond([]) is set to 1 as a specific case.
I am wondering why.

In my opinion, the mismatch between cond([]) and the equivalent cond([],2) must be fixed.
There are at least two way to do it :

  • either keep cond([]) to 1 and set all cond([], p) to 1 instead of 0
  • or set cond([]) to 0.

I don't see any clear reason enforcing a choice rather than the other.
Do you?

Let's note that

  • Octave returns 0 in both cond([]) and cond([],p) cases
  • Julia, Python, and R (with kappa()) yield an error

Regards
Samuel


_______________________________________________
users mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/users
Philippe Roux Philippe Roux
Reply | Threaded
Open this post in threaded view
|

Re: Is cond([]) 0 or 1 ? (bug 15579)

In reply to this post by Samuel GOUGEON
Le 21/05/2018 à 15:46, Samuel Gougeon a écrit :
>
> There are at least two way to do it :
>
>   * either keep *cond([])* to *1* and set all *cond([], p)* to 1 instead
>     of 0
>   * or set *cond([])* to *0*.
>
> I don't see any clear reason enforcing a choice rather than the other.
> Do you?

from a mathematical point of view  the Condition number of a matrix A is
defined by

cond(A)=||A|| . ||A^(-1)||
its interest is that when solving A*x=y rounding errors on y (eps) are
amplified to be cond(A)*eps. The optimal value of cond(A) is 1 (for
identity matrix) so for me it looks natural that cond([])=1 .

Philippe

_______________________________________________
users mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/users
Samuel GOUGEON Samuel GOUGEON
Reply | Threaded
Open this post in threaded view
|

Re: Is cond([]) 0 or 1 ? (bug 15579)

Hello Philippe,

Le 24/05/2018 à 23:20, philippe a écrit :
Le 21/05/2018 à 15:46, Samuel Gougeon a écrit :
There are at least two way to do it :

  * either keep *cond([])* to *1* and set all *cond([], p)* to 1 instead
    of 0
  * or set *cond([])* to *0*.

I don't see any clear reason enforcing a choice rather than the other.
Do you?
from a mathematical point of view  the Condition number of a matrix A is
defined by

cond(A)=||A|| . ||A^(-1)||
its interest is that when solving A*x=y rounding errors on y (eps) are
amplified to be cond(A)*eps. The optimal value of cond(A) is 1 (for
identity matrix) so for me it looks natural that cond([])=1 .

I must confess that, unless claiming that norm([]) is NOT 0,  i do not catch clearly the logical of your conclusion
  • "The optimal value of cond(A) is 1 (for identity matrix) so for me it looks natural that cond([])=1"

Indeed, cond([]) = norm([])*norm(inv([])) = 0*norm([]) = 0*0 = 0

By the way, according to the clear explanation you give about the meaning of the condition number, the value 0 is even more optimal: it says that small variations are not getting amplified, but killed.

Please let us know more about your proposal for 1 instead of 0.

Regards
Samuel


_______________________________________________
users mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/users
Philippe Roux Philippe Roux
Reply | Threaded
Open this post in threaded view
|

Re: Is cond([]) 0 or 1 ? (bug 15579)

Le 27/05/2018 à 19:51, Samuel Gougeon a écrit :
> [...]
>
> Please let us know more about your proposal for 1 instead of 0.

I can't say it now, the best value also depends on the compatibility of
this value with others assigned to matrix functions with argument [].  I
would like to check it before, but with the example you mention 0 looks
a better choice.

Philippe

_______________________________________________
users mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/users
Rafael Guerra Rafael Guerra
Reply | Threaded
Open this post in threaded view
|

Re: Is cond([]) 0 or 1 ? (bug 15579)

You guys may have missed the paper sent before on the algebra of empty matrices by Carl de Boor (Emeritus Professor in Mathematics and Computer Science), so I am sending it again:

https://pdfs.semanticscholar.org/0f3b/c36f19d5c6a761c19fbc3c4ebde2f31b0a10.pdf

 

He argues that the condition number of the square empty matrix [] = 0 and its det([]) = 1

 

Regards,

Rafael

 

-----Original Message-----
From: users [mailto:[hidden email]] On Behalf Of philippe
Sent: Sunday, May 27, 2018 11:24 PM
To: [hidden email]
Subject: Re: [Scilab-users] Is cond([]) 0 or 1 ? (bug 15579)

 

Le 27/05/2018 à 19:51, Samuel Gougeon a écrit :

> [...]

>

> Please let us know more about your proposal for 1 instead of 0.

 

I can't say it now, the best value also depends on the compatibility of this value with others assigned to matrix functions with argument [].  I would like to check it before, but with the example you mention 0 looks a better choice.

 

Philippe

 

 

 

 


_______________________________________________
users mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/users
Samuel GOUGEON Samuel GOUGEON
Reply | Threaded
Open this post in threaded view
|

Re: Is cond([]) 0 or 1 ? (bug 15579)

Le 27/05/2018 à 23:49, Rafael Guerra a écrit :

You guys may have missed the paper sent before on the algebra of empty matrices by Carl de Boor (Emeritus Professor in Mathematics and Computer Science), so I am sending it again:

https://pdfs.semanticscholar.org/0f3b/c36f19d5c6a761c19fbc3c4ebde2f31b0a10.pdf

 

He argues that the condition number of the square empty matrix [] = 0 and its det([]) = 1


No no, i did not miss it. His argument is that norm([]) is 0:

Any norm of an empty matrix is zero, as the supremum of the empty set of nonnegative numbers. This implies that the condition number of the square empty matrix [] is 0.

This does not prevent asking to Philippe why he proposes 1, noticeably if he also considers that norm([])==0, or not.

The De Boor argument "as the supremum of the empty set of nonnegative numbers." is not clear to me.

Is it clear for you? Would you have a second convergent independent reference?

Samuel


_______________________________________________
users mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/users
Rafael Guerra Rafael Guerra
Reply | Threaded
Open this post in threaded view
|

Re: Is cond([]) 0 or 1 ? (bug 15579)

No, it is not clear but then, I am not an Emeritus Professor of Mathematics.

Sorry but I have no other references on this empty subject.

 

Regards,

Rafael

 

From: users [mailto:[hidden email]] On Behalf Of Samuel Gougeon
Sent: Monday, May 28, 2018 12:09 AM
To: Users mailing list for Scilab <[hidden email]>
Subject: Re: [Scilab-users] Is cond([]) 0 or 1 ? (bug 15579)

 

Le 27/05/2018 à 23:49, Rafael Guerra a écrit :

You guys may have missed the paper sent before on the algebra of empty matrices by Carl de Boor (Emeritus Professor in Mathematics and Computer Science), so I am sending it again:

https://pdfs.semanticscholar.org/0f3b/c36f19d5c6a761c19fbc3c4ebde2f31b0a10.pdf

 

He argues that the condition number of the square empty matrix [] = 0 and its det([]) = 1


No no, i did not miss it. His argument is that norm([]) is 0:

Any norm of an empty matrix is zero, as the supremum of the empty set of nonnegative numbers. This implies that the condition number of the square empty matrix [] is 0.

This does not prevent asking to Philippe why he proposes 1, noticeably if he also considers that norm([])==0, or not.

The De Boor argument "as the supremum of the empty set of nonnegative numbers." is not clear to me.

Is it clear for you? Would you have a second convergent independent reference?

Samuel


_______________________________________________
users mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/users
mottelet mottelet
Reply | Threaded
Open this post in threaded view
|

Re: Is cond([]) 0 or 1 ? (bug 15579)

Le 28/05/2018 à 10:58, Rafael Guerra a écrit :

No, it is not clear but then, I am not an Emeritus Professor of Mathematics.

Sorry but I have no other references on this empty subject.

 

Regards,

Rafael

 

From: users [[hidden email]] On Behalf Of Samuel Gougeon
Sent: Monday, May 28, 2018 12:09 AM
To: Users mailing list for Scilab [hidden email]
Subject: Re: [Scilab-users] Is cond([]) 0 or 1 ? (bug 15579)

 

Le 27/05/2018 à 23:49, Rafael Guerra a écrit :

You guys may have missed the paper sent before on the algebra of empty matrices by Carl de Boor (Emeritus Professor in Mathematics and Computer Science), so I am sending it again:

https://pdfs.semanticscholar.org/0f3b/c36f19d5c6a761c19fbc3c4ebde2f31b0a10.pdf

 

He argues that the condition number of the square empty matrix [] = 0 and its det([]) = 1


No no, i did not miss it. His argument is that norm([]) is 0:

Any norm of an empty matrix is zero, as the supremum of the empty set of nonnegative numbers. This implies that the condition number of the square empty matrix [] is 0.

This does not prevent asking to Philippe why he proposes 1, noticeably if he also considers that norm([])==0, or not.

The De Boor argument "as the supremum of the empty set of nonnegative numbers." is not clear to me.

Every property (even trivially false) is true for all elements of the empty set. Hence, any positive number can be taken as the supremum of the empty set. However, I don't see in which sense this could justify the discusses convention...

S.


Is it clear for you? Would you have a second convergent independent reference?

Samuel



_______________________________________________
users mailing list
[hidden email]
https://antispam.utc.fr/proxy/1/c3RlcGhhbmUubW90dGVsZXRAdXRjLmZy/lists.scilab.org/mailman/listinfo/users


-- 
Stéphane Mottelet
Ingénieur de recherche
EA 4297 Transformations Intégrées de la Matière Renouvelable
Département Génie des Procédés Industriels
Sorbonne Universités - Université de Technologie de Compiègne
CS 60319, 60203 Compiègne cedex
Tel : +33(0)344234688
http://www.utc.fr/~mottelet

_______________________________________________
users mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/users
Samuel GOUGEON Samuel GOUGEON
Reply | Threaded
Open this post in threaded view
|

Re: Is cond([]) 0 or 1 ? (bug 15579)

In reply to this post by Philippe Roux
Le 27/05/2018 à 23:23, philippe a écrit :
> Le 27/05/2018 à 19:51, Samuel Gougeon a écrit :
>> [...]
>>
>> Please let us know more about your proposal for 1 instead of 0.
> I can't say it now, the best value also depends on the compatibility of
> this value with others assigned to matrix functions with argument [].
> I would like to check it before, but with the example you mention 0 looks
> a better choice.

As far as i understand, rcond(X) should return the inverse of cond(X,1).

In Scilab, rcond([]) returns []. This looks pretty inconsistent with any
Scilab cond([],p) result,
and does not help much for this longly empty cond([]) discussion.

In Octave, rcond([]) returns %inf, that's consistent with cond([])==0.

However, still, a guy whose det() is 1 and norm() is 0 is really a
special guy.

If we have no evidence/reference on the fact norm([]) is 1 rather than 0,
i guess that we will change Scilab's cond([]) to 0.
May the Scilab creator having initially set 1 read us and correct us if
it's needed.

Cheers
Samuel

_______________________________________________
users mailing list
[hidden email]
http://lists.scilab.org/mailman/listinfo/users