Module:Temperament data: Difference between revisions
CompactStar (talk | contribs) No edit summary |
CompactStar (talk | contribs) No edit summary |
||
| Line 103: | Line 103: | ||
end | end | ||
function | local function pseudoinv(a) | ||
return matmul(transpose(a), matinv(matmul(a, transpose(a)))) | return matmul(transpose(a), matinv(matmul(a, transpose(a)))) | ||
end | |||
function p.te_generator(subgroup, mapping) | |||
local w = {} | |||
for i = 1, #subgroup do | |||
w[i] = {} | |||
for j = 1, #subgroup do | |||
if i == j then | |||
w[i][j] = math.log(2)/math.log(subgroup[i]) | |||
else | |||
w[i][j] = 0 | |||
end | |||
end | |||
end | |||
local jw = {} | |||
for i = 1, #mapping do | |||
jw[i] = {} | |||
for j = 1, #mapping do | |||
jw[i][j] = 1 | |||
end | |||
end | |||
local vw = matmul(mapping, w) | |||
local g = matmul(jw, pseudoinv(vw)) | |||
return g | |||
end | end | ||
return p | return p | ||