As Julio asks, why should the default be a dense identity matrix? Who actually wants to use that? I agree `I` should be in more visible in the docs and in most cases it's the better option. But if you actually want a matrix as an array instead of just an operator (this is reasonable, because maybe you're going to modify it), then a Diagonal matrix is sufficient for storing any identity matrix and should be the only thing used in most cases. If you really want a dense matrix from it, you could always call full(A). But there's almost no reason to have a dense identity matrix, and so Julia shouldn't be defaulting to it because it's just a performance trap for new users coming from MATLAB.
On Monday, August 29, 2016 at 8:31:13 AM UTC-7, Kristoffer Carlsson wrote: > > What is the confusion? Use eye(n) if you want a dense identity matrix. Use > I if you want something that acts like an identity element. Use > Diagonal(ones(n)) if you want a diagonal identity matrix. I see no reason > at all why eye should be changed. > > On Monday, August 29, 2016 at 4:32:34 PM UTC+2, Chris Rackauckas wrote: >> >> But you don't want a sparse matrix. It would not be an efficient way to >> actually use it since sparse matrices have a bit of overhead due to their >> table structure. Even better would be a Diagonal since it's just an array >> with dispatches to act like a diagonal matrix. But best would be to use the >> UniformScaling operator `I` which acts like eye in cases like A-λI but >> isn't actually saving a matrix and doesn't actually require iterating over >> two arrays at once. I think that amount of confusion in this thread is a >> good indicator that eye should be changed. >> >> On Monday, August 29, 2016 at 7:25:49 AM UTC-7, Kristoffer Carlsson wrote: >>> >>> You mean a sparse matrix? >> >>