Example #1
0
File: SVD.cs Project: DonDoff/Maths
        private Matrix EigenDecomp(Matrix M)
        {
            Matrix shift = MatrixFactory.IdentityMatrix(M.Height) * ComputeShift(M);
            QRDecomposition qr = (M - shift).QR();
            Matrix Eigenvector = qr.Q;

            for (int i = 0; i < Constants.ITERATION_DEPTH; i++) {
                M = qr.R * qr.Q + shift;
                shift = MatrixFactory.IdentityMatrix(M.Height) * ComputeShift(M);
                qr = (M - shift).QR();

                Eigenvector *= qr.Q;

                if (M.IsDiagonal()) {
                    break;
                }
            }
            D = M.Copy();
            return Eigenvector;
        }
Example #2
0
 public void IsDiagonalTest()
 {
     double[,] data = null; // TODO: инициализация подходящего значения
     Matrix target = new Matrix(data); // TODO: инициализация подходящего значения
     bool expected = false; // TODO: инициализация подходящего значения
     bool actual;
     actual = target.IsDiagonal();
     Assert.AreEqual(expected, actual);
     Assert.Inconclusive("Проверьте правильность этого метода теста.");
 }