Comma basis: Difference between revisions
Cmloegcmluin (talk | contribs) m prefer nullspace to null-space |
m Clarify and - here-links |
||
(7 intermediate revisions by 4 users not shown) | |||
Line 1: | Line 1: | ||
{{Beginner|Dual list}} | |||
A '''comma basis''' is a [[basis]] for the {{w|Kernel (linear algebra)|nullspace}} (sometimes also called the "kernel") of a [[regular temperament|temperament]]. It consists of ''n'' {{w|linearly independent}} vectors, where ''n'' is the [[nullity]], each one representing a [[comma]] that is made to [[vanish]]. | |||
Linear independence means that no comma can be found as the sum of any multiples of the other commas. For example, consider the set of three commas 81/80, 126/125, and 225/224. As vectors those are {{vector|-4 4 -1 0}}, {{vector|1 2 -3 1}}, and {{vector|-5 2 2 -1}}. Notice that the third comma is actually the difference between the other two; {{nowrap|{{vector|-4 4 -1 0}} − {{vector|1 2 -3 1}} {{=}} {{vector|-5 2 2 -1}}}}, or as cents, {{nowrap|21.51{{c}} − 13.80{{c}} {{=}} 7.71{{c}}}}. So, if two of these three commas are ever made to vanish (mapped to 0{{c}}), then the third one necessarily is also made to vanish. Therefore, we only need to pick two of these commas to put in our comma basis; the third one would be implied. | |||
Linear independence means that no comma can be found as the sum of any multiples of the other commas. For example, consider the set of three commas 81/80, 126/125, and 225/224. As vectors those are {{vector|-4 4 -1 0}}, {{vector|1 2 -3 1}}, and {{vector|-5 2 2 -1}}. Notice that the third comma is actually the difference between the other two; {{vector|-4 4 -1 0}} | |||
The comma basis can be thought of either as a list of vectors or as a matrix formed by putting these vectors (as columns) together. Besides, it is often presented in terms of ratios for convenience. Various [[Normal lists #Normal interval lists|normal forms]] have been developed as identifiers of temperaments. | The comma basis can be thought of either as a list of vectors or as a matrix formed by putting these vectors (as columns) together. Besides, it is often presented in terms of ratios for convenience. Various [[Normal lists #Normal interval lists|normal forms]] have been developed as identifiers of temperaments. | ||
== With respect to the mapping == | == With respect to the mapping == | ||
The comma basis is considered the dual of the temperament's [[mapping]] matrix. Temperaments may be identified by either their mapping or comma basis. | The comma basis is considered the dual of the temperament's [[mapping]] matrix. Temperaments may be identified by either their mapping or comma basis. | ||
Functions for finding the nullspace of a matrix are readily available in many math libraries. All you need to do to get a comma basis for a mapping is to find the nullspace. To learn | Functions for finding the nullspace of a matrix are readily available in many math libraries. All you need to do to get a comma basis for a mapping is to find the nullspace. To learn about finding the nullspace by hand, see [[Dave Keenan & Douglas Blumeyer's guide to RTT/Exploring temperaments #Nullspace]]. | ||
To reverse the nullspace operation, that is, to find a mapping from a comma basis, you can also use the nullspace operation; the relationship between a matrix and its nullspace essentially works both ways. | To reverse the nullspace operation, that is, to find a mapping from a comma basis, you can also use the nullspace operation; the relationship between a matrix and its nullspace essentially works both ways. | ||
Line 17: | Line 15: | ||
Some math libraries, such as [https://www.sagemath.org/ Sage], provide functions for both directions; in Sage, to go from a mapping to a comma basis, use <code>left_kernel()</code>, and to go from a comma basis to a mapping, use <code>right_kernel()</code>. In other math libraries, such as [https://www.wolfram.com/language/ Wolfram Language], the nullspace operation <code>NullSpace[]</code> is primarily designed to work for mappings, and so if you want correct results, you must transform the basis for the nullspace into a mapping-like form, perform the nullspace operation, and then undo the initial transformation. | Some math libraries, such as [https://www.sagemath.org/ Sage], provide functions for both directions; in Sage, to go from a mapping to a comma basis, use <code>left_kernel()</code>, and to go from a comma basis to a mapping, use <code>right_kernel()</code>. In other math libraries, such as [https://www.wolfram.com/language/ Wolfram Language], the nullspace operation <code>NullSpace[]</code> is primarily designed to work for mappings, and so if you want correct results, you must transform the basis for the nullspace into a mapping-like form, perform the nullspace operation, and then undo the initial transformation. | ||
This transformation that relates the two directions of nullspace operations is called the | This transformation that relates the two directions of nullspace operations is called the {{w|transpose}}. It works by reflecting a matrix's values across its ''main'' diagonal, i.e. either the diagonal running from the top-left corner toward the bottom-right, or the diagonal running from the bottom-right corner toward the top-left. | ||
However, transposing a comma basis, using a mapping-style nullspace function, then transposing again, will return a mapping in a strange form, with all of its zeros in the top-right corner, rather than the bottom-left as is preferred. The solution for this problem is to use the anti-transpose instead of the transpose. This is the same you reflect the matrix's entries across its ''anti-''diagonal (starting from either the top-right or bottom-left corner). | However, transposing a comma basis, using a mapping-style nullspace function, then transposing again, will return a mapping in a strange form, with all of its zeros in the top-right corner, rather than the bottom-left as is preferred. The solution for this problem is to use the anti-transpose instead of the transpose. This is the same you reflect the matrix's entries across its ''anti-''diagonal (starting from either the top-right or bottom-left corner). |