def test_cholesky(): random.seed() for i in range(10): print(".", end="", flush= True) size = random.randint(100, 200) M = matgen.symmetricPositiveDefinite(size) T = cholesky.completeCholesky(M) if not numpy.allclose(M, numpy.dot(T, T.transpose())): return False return True
def testIncompleteCholeskyPrecision(): size = 100 nbOfPoints = 100 x, y = [], [] for i in numpy.linspace(0, size*(size-1), nbOfPoints): x.append(i/(size*size)) M = matgen.symmetricSparsePositiveDefinite(size, i) complete = cholesky.completeCholesky(M) incomplete = cholesky.incompleteCholesky(M) y.append(numpy.linalg.norm(complete-incomplete)/numpy.linalg.norm(complete)) plt.plot(x, y, marker='o') plt.title("Relative error made by Cholesky incomplete factorization, in function of matrix density\n") plt.ylabel("relative error on the norm of the matrix obtained") plt.xlabel("density of the initial 100*100 matrix") plt.show()