def test_cholesky(self): a = np.random.random_integers(-1000, 1000, size=(1000, 1000)) b = np.random.random_integers(10000, 100000, size=(1000, 1)) a_sym = (a + a.T)/2 np.fill_diagonal(a_sym, b) assert_array_almost_equal(sp.cholesky(a_sym), cholesky.cholesky_out_of_place(a_sym), decimal=12) np.array_equal(cholesky.cholesky_out_of_place(a_sym), cholesky.cholesky_in_place(a_sym))
def solve_cholesky(A, b): # virker ikke på grund af at (1.0 / L[k, k]) * er fjernet. L = cholesky.cholesky_out_of_place(A) U = L.transpose() z = forward_substitution(L, b) x = back_substitution(U, z) return x