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 p.pseudoinv(a)
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