# orthogonalization and orthonormalization of vectors under integer mod

how can I get first orthogonal(Gram–Schmidt process) and then orthonormal of basis vector list under integer mod.

l=[(1,2,3),(1,5,6)]
basis=[vector(GF(29),i) for i in l]
print(basis)
#[(1,2,3),(1,5,6)]

edit retag close merge delete

Sort by » oldest newest most voted

Here is a partial answer : instead of putting your "basis" in a list, you should put it in a matrix, so that you could benefit from the methods available there.

sage: M = matrix(basis)
sage: M
[1 2 3]
[1 5 6]
sage: M.parent()
Full MatrixSpace of 2 by 3 dense matrices over Finite Field of size 29
sage: M.gram_schmidt()
AttributeError: 'sage.rings.finite_rings.integer_mod.IntegerMod_int' object has no attribute 'conjugate'


Unfortunately, to compute the Gram-Schmidt orthogonalization of M, Sage needs to find the conjugate of elements GF(29), which seems not defined (if you replace GF(29) with ZZ, everythin seems fine).

more

You can perform Gram–Schmidt over QQ and then change ring to GF(29):

M = Matrix( QQ, [(1,2,3),(1,5,6)] )
[ t.change_ring(GF(29)) for t in M.gram_schmidt() ]

more