Module:Temperament data: Difference between revisions

From Xenharmonic Wiki
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 pseudoinverse
local function moore_penrose_inverse(A)
local function pinv()end
  -- 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

Module documentation[view] [edit] [history] [purge]
Note: Do not invoke this module directly; use the corresponding template instead: Template:Temperament data.
Todo: add documentation

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