Dear Martin, and all, I agree with your mail, and let me expose what I'm looking for with my students.
> I'd like to concentrate on your function "columnBasis". I think > that the other functions are less important. It's right for columnSpace and rowSpace. I'd like to have also the 3 functions basis, intBasis and sumBasis over List Vector ?? because elementry exercices are about, and Maple and Mupad have theses functions. > As a synonym, we probably should have - analogous to > basis$ALGPKG, a function basis: List Col -> List Col. > But maybe this should go into a different package, maybe. Don't forget intBasis, and complete it with the easyest sumBais. > VectorCollectionFunctions(R: Ring, L: Collection Vector R) > or some such. But really, that should be done in a second step. > + Your code can be made slightly more efficient. I think you propose, it's right. > columnSpace M == > M2 := rowEchelon M > basis: List Col := [] > n: Integer := ncols M > m: Integer := nrows M > indRow: Integer := 1 > for k in 1..n while indRow <= m repeat > if not zero?(M2.(indRow, k)) then > basis := cons(column(M, k), basis) > indRow := indRow + 1 > reverse! basis > + We only need an Euclidean domain for your code (and the maths) to > work. In fact, Integers are a prime example. Although, I must > admit that in this case the names are slightly confusing, because we > obtain a Q-basis of the columnSpace, where Q is the quotient field > of R. So this code must be after the test : if R has EuclidianDomain I don't understand why there are and MATLIN MatrixLinearAlgebraFunctions package and IMATLIN InnerMatrixLinearAlgebraFunctions and MMATLIN InnerMatrixLinearAlgebraFunctions (with other parameters) > The code should actually go into MATCAT$matcat.spad.pamphlet. Indeed... Is it because MATCAT is at a higher / more mathematical level ? But why isn't also rowEchelon in this file ? > You also have to make it available for RectangularMatrix. Let me understand the question ! > * if you like to invest more time, I think it would be *very* worthwhile to > check whether we can make RectangularMatrixCategory inherit from > MatrixCategory. As far as I can see, the only problem is that currently a > domain having DirectProductCategory(n, R) is not a FiniteLinearAggregate R. > But otherwise, I do not see a good reason for that restriction. > > In any case, that's a DIFFERENT task. [I cut : a very nice description] > * Finally, the above *really* suggests that we might want to have a domain > whose elements are bases of a given vector space. I think important to have the 3 primitives : basis, intBasis and sumBasis. (see above) Why not a new domain, if it's necessary... But I expect an easy call of this domain for the easy exercices of linalg. It's the following aim for my use of axiom. > And it does have structure: > > +: (%, %) -> % -- sum of two spaces > *: (%, %) -> % -- intersection of two spaces > 0: () -> % -- zero space I don't understand why aldor is necessary. > Francois, could you please write a testcase for the functions, in the form > > testcase "columnSpace" > assertEquals("columnSpace nicematrix", "result") > assertEquals("columnSpace anothernicematrix", "anotheresult") No problem I'll go to find examples. We can't test the equality of 2 basis, must I'll play with rank. My axiom doesn't know testcase and assertEquals -> )what op testcase There are no operations containing those patterns -> )what op assertEquals There are no operations containing those patterns I'm going to lunch, and I have course (13h-16h) this afternoon. F. ------------------------------------------------------------------------- This SF.net email is sponsored by: Microsoft Defy all challenges. Microsoft(R) Visual Studio 2008. http://clk.atdmt.com/MRT/go/vse0120000070mrt/direct/01/ _______________________________________________ open-axiom-devel mailing list open-axiom-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/open-axiom-devel