Actually, I guess that indexof won't have any of the functionality I might
want MatrixExprs to have. Alas.

On Tue, Oct 9, 2012 at 7:27 PM, Matthew Rocklin <[email protected]> wrote:

> Ok, I see how that can work. Thanks!
>
> It looks like I'll need an LofLUDecomp and UofLUDecomp classes.
> Alternatively I could make a general FirstArg class and SecondArg class.
>
> If we take this idea ad-naseum we might end up with an IndexOf class.
>
> LU = LUDecomposition(X)
> L = IndexOf(LU, 0)
> U = IndexOf(LU, 1)
>
> QR = QRDecompositoin(X)
> Q = IndexOf(QR, 0)
> R = IndexOf(QR, 1)
>
> This could then be sugared up with other classes if necessary. I like the
> idea of using __iter__ to produce these transparently.
>
> What do you think of the IndexOf idea. Too odd or just right?
>
> On Tue, Oct 9, 2012 at 7:17 PM, Aaron Meurer <[email protected]> wrote:
>
>> Well, you could make that syntax work by defining __iter__, so that
>>
>> L, U = LUDecomposition(X)
>>
>> would be the same as
>>
>> LU = LUDecomposition(X)
>> L, U = LU.L, LU.U
>>
>> Wouldn't the type just be MatrixExpr?  But I see what you mean now.
>> L, U, and X are somehow "linked" together.  So I guess you might need
>> to have a separate subclass for L and for U, like LowerTriangular, and
>> UpperTrangular (except with some better names that suggest that the
>> objects always have a corresponding dual). Those classes would then
>> have some properties that point to the corresponding class, and also
>> back to X.  It may actually be overkill to also create LUDecomposition
>> as a third class (depending again on what you want to do).
>>
>> But honestly, the best way to see what the class structure should look
>> like is to write down all the functionality you want, and then see
>> what you can factor out into common superclasses.  From there, the
>> names of the classes should be clear by what kind of common
>> functionality they define.  Trying to do this in the other order
>> (figure out what the common type "names" are and then ask what kind of
>> functionality they should provide) has never worked for me. I think
>> it's one of the failures in education about OO design that this way is
>> what's taught (or at least that's how I first learned it).
>>
>> Aaron Meurer
>>
>> On Tue, Oct 9, 2012 at 6:04 PM, Matthew Rocklin <[email protected]>
>> wrote:
>> > I might want to include in in queries to some sort of assumptions system
>> > (not yet built).
>> >
>> > L, U = LUDecomposition(X)
>> >
>> > ask(Q.full_rank(L), Q.full_rank(X))
>> >
>> > How would this work if L and U were properties? What is type(L) in this
>> > case?
>> >
>> >
>> > On Tue, Oct 9, 2012 at 6:50 PM, Aaron Meurer <[email protected]>
>> wrote:
>> >>
>> >> Is it not enough to just have two properties, L and U, of the object?
>> >> What kinds of things would you want to do with the object?
>> >>
>> >> Aaron Meurer
>> >>
>> >> On Tue, Oct 9, 2012 at 4:54 PM, Matthew Rocklin <[email protected]>
>> >> wrote:
>> >> > What is the best way to represent a symbolic operation in SymPy that
>> has
>> >> > multiple outputs? In particular I would like an LUDecomposition
>> object.
>> >> >
>> >> > L, U = LUDecomposition((X*X.T).I*X)
>> >> >
>> >> > It's a bit strange because I want to separately refer to two halves
>> of
>> >> > one
>> >> > lazily evaluated object. Do we have any solution for this kind of
>> issue
>> >> > in
>> >> > SymPy?
>> >> >
>> >> > Best,
>> >> > -Matt
>> >> >
>> >> > --
>> >> > You received this message because you are subscribed to the Google
>> >> > Groups
>> >> > "sympy" group.
>> >> > 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/sympy?hl=en.
>> >>
>> >> --
>> >> You received this message because you are subscribed to the Google
>> Groups
>> >> "sympy" group.
>> >> 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/sympy?hl=en.
>> >>
>> >
>> > --
>> > You received this message because you are subscribed to the Google
>> Groups
>> > "sympy" group.
>> > 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/sympy?hl=en.
>>
>> --
>> You received this message because you are subscribed to the Google Groups
>> "sympy" group.
>> 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/sympy?hl=en.
>>
>>
>

-- 
You received this message because you are subscribed to the Google Groups 
"sympy" group.
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/sympy?hl=en.

Reply via email to