LU decomposition: Difference between revisions
m
→{{header|Sidef}}: updated code
m (→{{header|zkl}}: change formating) |
m (→{{header|Sidef}}: updated code) |
||
Line 2,898:
<lang ruby>func is_square(m) { m.all { .len == m.len } }
func matrix_zero(n, m=n) { m.of { n.of(0) } }
func matrix_ident(n) { n.of {|i|
func pivotize(m) {
var size = m.len
var id = matrix_ident(size)
for i
var max = m[i][i]
var row = i
for j
if (m[j][i] > max) {
max = m[j][i]
Line 2,912:
}
}
if (row
id.swap(row, i)
}
Line 2,918:
return id
}
func mmult(a, b) {
var p = []
for r,c
for i
p[r][c]
}
}
return p
}
func lu(a) {
is_square(a) || die "Defined only for square matrices!";
Line 2,936:
var L = matrix_ident(n)
var U = matrix_zero(n)
for i,j
if (j >= i) {
U[i][j] = (Aʼ[i][j] - (
} else {
L[i][j] =
}
}
return [P, Aʼ, L, U]
}
func say_it(message, array) {
say "\n#{message}"
Line 2,952:
}
}
var t = [[
%n(1 3 5),
Line 2,963:
%n( 2 5 7 1),
]]
for test (t) {
say_it('A Matrix', test);
for a
say_it(a
}
}</lang>
|