Exemple #1
0
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
Exemple #2
0
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()