smbot/qr_test.lua
2019-03-11 07:15:41 +01:00

88 lines
1.2 KiB
Lua

local globalize = require "strict"
local nn = require "nn"
local qr = require "qr"
local qr2 = require "qr2"
local qr3 = require "qr3"
local A
if false then
A = {
12, -51, 4,
6, 167, -68,
-4, 24, -41,
-1, 1, 0,
2, 0, 3,
}
A = nn.reshape(A, 5, 3)
elseif false then
A = {
0, 1, 2, 3, 4,
5, 6, 7, 8, 9,
10, 11, 12, 13, 14
}
A = nn.reshape(A, 5, 3)
elseif false then
A = {
1, 2, 0,
2, 3, 1,
3, 4, 0,
4, 5, 1,
5, 6, 0,
}
A = {
1, 0, 0,
2, 0, 1,
3, 0, 0,
4, 0, 1,
5, 0, 0,
}
A = nn.reshape(A, 5, 3)
--A = nn.transpose(A)
else
A = {
1, 2, -3,
2, 4, 5,
-3, 5, 6,
}
A = nn.reshape(A, 3, 3)
end
print("A")
print(nn.pp(A, "%9.4f"))
print()
local Q, R = qr(A)
print("Q (reference)")
print(nn.pp(Q, "%9.4f"))
print()
local Q, R = qr3(A)
print("Q")
print(nn.pp(Q, "%9.4f"))
print()
print("R")
print(nn.pp(R, "%9.4f"))
print()
print("Q @ R")
print(nn.pp(nn.dot(Q, R), "%9.4f"))
print()
--print("Q @ Q.T = I")
--print(nn.pp(nn.dot(Q, nn.transpose(Q)), "%9.4f"))
--print()
--A = nn.reshape(A, 5, 3)
--Q, R = qr(A)