/// <summary> /// Creates a positive definite <c>UserDefinedMatrix</c> with random values. /// </summary> /// <param name="order">The order of the matrix.</param> /// <returns>A positive definite <c>UserDefinedMatrix</c> with the given order and random values.</returns> public static Matrix <double> GenerateRandomPositiveDefiniteUserDefinedMatrix(int order) { // Fill a matrix with standard random numbers. var normal = new Normal(new MersenneTwister(1)); var matrixA = new UserDefinedMatrix(order); for (var i = 0; i < order; i++) { for (var j = 0; j < order; j++) { matrixA[i, j] = normal.Sample(); } } // Generate a matrix which is positive definite. return(matrixA.Transpose() * matrixA); }
/// <summary> /// Creates a positive definite <c>UserDefinedMatrix</c> with random values. /// </summary> /// <param name="order">The order of the matrix.</param> /// <returns>A positive definite <c>UserDefinedMatrix</c> with the given order and random values.</returns> public static Matrix<double> GenerateRandomPositiveDefiniteUserDefinedMatrix(int order) { // Fill a matrix with standard random numbers. var normal = new Normal(new MersenneTwister(1)); var matrixA = new UserDefinedMatrix(order); for (var i = 0; i < order; i++) { for (var j = 0; j < order; j++) { matrixA[i, j] = normal.Sample(); } } // Generate a matrix which is positive definite. return matrixA.Transpose()*matrixA; }
public static Matrix GenerateRandomPositiveDefiniteUserDefinedMatrix(int order) { // Fill a matrix with standard random numbers. var normal = new Distributions.Normal(); normal.RandomSource = new Random.MersenneTwister(1); var A = new UserDefinedMatrix(order); for (int i = 0; i < order; i++) { for (int j = 0; j < order; j++) { A[i, j] = normal.Sample(); } } // Generate a matrix which is positive definite. return A.Transpose() * A; }