[GAP Forum] [SPAM] Re: Coefficients in GAP

李建荣 lijr at lzu.edu.cn
Mon Jan 7 03:08:30 GMT 2013


Dear Max,

Thank you very much for your help. I will try again.

With best wishes,
Jianrong.


> -----原始邮件-----
> 发件人: "Max Horn" <max at quendi.de>
> 发送时间: 2013年1月7日 星期一
> 收件人: "李建荣" <lijr at lzu.edu.cn>
> 抄送: 
> 主题: [SPAM] Re: [GAP Forum] Coefficients in GAP
> 
> Dear Jianrong,
> 
> 
> On 06.01.2013, at 14:52, 李建荣 wrote:
> 
> > Dear Forum,
> > 
> > I would like to compute coefficients of a vector in a vector space V with respect to some basis B.
> > The command in GAP is Coefficients(B, v); 
> > 
> > If B is given by a list, then it seems that it doesn't work.
> 
> Indeed, because as the documentation of Coefficients states, B must be a basis -- and a "basis" here is a special GAP object, which is more than just a list of basis vectors.
> 
> One of the reasons for this is that for an arbitrary list of vectors, such as yours, it is not at all clear whether it actually forms a basis of the space spanned by those vectors, i.e. if they are linearly independent.
> 
> 
> > For example, Coefficients([Basis(B)[1], Basis(B)[2], Basis(B)[3], Basis(B)[4], Basis(B)[5], Basis(B)[6], Basis(B)[7], Basis(B)[8], Basis(B)[9], Basis(A)[2]], Basis(B)[4]*Basis(A)[3]) will have errors. Here B is a subspace of the vector space A. A consists of matrices. The codes are in the end of the email. How should I correct  Coefficients([Basis(B)[1], Basis(B)[2], Basis(B)[3], Basis(B)[4], Basis(B)[5], Basis(B)[6], Basis(B)[7], Basis(B)[8], Basis(B)[9], Basis(A)[2]], Basis(B)[4]*Basis(A)[3])? Thank you very much.
> 
> This look as if you want to form a new basis by taking a subset of the existing Basis(B). Here is a sketch of how this could look like.
> 
> # Set F to your base field, e.g. GF(3^2)
> F := ...;
> 
> # Take first 9 basis vectors of B plus second basis vector of A
> vecs := Concatenation( Basis(B){[1..9]}, Basis(A){[2]} );
> 
> # Compute a basis of the spanned vector space:
> bas := ImmutableBasis( MutableBasis( F, vecs ) );
> 
> # Optionally, check whether "vecs" really formed a basis.
> if Length(vecs) <> Length(bas) then
>   Error("vectors do not form a basis"
> fi;
> 
> # Finally, attempt to rewrite a matrix using this basis
> Coefficients( bas, Basis(B)[4]*Basis(A)[3] )
> 
> 
> But looking at your example code, and considering your previous question, it seems that perhaps all you want to do is to check whether some vector is contained in the span of some other vectors. Moreover, your code seems to contain a mistake (it sets number:=1 inside the loop over k, but tests it only after that loop; hence, only the result of the last loop iteration has any effect). Supposing all this, you could try something like the following (here I assumed you wanted to set and test "number" outside the k-loop; if the correct thing for you problem is to check "number" on each iteration of that loop, of course you'll have to move things around accordingly):
> 
> for i in complement do
>   vecs := Concatenation( Basis(B){[1..9]}, Basis(A){[i]} );
>   sub := VectorSpace( F, vecs );
>   number := true;
>   for k in [1..9] do
>     for l in vecs do
>       if not Basis(B)[k] * l in sub then
>         number:=false;
>       fi;
>     od;
>   od;
>   if number=true then Add(new_indices_in_LminusOne, i); fi;
> od;
> 
> 
> The code can actually be simplified a lot more, e.g. by using ForAny or ForAll; and more so if, for example, your space B is actually 9-dimensional. 
> 
> 
> Hope that helps,
> Max
> 
> 
> > 
> > With best wishes,
> > Jianrong.
> > 
> > 
> > 
> > for i in complement do
> > for k in [1..9] do
> > number:=1;
> > for l in [Basis(B)[1], Basis(B)[2], Basis(B)[3], Basis(B)[4], Basis(B)[5], Basis(B)[6], Basis(B)[7], Basis(B)[8], Basis(B)[9], Basis(A)[i]] do
> > if Coefficients([Basis(B)[1], Basis(B)[2], Basis(B)[3], Basis(B)[4], Basis(B)[5], Basis(B)[6], Basis(B)[7], Basis(B)[8], Basis(B)[9], Basis(A)[i]], Basis(B)[k]*l)=fail then number:=0; fi;
> > od;
> > od;
> > if number=1 then Add(new_indices_in_LminusOne, i); fi;
> > od;
> > 
> > _______________________________________________
> > Forum mailing list
> > Forum at mail.gap-system.org
> > http://mail.gap-system.org/mailman/listinfo/forum
> > 
> 




More information about the Forum mailing list