Cramer's rule: Difference between revisions

Added Lua
No edit summary
(Added Lua)
Line 1,047:
w = 2.0, x = -12.0, y = -4.0, z = 1.0
</pre>
 
=={{header|Lua}}==
<lang Lua>local matrix = require "matrix" -- https://github.com/davidm/lua-matrix
 
local function cramer(mat, vec)
-- Check if matrix is quadratic
assert(#mat == #mat[1], "Matrix is not square!")
-- Check if vector has the same size of the matrix
assert(#mat == #vec, "Vector has not the same size of the matrix!")
local size = #mat
local main_det = matrix.det(mat)
local aux_mats = {}
local dets = {}
local result = {}
for i = 1, size do
-- Construct the auxiliary matrixes
aux_mats[i] = matrix.copy(mat)
for j = 1, size do
aux_mats[i][j][i] = vec[j]
end
-- Calculate the auxiliary determinants
dets[i] = matrix.det(aux_mats[i])
-- Calculate results
result[i] = dets[i]/main_det
end
return result
end
 
-----------------------------------------------
 
local A = {{ 2, -1, 5, 1},
{ 3, 2, 2, -6},
{ 1, 3, 3, -1},
{ 5, -2, -3, 3}}
local b = {-3, -32, -47, 49}
 
local result = cramer(A, b)
print("Result: " .. table.concat(result, ", "))
</lang>
 
{{out}}
<pre>Result: 2, -12, -4, 1</pre>
 
=={{header|Maple}}==