Comma basis: Difference between revisions
Cmloegcmluin (talk | contribs) →With respect to the mapping: correction re: transpose and anti-transpose |
+a little note and improve links |
||
| Line 5: | Line 5: | ||
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}} - {{vector|1 2 -3 1}} = {{vector|-5 2 2 -1}}, or as cents, 21.51¢ - 13.80¢ = 7.71¢. So, if two of these three commas are ever tempered out (mapped to 0¢), then the third one necessarily is also tempered out. 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}} - {{vector|1 2 -3 1}} = {{vector|-5 2 2 -1}}, or as cents, 21.51¢ - 13.80¢ = 7.71¢. So, if two of these three commas are ever tempered out (mapped to 0¢), then the third one necessarily is also tempered out. Therefore, we only need to pick two of these commas to put in our comma basis; the third one would be implied. | ||
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. | 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 | 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 null-space 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 null-space. To learn more about finding the null-space, see [[ | Functions for finding the null-space 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 null-space. To learn more about finding the null-space, see [[Douglas Blumeyer's RTT How-To #The other side of duality]]. | ||
To reverse the null-space operation, that is, to find a mapping from a comma basis, you can also use the null-space operation; the relationship between a matrix and its null-space essentially works both ways. | To reverse the null-space operation, that is, to find a mapping from a comma basis, you can also use the null-space operation; the relationship between a matrix and its null-space essentially works both ways. | ||
| Line 17: | Line 17: | ||
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 null-space 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 null-space into a mapping-like form, perform the null-space 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 null-space 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 null-space into a mapping-like form, perform the null-space operation, and then undo the initial transformation. | ||
This transformation that relates the two directions of null-space operations is called the | This transformation that relates the two directions of null-space operations is called the [[wikipedia: Transpose|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 null-space 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 | However, transposing a comma basis, using a mapping-style null-space 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). | ||
You can remember this because most mappings and comma bases have zeroes in the bottom-left corner, and you want to keep them there; some kind of transpose is necessary to convert the constituent comma vectors columns of the comma basis into rows as if they were constituent generator maps (rows) of a mapping, but a normal transpose of the comma basis would flip its zeroes into the top-right corner instead. | You can remember this because most mappings and comma bases have zeroes in the bottom-left corner, and you want to keep them there; some kind of transpose is necessary to convert the constituent comma vectors columns of the comma basis into rows as if they were constituent generator maps (rows) of a mapping, but a normal transpose of the comma basis would flip its zeroes into the top-right corner instead. | ||