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]]