Generator preimage: Difference between revisions
Cmloegcmluin (talk | contribs) →Example: math format and terminology improve |
Cmloegcmluin (talk | contribs) →Finding the transversal generators: Wolfram Language implementation |
||
| Line 207: | Line 207: | ||
So indeed that gives the generator for meantone, 4/3. We're done! | So indeed that gives the generator for meantone, 4/3. We're done! | ||
== Wolfram Language implementation == | |||
{{Databox|transversalGenerators[]| | |||
<syntaxhighlight lang="mathematica"> | |||
transversalGenerator[u_, v_, c_] := Module[{base}, | |||
base = Transpose[columnHermiteDefactor[Join[{u}, Transpose[c]]]]; | |||
Drop[First[Take[hnf[Transpose[Join[{v}.base,base]]],1]],1] | |||
]; | |||
transversalGenerators[m_] := Module[{c}, | |||
c = nullSpaceBasis[m]; | |||
Transpose[MapThread[transversalGenerator[#1, #1, c]&, {Map[multByLcd,Transpose[PseudoInverse[m]]],m}]] | |||
]; | |||
transversalGenerators[{{1,2,4},{0,-1,-4}}] (* {{1,2},{0,-1},{0,0}} = 2/1 and 4/3 as expected *) | |||
</syntaxhighlight>}} | |||
[[Category:generator]] | [[Category:generator]] | ||
[[Category:theory]] | [[Category:theory]] | ||
[[Category:todo:reduce_mathslang]] | [[Category:todo:reduce_mathslang]] | ||