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; }
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("Проверьте правильность этого метода теста."); }