On Jun 19, 2007, at 9:02 PM, [EMAIL PROTECTED] wrote:

> Hi All,
>
> I am trying to write a small class which implements symmetric
> matrices,

Great

> but I'm unclear how to inherit from
> sage.matrix.matrix_dense.  How can I tell what the initialization
> does, and how to properly call it?  I tried looking at
> sage.matrix.matrix_integer_dense.pyx to do this, but I'm still having
> some trouble.  I have included the class and errors below.  Thanks!
>
> -Jon
>  =)

The second parameter of the __init__ method of the matrix classes are  
parent (i.e. matrix spaces) rather than the ring. This is why you're  
getting the errors below. The matrix() constructor that takes a ring  
is just a convenience. I'm not sure the best way to handle symmetric  
matrices, but I'd imagine the best way to do it is to pass in a  
"shape" parameter into the matrix() function.

I would probably would inherit from matrix.Matrix directly. The first  
subdivision (sparse/dense) seems to be about storage format, and this  
seems to belong at that level.

- Robert

>
> ---------------------------------------------------------------------- 
> ---------------------------------------------------------------------- 
> ------------------
> ----------------------------------------------------------------------
> | SAGE Version 2.6, Release Date: 2007-06-02                         |
> | Type notebook() for the GUI, and license() for information.        |
> ----------------------------------------------------------------------
> Loading SAGE library. Current Mercurial branch is: qfdevel
> sage: SymmetricMatrix(ZZ,3, [1,2,3,4,5,6])
> ---------------------------------------------------------------------- 
> -----
> <type 'exceptions.AttributeError'>        Traceback (most recent call
> last)
>
> /Users/jonhanke/Documents/sage-2.6/<ipython console> in <module>()
>
> /Users/jonhanke/Documents/sage-2.6/local/lib/python2.5/site-packages/
> sage/quadratic_forms/symmetric_matrix.py in __init__(self, R, n,
> entries)
>      53         """
>      54         ## Run the parent initialization
> ---> 55         Matrix_dense.__init__(self, R)
>      56
>      57         ## Set the size of the matrix
>
> /Users/jonhanke/Documents/sage-2.6/matrix0.pyx in
> matrix0.Matrix.__init__()
>
> <type 'exceptions.AttributeError'>:
> 'sage.rings.integer_ring.IntegerRing_class' object has no attribute
> 'nrows'
> sage:
>
> ---------------------------------------------------------------------- 
> ---------------------------------------------------------------------- 
> ------------------
>
> from sage.matrix.matrix_dense import Matrix_dense
> from sage.rings.integer import is_Integer
>
> class SymmetricMatrix(Matrix_dense):
>     """
>     SymmetricMatrix()
>     """
>     def __init__(self, R, n, entries):
>         """
>         Initialize a symmetric matrix of a given size, and possibly
> with given
>         entries along its (upper-triangular) rows.
>
>         INPUT:
>             R -- a ring
>             n -- an integer n >= 0
>             entries -- a list of entries in parent of size n*(n+1)/2
>
>         EXAMPLES:
>
>         """
>         ## Run the parent initialization
>         Matrix_dense.__init__(self, R)
>
>         ## Set the size of the matrix
>         if is_Integer(n) and (n >= 0):
>             self._nrows = n
>             self._ncols = n
>         else:
>             raise TypeError, "Oops! The size " + str(n) + "must be a
> non-negative integer."
>
>         ## Check if entries is a list for the corrent size, and if so,
> write the upper-triangular matrix
>         if isinstance(entries, list) and (len(entries) == n*(n+1)/2):
>             ind = 0
>             for i in range(n):
>                 for j in range(i, n):
>                     self._entries[i+j] = entries[ind]
>                     ind += 1
>         else:
>             raise TypeError, "Oops! The entries " + str(entries) +
> "must be a list of size n(n+1)/2."
>
>
> 

--~--~---------~--~----~------------~-------~--~----~
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at http://groups.google.com/group/sage-devel
URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/
-~----------~----~----~----~------~----~------~--~---

Reply via email to