예제 #1
0
        public Tuple <Matrix, Vector> FnEigSymm(Matrix A)
        {
            if (HDebug.Selftest())
            {
                Matrix tA = new double[, ] {
                    { 1, 2 }, { 2, 1 }
                };
                var    tVD = FnEigSymm(tA);
                Matrix tV  = new double[, ] {
                    { -0.7071, 0.7071 }, { 0.7071, 0.7071 }
                };
                Vector tD = new double[] { -1, 3 };
                HDebug.AssertToleranceMatrix(0.0001, tV - tVD.Item1);
                HDebug.AssertToleranceVector(0, tD - tVD.Item2);
            }
            var AA   = ToILMat(A);
            var VVDD = EigSymm(AA);

            return(new Tuple <Matrix, Vector>(VVDD.Item1.ToArray(), VVDD.Item2));
        }