Try mat.kernel_on(V).   

Also, if v is a vector in the ambient space which happens to lie in V then 
V.coordinates(v) will give its coordinates w.r.t. the basis of V.

John Cremona

On Monday, December 3, 2012 1:38:38 AM UTC, Andrew Mathas wrote:
>
> Hi All,
>
> I have been playing with some code where I want to find a submodule of a 
> module V which is annihilated by a bunch of maps. What I want to do 
> something like the following:
>
> V= some free submodule of rank v inside a space of rank d\ge v.
> mat=[[0 for col in range(w)] for row in range(v)]  # fairly sparse matrix 
> which describes the map f on bases of V and W
> ...compute non-zero entries of the matrix ``mat``
> V = V.intersection( matrix(mat).kernel() )
>
> where v=dim V,  w=dim W where f is a map from V to W. Of course, this 
> doesn't quite work because matrix(mat).kernel() returns a submodule of ZZ^v 
> with respect to its standard basis whereas the space V has a very different 
> basis in general. To get around this I found myself writing
>
> kernel=V.submodule_with_basis([V.linear_combination_of_basis(b.list())  
> for b in matrix(pmat).kernel().basis()])
> V=V.intersection(kernel)
>
> This strikes me as being a very convoluted way of writing something is 
> presumably quite common: writing the standard basis elements as linear 
> combinations of another basis. My question is: is there a better way to 
> do this?
>
> For a little while, I tried defining W=FreeModule(ZZ,w) and then 
> constructing the map f explicitly as a homomorphism from V to W. Doing it 
> this way does make f.kernel() into a submodule of V, but this approach just 
> seems to create a lot of extra overhead with very little benefit as I 
> essentially still had to construct the matrix ``mat`` above and used it to 
> define ``f`` with respect to the bases of ``V`` and ``W``. In fact, all 
> this really did was shift my problem above of writing the basis of the 
> kernel in terms of the basis of V to the problem of writing the images of f 
> in terms of the standard basis of W. (Even though I imagine that this 
> second approach is much slower I really should have  checked by doing some 
> profiling before rewriting as above, but I didn't...)
>
> Any thoughts?
>
> Cheers,
> Andrew
>
>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"sage-support" group.
To post to this group, send email to sage-support@googlegroups.com.
To unsubscribe from this group, send email to 
sage-support+unsubscr...@googlegroups.com.
Visit this group at http://groups.google.com/group/sage-support?hl=en.


Reply via email to