Module:Temperament data: Difference between revisions
CompactStar (talk | contribs) No edit summary |
CompactStar (talk | contribs) No edit summary |
||
| Line 138: | Line 138: | ||
local function unreduced_mapping_from_basis(comma_basis) | local function unreduced_mapping_from_basis(comma_basis) | ||
return antitranspose(nullspace(antitranspose(comma_basis))) | return antitranspose(nullspace(antitranspose(comma_basis))) | ||
end | |||
local function get_reduced_mapping(comma_basis, preimage) | |||
a = pseudoinv(matmul(unreduced_mapping_from_basis(comma_basis), preimage)) | |||
for i = 1, #a do | |||
for j = 1, #a[1] do | |||
a[i][j] = math.floor(a[i][j] + 0.5) -- round each entry (they are not exact integers) | |||
end | |||
end | |||
return a | |||
end | end | ||
| Line 166: | Line 176: | ||
return matmul(get_te_tuning_map(subgroup, comma_basis), preimage) | return matmul(get_te_tuning_map(subgroup, comma_basis), preimage) | ||
end | end | ||
local function get_pote_generator(subgroup, comma_basis, preimage) | local function get_pote_generator(subgroup, comma_basis, preimage) | ||
| Line 172: | Line 183: | ||
period = period * (subgroup[i]^preimage[i][1]) | period = period * (subgroup[i]^preimage[i][1]) | ||
end | end | ||
local te =get_te_generator(subgroup, comma_basis, preimage) | local te = get_te_generator(subgroup, comma_basis, preimage) | ||
local stretch_factor = te[1][1] * math.log(2) / math.log(period) | local stretch_factor = te[1][1] * math.log(2) / math.log(period) | ||
return scalarmatmul(te, 1/stretch_factor) | return scalarmatmul(te, 1/stretch_factor) | ||
end | end | ||
-- Parsing/display functions | -- Parsing/display functions | ||
| Line 253: | Line 266: | ||
end | end | ||
generators = rat_list_to_matrix(subgroup, generators) | generators = rat_list_to_matrix(subgroup, generators) | ||
local mapping = get_unreduced_mapping(comma_matrix, generators) | |||
local cte_generator = frame.args['cte_generator'] | local cte_generator = frame.args['cte_generator'] | ||
local pote_generator = get_pote_generator(subgroup, comma_matrix, generators) | local pote_generator = get_pote_generator(subgroup, comma_matrix, generators) | ||
local result = '[[Subgroup]]: ' .. frame.args['subgroup'] | local result = '[[Subgroup]]: ' .. frame.args['subgroup'] | ||
result = result .. '\n\n[[Comma list]]: ' .. frame.args['comma_list'] | result = result .. '\n\n[[Comma list]]: ' .. frame.args['comma_list'] | ||
result = result .. '\n\n{{Mapping|' | |||
for i = 1, #mapping do | |||
for j = 1, #mapping[1] do | |||
result = result .. mapping[i][j] .. ' ' | |||
end | |||
result = result .. '|' | |||
end | |||
result = result:sub(0,-1) .. '}' | |||
result = result .. '\n\n: mapping generators: ' | result = result .. '\n\n: mapping generators: ' | ||
for i = 1, #unparsed_gens do | for i = 1, #unparsed_gens do | ||
| Line 308: | Line 331: | ||
return result | return result | ||
end | end | ||
return p | return p | ||