2016-05-25 3 views
1

d1d2を整数の行列とする。Z。どのように私はセージでグループの指数ker d1/im d2を計算できますか?セージのアベル・グループ商

これまでのところ、私は次のようにカーネルと画像の基礎を計算することができました:出力を与える

M24 = MatrixSpace(IntegerRing(),2,4) 
d1 = M24([-1,1, 1,-1, -1,1, 1,-1]) 
kerd1 = d1.right_kernel().basis() 

M43 = MatrixSpace(IntegerRing(),4,3) 
d2 = M43([1,1,-1, 1,-1,-1, 1,-1,1, 1,1,1]) 
imd2 = d2.column_space().basis() 

kerd1 = [ 
    (1, 0, 0, -1), 
    (0, 1, 0, 1), 
    (0, 0, 1, 1) 
] 

imd2 = [ 
    (1, 1, 1, 1), 
    (0, 2, 0, -2), 
    (0, 0, 2, 2) 
] 

私はこのような商を計算してみました:

Z4.<a,b,c,d> = AbelianGroup(4, [0,0,0,0]) 
G = Z4.subgroup([a/d, b*d, c*d]) 
H = Z4.subgroup([a*b*c*d, b^2/d^2, c^2*d^2]) 
G.quotient(H) 

しかし、私はNotImplementedErrorを得ました。

答えて

0

私はこれを行うには、2つの方法が見つかりました:

d1 = matrix(ZZ,4,2, [-1,1, 1,-1, -1,1, 1,-1]).transpose() 
d2 = matrix(ZZ,4,3, [1,1,-1, 1,-1,-1, 1,-1,1, 1,1,1]) 
(d1.right_kernel()/(d2.column_space())).invariants() 
# OUTPUT: (2, 2) 

ChainComplex([d2, d1]).homology()[1] 
# OUTPUT: C2 x C2 
関連する問題