32 lines
787 B
Text
32 lines
787 B
Text
require "matrix"
|
|
local int = require "int"
|
|
|
|
local function pascal_upper_triangular(n)
|
|
local m = {}
|
|
for i = 1, n do
|
|
m[i] = {}
|
|
for j = 1, n do m[i][j] = (j >= i) ? int.binomial(j - 1, i - 1) : 0 end
|
|
end
|
|
return matrix.from(m)
|
|
end
|
|
|
|
local function pascal_symmetric(n)
|
|
local m = {}
|
|
for i = 1, n do
|
|
m[i] = {}
|
|
for j = 1, n do m[i][j] = int.binomial(i + j - 2, i - 1) end
|
|
end
|
|
return matrix.from(m)
|
|
end
|
|
|
|
local function pascal_lower_triangular(n)
|
|
return pascal_symmetric(n):cholesky()
|
|
end
|
|
|
|
local n = 5
|
|
print("Pascal upper-triangular matrix:")
|
|
print(pascal_upper_triangular(n))
|
|
print("\nPascal lower-triangular matrix:")
|
|
print(pascal_lower_triangular(n):format("%d"))
|
|
print("\nPascal symmetric matrix:")
|
|
print(pascal_symmetric(n))
|