Subgroup monzos and vals: Difference between revisions

Adopt the convention that monzos are column vectors; recategorize
m - breadcrumbs (this isn't a subpage).
 
(15 intermediate revisions by 4 users not shown)
Line 1: Line 1:
Given a [[just intonation subgroup]], we can find a canonical form for its [[generator]]s by means of the [[Normal lists #Normal interval list|normal interval list]] which may be computed from any finite set of generators. In the case of the full ''p''-limit group for any prime ''p'', this consists of the primes from 2 to ''p'' in ascending order. This is precisely the ordered list used to define [[Vals and tuning space|vals]] and [[Monzos and interval space|monzos]], and we may generalize the notation simply by using any normal interval list in place of the ascending primes to ''p''. This generalization we may call the '''subgroup monzos''' and '''subgroup vals''', or '''smonzos''' and '''svals''' for short.
A '''subgroup monzo''' is a [[monzo]] whose elements refer to powers of the basis elements of a [[JI subgroup]] (specified rationals such as 2, 3, 35, and 13/11 which are combined to form the set of intervals in a [[subgroup]]), rather than strictly to ordered [[prime interval|primes]]. For cases where the basis elements are all prime numbers, a subgroup monzo can be seen as "abbreviating" entries from a standard monzo: for example, the monzo {{monzo| 0 0 -1 0 0 1 }} (13/5) may be abbreviated to the subgroup monzo 5.13 {{monzo| -1 1 }}. However, subgroup monzos can refer to intervals in subgroups whose basis elements are not primes, for example 2.3.13/5 {{monzo| 1 -1 1 }} for 26/15. In that case, conversion to and from a subgroup monzo is a little more complicated, and is covered in the next section.


For example, consider the subgroup generated by the [[The Archipelago|barbados triad]], 1-13/10-3/2-2. The normal interval list for [13/10, 3/2, 2] is [2, 3, 13/5], and we may use these just like the primes [2, 3, 5] of 5-limit just intonation. We may convert intervals in the subgroup into smonzos by the following procedure: form the matrix ''M'' with columns consisting of the monzos for 2, 3, and 13/10. Now take the [[pseudoinverse]] of ''M'', ''M''<sup>+</sup>. If '''u''' is a monzo for an interval in the subgroup, then ''M''<sup>+</sup>'''u''' gives the corresponding smonzo. For instance, the monzo for 676/675 is {{monzo| 2 -3 2 0 0 2 }}, and left-multiplying this by ''M''<sup>+</sup> gives the smonzo {{monzo| 2 -3 2 }}. We may check this is the correct smonzo from 2<sup>2</sup> 3<sup>-3</sup> (13/5)<sup>2</sup>, which is 676/675 as desired.  
A '''subgroup val''' is like a standard [[val]], but the entries are the [[mapping]]s of subgroup basis elements rather than strictly of primes (and can be derived from a standard val by applying the val to the basis intervals). Since converting to a subgroup val loses information, there is no clear way to convert a subgroup val back to a standard val.
 
For example, the subgroup val 2.3.7 {{val| 5 8 14 }} tells you that prime 2 is mapped to 5 steps, prime 3 is mapped to 8 steps, and prime 7 is mapped to 14 steps, without specifying a mapping for 5.
 
For short, a subgroup monzo may be referred to as an '''smonzo''', and a subgroup val may be referred to as an '''sval'''.
 
== Conversion ==
If '''m'''<sub>''G''</sub> is an smonzo of the subgroup ''G'', and if ''S'' is a [[subgroup basis matrix]] whose columns form a basis for the subgroup ''G'', then the corresponding monzo '''m''' is given by
 
$$\vec m = S\vec m_G$$
 
Conversely, if '''m''' is a monzo for an interval in the subgroup, then we can take the [[pseudoinverse]] of ''S'', ''S''<sup>+</sup>, and the corresponding smonzo is given by
 
$$\vec m_G = S^+ \vec m$$
 
For example, consider the subgroup generated by the [[The Archipelago|barbados triad]], 1–13/10–3/2–2. The normal interval list for [13/10, 3/2, 2] is [2, 3, 13/5], and we may use these just like the primes [2, 3, 5] of 5-limit just intonation. We may convert intervals in the subgroup into smonzos by the following procedure: form the matrix ''S'' with columns consisting of the monzos for 2, 3, and 13/10. Now the monzo for 676/675 is {{monzo| 2 -3 2 0 0 2 }}, and left-multiplying this by ''S''<sup>+</sup> gives the smonzo {{monzo| 2 -3 2 }}. We may check this is the correct smonzo from 2<sup>2</sup> 3<sup>-3</sup> (13/5)<sup>2</sup>, which is 676/675 as desired.
 
Here is a tutorial that goes through the steps if you need to calculate them by hand.
 
{{Databox|Tutorial|
Say we want to convert the subgroup monzo 2.3.13/5 {{monzo| 1 -1 1 }} to a standard monzo, look at the monzo for each basis element of the subgroup monzo:
 
2 {{=}} {{monzo| 1 0 0 0 0 0 }}
 
3 {{=}} {{monzo| 0 1 0 0 0 0 }}
 
13/5 {{=}} {{monzo| 0 0 -1 0 0 1 }}
 
Now, we take each of these monzos and multiply each of the entries by the corresponding entry in the subgroup monzo.
 
{{monzo| 1 0 0 0 0 0 }} × 1 {{=}} {{monzo| 1 0 0 0 0 0 }}
 
{{monzo| 0 1 0 0 0 0 }} × (-1) {{=}} {{monzo| 0 -1 0 0 0 0 }}
 
{{monzo| 0 0 -1 0 0 1 }} × 1 {{=}} {{monzo| 0 0 -1 0 0 1 }}
 
Now, we add all the entries together vertically, to get:
 
26/15 {{=}} {{monzo| 1 -1 -1 0 0 1 }}.
 
To go back from {{monzo| 1 -1 -1 0 0 1 }} to our subgroup monzo, the most reasonable option is to repeatedly subtract and add the monzos for our subgroup basis elements until we reach the unison {{monzo| 0 0 0 0 0 0 }}.
 
{{monzo| 1 -1 -1 0 0 1 }} - {{monzo| 0 0 -1 0 0 1 }} + {{monzo| 0 1 0 0 0 0 }} - {{monzo| 1 0 0 0 0 0 }} {{=}} {{monzo| 0 0 0 0 0 0 }}
 
If we keep track of how many times we subtract each basis monzo (negative for adding it), it is 1 for 2, -1 for 3, and 1 for 13/5. Thus, we re-derive our subgroup monzo {{monzo| 1 -1 1 }}.
}}
 
=== In elementary math ===
An elementary way to convert between standard monzos and subgroup monzos is to evaluate the monzo as a rational number, then start factoring out either primes or subgroup basis elements. To convert 2.3.13/5 {{monzo| 1 -1 1 }} to a standard monzo, we first look at the interval itself, which is 26/15. You can see that there is {{nowrap| 2 × 13 }} on the top, and then {{nowrap| 3 × 5 }} on the bottom, and so the correct monzo is {{monzo| 1 -1 -1 0 0 1 }}.
 
To convert back, knowing the subgroup 2.3.13/5, we evaluate this monzo as a fraction (26/15). Recognizing the factor of 13/5 is a little tricky, but you can rearrange the expression as (26/5)/3 to make it more visible. Once you factor it out you have {{nowrap| 13/5 × 2 }} on top, and 3 on the bottom, which can be used to write the subgroup monzo {{monzo| 1 -1 1 }}.


[[Category:Subgroup]]
[[Category:Subgroup]]
[[Category:Val]]
[[Category:Val]]
[[Category:Monzo]]
[[Category:Monzo]]
{{Todo| reduce mathslang }}