public void GeneralizedEigenvalueDecompositionConstructorTest3()
{
for (int i = 0; i < 10000; i++)
{
for (int j = 1; j < 6; j++)
{
var A = Matrix.Random(j, j, -1.0, 1.0);
var B = Matrix.Random(j, j, -1.0, 1.0);
var gevd = new GeneralizedEigenvalueDecomposition(A, B);
var V = gevd.Eigenvectors;
var D = gevd.DiagonalMatrix;
// A*V = B*V*D
var AV = Matrix.Multiply(A, V);
var BVD = Matrix.Multiply(Matrix.Multiply(B, V), D);
Assert.IsTrue(Matrix.IsEqual(AV, BVD, 0.0000001));
}
}
for (int i = 0; i < 100; i++)
{
int j = 50;
var A = Matrix.Random(j, j, -1.0, 1.0);
var B = Matrix.Random(j, j, -1.0, 1.0);
var gevd = new GeneralizedEigenvalueDecomposition(A, B);
var V = gevd.Eigenvectors;
var D = gevd.DiagonalMatrix;
// A*V = B*V*D
var AV = Matrix.Multiply(A, V);
var BVD = Matrix.Multiply(Matrix.Multiply(B, V), D);
Assert.IsTrue(Matrix.IsEqual(AV, BVD, 0.0000001));
}
}