Cramer's rule: Difference between revisions
Content added Content deleted
No edit summary |
(Added Lua) |
||
Line 1,047: | Line 1,047: | ||
w = 2.0, x = -12.0, y = -4.0, z = 1.0 |
w = 2.0, x = -12.0, y = -4.0, z = 1.0 |
||
</pre> |
</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}}== |
=={{header|Maple}}== |