Hongyi Zhao on Thu, 05 Jan 2023 06:02:05 +0100 |
[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]
Re: Solve an non-homogeneous system of equations mod Z. |
On Thu, Jan 5, 2023 at 5:18 AM Bill Allombert <Bill.Allombert@math.u-bordeaux.fr> wrote: > > On Mon, Jan 02, 2023 at 11:28:25AM +0800, Hongyi Zhao wrote: > > > > I want to find a common set of solutions, a.k.a., x, for the above > > > > matrices and their corresponding vectors, which satisfy the following > > > > conditions: > > > > > > > > mat * x = vec (mod Z). \forall mat \in mats, and \forall vec \in > > > > vecs in the corresponding order. > > > > > > What is Z ? > > > > I mean the set of integers [1], which is often denoted by the > > \textbf{Z} or \mathbb{Z}. > > > > In my case, the actual meaning is that the mod 1 of each component of > > the vector vec, a.k.a., > > > > mat * x = vec (mod 1 for all components of the vector) > > So you mean (mod Z^n) where n is the dimension. > > The set of solutions is an affine lattice. Thank you for pointing this out. In my case, all the matrices are unimodular integral and the group generated by them is finite. Thus the set of solutions should be an affine unimodular lattice Λ, with its linear part, denoted by g, \in GL(d, Z) and its translation part, denoted by x, in Q^d. This is the orbit of a point x \in Q^d under translations by an unimodular integral lattice, a.k.a., the affine unimodular lattice Λ has the form Λ = g * Z^d + x, where g \in GL(d, Z) and x is well-defined up to translation by g * Z^d, that is, it can be viewed as an element of the d-torus Q^d / (g * Z^d). Due to my number theory foundation is very poor, if there are any problems in my above description, please point out or correct them. > You can embbed the affine space to a n+1 dimensional linear space and > compute the intersection of your affine lattices there. Thank you again for your wonderful tips. In fact, the motivation behind my question is as follows: I have two unimodular integral affine matrix groups and they each have two generators as shown below: ? gen1=[ [ 0, -1, 0, 2; -31, -31, -32, 2; 30, 31, 31, -61/16; 0, 0, 0, 1], [ -120, -109, -120, -15/4; -101, -90, -100, -25/8; 210, 189, 209, 13/2; 0, 0, 0, 1 ] ] %33 = [[0, -1, 0, 2; -31, -31, -32, 2; 30, 31, 31, -61/16; 0, 0, 0, 1], [-120, -109, -120, -15/4; -101, -90, -100, -25/8; 210, 189, 209, 13/2; 0, 0, 0, 1]] ? gen2=[ [ 131, 121, 132, 1/2; 101, 90, 100, 3/4; -221, -201, -221, -19/16; 0, 0, 0, 1 ], [ -101, -90, -100, 91/8; -131, -121, -132, 85/8; 221, 201, 221, -21; 0, 0, 0, 1 ] ] %34 = [[131, 121, 132, 1/2; 101, 90, 100, 3/4; -221, -201, -221, -19/16; 0, 0, 0, 1], [-101, -90, -100, 91/8; -131, -121, -132, 85/8; 221, 201, 221, -21; 0, 0, 0, 1]] My goal is to find the generators of the affine unimodular lattice, which serves as the solutions set of the conjugators between the above two groups, and if no such lattice exists, how can this fact be quickly determined? > If GAP has a function SolveInhomEquationsModZ, this will be probably easier > with GAP. Though GAP has the above function, but it was developed more than a decade ago and the implementation is not based on a strictly systematic lattice related number theory method. Therefore, it is impossible to determine the generators of the affine lattice through the solution set. > With PARI you can use matkerint and mathnf. I have tried as follows, but still not sure what the exact steps are for the problem discussed here: The matrices used here are: mat1 = [ -210, -210, -220; -221, -222, -232; 410, 411, 430 ] mat2 = [-132, -121, -132; -120, -110, -120; 240, 220, 240] The corresponding vectors are: vec1 = [ -27, -28, 105/2 ] vec2 = [ -47/8, -29/4, 25/2 ]] So I try to embed the affine space in an n+1 dimensional linear space and then compute the intersection of your affine lattices as follows: ? m1=[ -210, -210, -220, -27; -221, -222, -232, -28; 410, 411, 430, 105/2; 0, 0, 0, 1 ] %25 = [-210 -210 -220 -27] [-221 -222 -232 -28] [ 410 411 430 105/2] [ 0 0 0 1] ? m2=[-132, -121, -132, -47/8; -120, -110, -120, -29/4; 240, 220, 240, 25/2; 0, 0, 0,1] %23 = [-132 -121 -132 -47/8] [-120 -110 -120 -29/4] [ 240 220 240 25/2] [ 0 0 0 1] ? mathnf( matkerint(m1) ) %26 = [-12] [-10] [ 21] [ 0] ? mathnf( matkerint(m2) ) %27 = [-11 -1] [ 12 0] [ 0 1] [ 0 0] So far, as you can see, I still haven't seen any clues and information related to the final solution set. > Cheers, > Bill Best, Zhao