Generator preimage: Difference between revisions
Cmloegcmluin (talk | contribs) →Finding the transversal generators: remove "preference" so that the instruction matches the next instruction |
Cmloegcmluin (talk | contribs) →Finding the transversal generators: work through example of computing transversal generators |
||
| Line 22: | Line 22: | ||
We can find transveral generators for V by the following procedure: | We can find transveral generators for V by the following procedure: | ||
<ul><li>Take the transpose of the [[Tenney-Euclidean_Tuning#The pseudoinverse|pseudoinverse]] of V, call that U</li><li>Find a basis for the commas of V</li><li>For each row U[i] of U, clear denominators and append the monzos of the comma basis for V</li><li>[[Saturation|Saturate]] the result to a list of monzos, call that S</li><li>Apply the ith val V[i] (dot product) to each element of S</li><li>Insert V[i].S[j] in front of the elements of S[j] as the first element, obtaining the jth element T[j] of a modified list T</li><li>Hermite reduce the modified list T, take the first row, and remove the first element (which should be a 1.)</li><li>Consider the rest to be a monzo and convert it to a rational number</li><li>This is a corresponding transveral generator to the ith val V[i] of V; it may be reduced to an equivalent generator of minimal [[Tenney_Height|Tenney height]] by multiplying by the commas of V</li></ul> [[Category:generator]] | <ul><li>Take the transpose of the [[Tenney-Euclidean_Tuning#The pseudoinverse|pseudoinverse]] of V, call that U</li><li>Find a basis for the commas of V</li><li>For each row U[i] of U, clear denominators and append the monzos of the comma basis for V</li><li>[[Saturation|Saturate]] the result to a list of monzos, call that S</li><li>Apply the ith val V[i] (dot product) to each element of S</li><li>Insert V[i].S[j] in front of the elements of S[j] as the first element, obtaining the jth element T[j] of a modified list T</li><li>Hermite reduce the modified list T, take the first row, and remove the first element (which should be a 1.)</li><li>Consider the rest to be a monzo and convert it to a rational number</li><li>This is a corresponding transveral generator to the ith val V[i] of V; it may be reduced to an equivalent generator of minimal [[Tenney_Height|Tenney height]] by multiplying by the commas of V</li></ul> | ||
== Example == | |||
Note: I've followed the algorithm as described above. But clearly I am transposing things here way more often than is necessary than if the algorithm was superficially revised. | |||
For 5-limit meantone, <span><math>V</math></span> is | |||
<math> | |||
\begin{bmatrix} | |||
1 & 2 & 4 \\ | |||
0 & -1 & -4 \\ | |||
\end{bmatrix} | |||
</math> | |||
The pseudoinverse <span><math>V⁺</math></span> is | |||
<math> | |||
\frac{1}{33} | |||
\begin{bmatrix} | |||
17 & 18 \\ | |||
16 & 15 \\ | |||
-4 & -12 \\ | |||
\end{bmatrix} | |||
</math> | |||
And that transposed is <span><math>(V⁺)ᵀ</math></span>, which we'll call <span><math>U</math></span>: | |||
<math> | |||
\frac{1}{33} | |||
\begin{bmatrix} | |||
17 & 16 & -4 \\ | |||
18 & 15 & -12 \\ | |||
\end{bmatrix} | |||
</math> | |||
And here's the comma basis for V: | |||
<math> | |||
\begin{bmatrix} | |||
-4 \\ | |||
4 \\ | |||
-1 \\ | |||
\end{bmatrix} | |||
</math> | |||
Beginning with <span><math>i = 1</math></span>, we'll create a matrix out of <span><math>U[i]</math></span> with denominators cleared and the comma basis appended (transposed so each comma is a row): | |||
<math> | |||
\begin{bmatrix} | |||
17 & 16 & -4 \\ | |||
-4 & 4 & -1 \\ | |||
\end{bmatrix} | |||
</math> | |||
Saturate (eliminate common factors), and call this <span><math>S</math></span>: | |||
<math> | |||
\begin{bmatrix} | |||
1 & 32 & -8 \\ | |||
0 & 4 & -1 \\ | |||
\end{bmatrix} | |||
</math> | |||
Now take the dot product of <span><math>V[1]</math></span> to each element of <span><math>S</math></span>, or in other words, left multiply <span><math>Sᵀ</math></span> by <span><math>V[1]</math></span>: | |||
<math> | |||
\begin{bmatrix} | |||
1 & 2 & 4 \\ | |||
\end{bmatrix} | |||
\begin{bmatrix} | |||
1 & 0 \\ | |||
32 & 4 \\ | |||
-8 & -1 \\ | |||
\end{bmatrix} = | |||
\begin{bmatrix} | |||
33 & 4 \\ | |||
\end{bmatrix} | |||
</math> | |||
Now prepend that result, transposed, to <span><math>S</math></span>: | |||
<math> | |||
\begin{bmatrix} | |||
33 & 1 & 32 & -8 \\ | |||
4 & 0 & 4 & -1 \\ | |||
\end{bmatrix} | |||
</math> | |||
Take the Hermite Normal Form: | |||
<math> | |||
\begin{bmatrix} | |||
1 & 1 & 0 & 0 \\ | |||
0 & 4 & -4 & 1 \\ | |||
\end{bmatrix} | |||
</math> | |||
Take the first row: | |||
<math> | |||
\begin{bmatrix} | |||
1 & 1 & 0 & 0 \\ | |||
\end{bmatrix} | |||
</math> | |||
Remove the first element (which should and indeed is a 1): | |||
<math> | |||
\begin{bmatrix} | |||
1 & 0 & 0 \\ | |||
\end{bmatrix} | |||
</math> | |||
So indeed that gives the period for meantone, 2/1. | |||
Let's repeat the latter steps but now with <span><math>i = 2</math></span>. Here's <span><math>U[2]</math></span> with denominators cleared and the comma basis appended: | |||
<math> | |||
\begin{bmatrix} | |||
18 & 15 & -12 \\ | |||
-4 & 4 & -1 \\ | |||
\end{bmatrix} | |||
</math> | |||
Saturate, to get our new <span><math>S</math></span>: | |||
<math> | |||
\begin{bmatrix} | |||
2 & 31 & -16 \\ | |||
0 & 2 & -1 \\ | |||
\end{bmatrix} | |||
</math> | |||
Now take the dot product of <span><math>V[2]</math></span> to each element of <span><math>S</math></span>, or in other words, left multiply <span><math>Sᵀ</math></span> by <span><math>V[2]</math></span>: | |||
<math> | |||
\begin{bmatrix} | |||
0 & -1 & -4 \\ | |||
\end{bmatrix} | |||
\begin{bmatrix} | |||
2 & 0 \\ | |||
31 & 2 \\ | |||
-16 & -1 \\ | |||
\end{bmatrix} = | |||
\begin{bmatrix} | |||
33 & 2 \\ | |||
\end{bmatrix} | |||
</math> | |||
Now prepend that result, transposed, to <span><math>S</math></span>: | |||
<math> | |||
\begin{bmatrix} | |||
33 & 2 & 31 & -16 \\ | |||
2 & 0 & 2 & -1 \\ | |||
\end{bmatrix} | |||
</math> | |||
Take the Hermite Normal Form: | |||
<math> | |||
\begin{bmatrix} | |||
1 & 2 & -1 & 0 \\ | |||
0 & 4 & -4 & 1 \\ | |||
\end{bmatrix} | |||
</math> | |||
Take the first row: | |||
<math> | |||
\begin{bmatrix} | |||
1 & 2 & -1 & 0 \\ | |||
\end{bmatrix} | |||
</math> | |||
Remove the first element (which should and indeed is a 1): | |||
<math> | |||
\begin{bmatrix} | |||
2 & -1 & 0 \\ | |||
\end{bmatrix} | |||
</math> | |||
So indeed that gives the generator for meantone, 4/3. We're done! | |||
[[Category:generator]] | |||
[[Category:theory]] | [[Category:theory]] | ||
[[Category:todo:reduce_mathslang]] | [[Category:todo:reduce_mathslang]] | ||