static FloatQRDecompTest() { FloatMatrix a = new FloatMatrix(3); a[0, 0] = -1.0f; a[0, 1] = 5.0f; a[0, 2] = 6.0f; a[1, 0] = 3.0f; a[1, 1] = -6.0f; a[1, 2] = 1.0f; a[2, 0] = 6.0f; a[2, 1] = 8.0f; a[2, 2] = 9.0f; qr = new FloatQRDecomp(a); a = new FloatMatrix(2, 3); a[0, 0] = -1.0f; a[0, 1] = 5.0f; a[0, 2] = 6.0f; a[1, 0] = 3.0f; a[1, 1] = -6.0f; a[1, 2] = 1.0f; wqr = new FloatQRDecomp(a); a = new FloatMatrix(3, 2); a[0, 0] = -1.0f; a[0, 1] = 5.0f; a[1, 0] = 3.0f; a[1, 1] = -6.0f; a[2, 0] = 6.0f; a[2, 1] = 8.0f; lqr = new FloatQRDecomp(a); }
public void NullTest() { FloatQRDecomp test = new FloatQRDecomp(null); }
public void SolveMatrix() { FloatMatrix b = new FloatMatrix(3); b[0, 0] = 2; b[0, 1] = 2; b[0, 2] = 2; b[1, 0] = 13; b[1, 1] = 13; b[1, 2] = 13; b[2, 0] = 25; b[2, 1] = 25; b[2, 2] = 25; FloatMatrix x = qr.Solve(b); Assert.AreEqual(x[0, 0], 2.965, TOLERENCE); Assert.AreEqual(x[0, 1], 2.965, TOLERENCE); Assert.AreEqual(x[0, 2], 2.965, TOLERENCE); Assert.AreEqual(x[1, 0], -0.479, TOLERENCE); Assert.AreEqual(x[1, 1], -0.479, TOLERENCE); Assert.AreEqual(x[1, 2], -0.479, TOLERENCE); Assert.AreEqual(x[2, 0], 1.227, TOLERENCE); Assert.AreEqual(x[2, 1], 1.227, TOLERENCE); Assert.AreEqual(x[2, 2], 1.227, TOLERENCE); b = new FloatMatrix(3, 2); b[0, 0] = 2; b[0, 1] = 2; b[1, 0] = 13; b[1, 1] = 13; b[2, 0] = 25; b[2, 1] = 25; x = qr.Solve(b); Assert.AreEqual(x[0, 0], 2.965, TOLERENCE); Assert.AreEqual(x[0, 1], 2.965, TOLERENCE); Assert.AreEqual(x[1, 0], -0.479, TOLERENCE); Assert.AreEqual(x[1, 1], -0.479, TOLERENCE); Assert.AreEqual(x[2, 0], 1.227, TOLERENCE); Assert.AreEqual(x[2, 1], 1.227, TOLERENCE); b = new FloatMatrix(3, 4); b[0, 0] = 2; b[0, 1] = 2; b[0, 2] = 2; b[0, 3] = 2; b[1, 0] = 13; b[1, 1] = 13; b[1, 2] = 13; b[1, 3] = 13; b[2, 0] = 25; b[2, 1] = 25; b[2, 2] = 25; b[2, 3] = 25; x = qr.Solve(b); Assert.AreEqual(x[0, 0], 2.965, TOLERENCE); Assert.AreEqual(x[0, 1], 2.965, TOLERENCE); Assert.AreEqual(x[0, 2], 2.965, TOLERENCE); Assert.AreEqual(x[0, 3], 2.965, TOLERENCE); Assert.AreEqual(x[1, 0], -0.479, TOLERENCE); Assert.AreEqual(x[1, 1], -0.479, TOLERENCE); Assert.AreEqual(x[1, 2], -0.479, TOLERENCE); Assert.AreEqual(x[1, 3], -0.479, TOLERENCE); Assert.AreEqual(x[2, 0], 1.227, TOLERENCE); Assert.AreEqual(x[2, 1], 1.227, TOLERENCE); Assert.AreEqual(x[2, 2], 1.227, TOLERENCE); Assert.AreEqual(x[2, 3], 1.227, TOLERENCE); FloatMatrix A = new FloatMatrix(4, 3); A[0, 0] = -4.18f; A[0, 1] = -5.011f; A[0, 2] = -5.841f; A[1, 0] = 4.986f; A[1, 1] = 5.805f; A[1, 2] = 6.624f; A[2, 0] = 3.695f; A[2, 1] = 3.687f; A[2, 2] = 3.679f; A[3, 0] = -5.489f; A[3, 1] = -7.024f; A[3, 2] = 8.56f; FloatQRDecomp qrd = new FloatQRDecomp(A); FloatMatrix B = new FloatMatrix(4, 1); B[0, 0] = 1; B[1, 0] = 4; B[2, 0] = 2; B[3, 0] = 1; x = qrd.Solve(B); Assert.AreEqual(x[0, 0], 2.73529, TOLERENCE); Assert.AreEqual(x[1, 0], -2.15822, TOLERENCE); Assert.AreEqual(x[2, 0], 0.0998564, TOLERENCE); B = new FloatMatrix(4, 3); B[0, 0] = 1; B[1, 0] = 4; B[2, 0] = 2; B[3, 0] = 1; B[0, 1] = 1; B[1, 1] = 4; B[2, 1] = 2; B[3, 1] = 1; B[0, 2] = 1; B[1, 2] = 4; B[2, 2] = 2; B[3, 2] = 1; x = qrd.Solve(B); Assert.AreEqual(x[0, 0], 2.73529, TOLERENCE); Assert.AreEqual(x[1, 0], -2.15822, TOLERENCE); Assert.AreEqual(x[2, 0], 0.0998564, TOLERENCE); Assert.AreEqual(x[0, 1], 2.73529, TOLERENCE); Assert.AreEqual(x[1, 1], -2.15822, TOLERENCE); Assert.AreEqual(x[2, 1], 0.0998564, TOLERENCE); Assert.AreEqual(x[0, 2], 2.73529, TOLERENCE); Assert.AreEqual(x[1, 2], -2.15822, TOLERENCE); Assert.AreEqual(x[2, 2], 0.0998564, TOLERENCE); }