Re: Help Providing a Module
- To: mathgroup at smc.vnet.net
- Subject: [mg39709] Re: [mg39696] Help Providing a Module
- From: BobHanlon at aol.com
- Date: Mon, 3 Mar 2003 04:25:47 -0500 (EST)
- Sender: owner-wri-mathgroup at wolfram.com
In a message dated 3/2/03 6:04:27 PM, flip at safebunch.com writes: > let me try to give some examples. > > Example 1. > > b = {-1, 2} > q = {{{-1, 1}, {3, 2}}} > > so we look at the "one" submatrix of q starting with {-1, 1}. > > Since the first value is -1 and that also belongs to b, we take the second > value of {-1, 1} which is 1 and take Mod[1, 2] = 1 > > So, the first value of the return vector is 1. > > Next we look at {3, 2}. But 3 is not an element of b, so we make that > element equal 0. > > Thus the return value is vects = {1, 0} > > Notice that the length of the return value is equal to the number of > submatrices in q (that is, one return vector) and that the number of > elements in the return vector is equal to the length of b (which is two). > > Example 2. > > Now, lets say > > b = {-1, 2, 3} > q = {{{-1, 1}, {3, 2}},{{-1, 2}, {2, 1}, {3, 4}}} > > So, we have two submatrices in q which means two return vectors from our > module. The length of each of these will be equal to the length of b = 3. > Thus, our return vector will be of the form {{x, x, x}, {x, x, x}} > > So we look at {{-1, 1}, {3, 2}}, starting with {-1, 1}. > > So, we look at -1 and it exists in b, so we take Mod[1, 2] = 1. The first > value is 1 > > Then, there is no 2 as a first element in {{-1, 1}, {3, 2}}, so we make > the second value is 0. > > Then we look at {3, 2}. 3 exists in b, so we take Mod[2, 2] = 0, thus the > third value is 0. > > Now we have {{1, 0 , 0}, {x, x, x}} and we move on to the next submatrix. > > So, for {{-1, 2}, {2, 1}, {3, 5}}} > > For {-1, 2}, the -1 is in b, so we take Mod[2, 2] = 0. > For {2, 1}, the 2 is in b so we take Mod[1, 2] = 1. > For {3, 2}, the 3 is in b so we take Mod[5, 2] = 1. > > So, we now have as {{x, x, x}, {x, x, x}} = {{1, 0 , 0}, {0 , 1, 1}}. > > Example 3. > > b = {-1, 2, 3, 61} > q = {{{-1, 1}, {3, 2}}, {{-1, 1}, {3, 7}, {61, 1}}, {{2, 2}, {61, 1}}} > > We start with length[q] = 3, length[b] = 4. Thus our return vector will > have the form {{x, x, x, x}, {x, x, x, x}, {x, x, x, x}}. > > We now look at: {{-1, 1}, {3, 2}} > > {-1, 1}: -1 is in b, so we have Mod[1, 2] = 1 > There is not 2 in the q submatrix so the second value is = 0 > {3, 2}: 3 is in b, so we have Mod[2, 2] = 0, so the third value = 0 > There is no 61, so the fourth value = 0. > > Thus far we have: {{1, 0, 0, 0}, {x, x, x, x}, {x, x, x, x}}. > > We now look at: {{-1, 1}, {3, 7}, {61, 1}} > > {-1, 1}: -1 is in b, so we have Mod[1, 2] = 1 > No 2: so the value = 0 > {3, 7}: 3 is in b, so we take Mod[7, 2] = 1 > {61, 1}: 61 is in b, so we take Mod[1, 2] = 1 > > Thus far we have: {{1, 0, 0, 0}, {1, 0 1, 1}, {x, x, x, x}}. On to the last > submatrix. > > We know look at: {{2, 2}, {61, 1}} > > No 1: so the value = 0 > {2, 2}: 2 exists in b, so we take Mod[2, 2] = 0 > No 3: so the value = 0 > {61, 1}: 61 is in b, so we take Mod[1, 2] = 1 > > Therefore, the return vector is: > > {{1, 0, 0, 0}, {1, 0 1, 1}, {0, 0, 0, 1}}. > > I believe this is what you described: vect[b_?VectorQ, q_List] := Outer[If[MemberQ[First /@ #1, #2], First[Cases[#1, {#2, x_}:> Mod[x, 2]]], 0]&, q, b, 1, 1]; b = {-1, 2}; q ={ {{-1, 1}, {3, 2}}}; vect[b, q] {{1,0}} b = {-1, 2, 3}; q = {{{-1, 1}, {3, 2}},{{-1, 2}, {2, 1}, {3, 4}}}; vect[b, q] {{1,0,0},{0,1,0}} b = {-1, 2, 3, 61}; q = {{{-1, 1}, {3, 2}}, {{-1, 1}, {3, 7}, {61, 1}}, {{2, 2}, {61, 1}}}; vect[b, q] {{1,0,0,0},{1,0,1,1},{0,0,0,1}} Bob Hanlon