About diagonal matrices

Daniel J Sebald daniel.sebald at ieee.org
Sun Mar 1 14:16:14 CST 2009


Jaroslav Hajek wrote:
> On Sun, Mar 1, 2009 at 8:23 PM, Daniel J Sebald <daniel.sebald at ieee.org> wrote:
> 
>>dbateman wrote:
>>
>>
>>>Well I'm finally somewhere I can write an e-mail from easily, though I
>>>haven't had the time to reread the thread. The issue I considered in the
>>>past like this was operations like "speye(n) .^ 0" or "speye(n) ./ 0"
>>>where
>>>the 0.^0 and 0./0 terms of the matrix should create a NaN in the resulting
>>>matrix I hadn't considered the "speye(n) OP NaN" but didn't and don't yet
>>>see why it should be different if the NaN is pre-existing rather than
>>>created by the binary operation, otherwise the NaN values won't propagate
>>>and in fact might very likely disappear. You seem to think, and have
>>>convince John that disappearing NaN's are a good thing so I'll try to
>>>reread
>>>the thread and respond again later on.
>>
>>I think a "default sparse value" solves this, no matter what one thinks the
>>defined behavior should be.  Call the indeces assigned the default value the
>>"sparse set".  The sparse set could be NaN, while assigned values could also
>>happen to be NaN.
> 
> 
> No, it doesn't. At least not completely - just the simple cases. See
> my previous examples about this. And it would make the sparse
> operations more complicated and probably less efficient.
> You are, obviously, free to propose a detailed implementation. But
> please be more specific.

Say I define a sparse matrix where indeces (i,j) in S are zero.  Call S the sparse set.  I.e., 

M(i,j) = 0 for (i,j) in S
         m_i,j otherwise

Now, do an operation on M (something simple so we can avoid the issues of set operations across sparse matrices... I know, that's where all the work is), say M/0.  Then

M(i,j)/0 = Nan for (i,j) in S
           m_i,j / 0 otherwise

We've kept track of the sparse set, so we still know what this.  Little has changed, assigned from assigning the sparse set a value.  Correct?

For the more general operations of two sparse sets, I proposed in a previous email to keep track of index sets.  It adds more complexity


>>The value of the sparse matrix is when it comes time to use it in operations
>>where a full matrix would consume the CPU.  So it does make sense to keep
>>track of the sparse set.
>>
> 
> 
> Huh? I don't understand.

What is the purpose of sparse sets?  Represent large matrices that are mostly zero (or some default value, I argue).  Also, when solving matrix operations or systems of equations that are sparse, much of the computations can be discarded.

Dan


More information about the Octave-maintainers mailing list