static DoubleQRDecompTest() { DoubleMatrix a = new DoubleMatrix(3); a[0, 0] = -1.0; a[0, 1] = 5.0; a[0, 2] = 6.0; a[1, 0] = 3.0; a[1, 1] = -6.0; a[1, 2] = 1.0; a[2, 0] = 6.0; a[2, 1] = 8.0; a[2, 2] = 9.0; qr = new DoubleQRDecomp(a); a = new DoubleMatrix(2, 3); a[0, 0] = -1.0; a[0, 1] = 5.0; a[0, 2] = 6.0; a[1, 0] = 3.0; a[1, 1] = -6.0; a[1, 2] = 1.0; wqr = new DoubleQRDecomp(a); a = new DoubleMatrix(3, 2); a[0, 0] = -1.0; a[0, 1] = 5.0; a[1, 0] = 3.0; a[1, 1] = -6.0; a[2, 0] = 6.0; a[2, 1] = 8.0; lqr = new DoubleQRDecomp(a); }
public void NullTest() { DoubleQRDecomp test = new DoubleQRDecomp(null); }
public void SolveMatrix() { DoubleMatrix b = new DoubleMatrix(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; DoubleMatrix 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 DoubleMatrix(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 DoubleMatrix(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); DoubleMatrix A = new DoubleMatrix(4, 3); A[0, 0] = -4.18; A[0, 1] = -5.011; A[0, 2] = -5.841; A[1, 0] = 4.986; A[1, 1] = 5.805; A[1, 2] = 6.624; A[2, 0] = 3.695; A[2, 1] = 3.687; A[2, 2] = 3.679; A[3, 0] = -5.489; A[3, 1] = -7.024; A[3, 2] = 8.56; DoubleQRDecomp qrd = new DoubleQRDecomp(A); DoubleMatrix B = new DoubleMatrix(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 DoubleMatrix(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); }