Esempio n. 1
0
        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);
        }
Esempio n. 2
0
 public void NullTest()
 {
     FloatQRDecomp test = new FloatQRDecomp(null);
 }
Esempio n. 3
0
        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);
        }