def best_fit(x, terms=1, step=1): h = get_h(terms, len(x), step) a = VecOps.multiply_matrices(VecOps.transpose(h), h) b = VecOps.multiply_matrices(VecOps.transpose(h), x) c = VecOps.multiply_matrices(VecOps.get_inverse(a), b) return c / step