Module:Temperament data: Difference between revisions
Jump to navigation
Jump to search
CompactStar (talk | contribs) No edit summary |
CompactStar (talk | contribs) Copying code from AI (it has references to some library which I will remove and replace with my own functions) |
||
Line 16: | Line 16: | ||
end | end | ||
-- Moore-Penrose | local function moore_penrose_inverse(A) | ||
local | -- Perform the singular value decomposition of A. | ||
local U, S, V = svd(A) | |||
-- Compute the pseudo-inverse of S. | |||
local S_inv = torch.diag(torch.reciprocal(S + torch.zeros_like(S))) | |||
-- Compute the Moore-Penrose inverse of A. | |||
local A_inv = V * S_inv * U | |||
return A_inv | |||
end | |||
local function get_cte_error() | local function get_cte_error() |
Revision as of 02:53, 14 October 2023
Note: Do not invoke this module directly; use the corresponding template instead: Template:Temperament data.
local rat = require('Module:Rational')
local p = {}
local function matmul(a, b)
local result = {}
for i = 1, #a do
result[i] = {}
for j = 1, #(b[1]) do
result[i][j] = 0
for k = 1, #(a[1]) do
result[i][j] = result[i][j] + a[i][k] * b[k][j]
end
end
end
return result
end
local function moore_penrose_inverse(A)
-- Perform the singular value decomposition of A.
local U, S, V = svd(A)
-- Compute the pseudo-inverse of S.
local S_inv = torch.diag(torch.reciprocal(S + torch.zeros_like(S)))
-- Compute the Moore-Penrose inverse of A.
local A_inv = V * S_inv * U
return A_inv
end
local function get_cte_error()
end
return p