def f(x): degree = 7 n = 5 u = x[0] v = x[1] B = x[2:] data = [ (B[0], z(n)), (B[1], fsd(n, (u, 1))), (B[2], fsd(n, (v, 1))), (B[3], fsd(n, (u, 2))), (B[4], fsd(n, (v, 2))), (B[5], fsd(n, (u, 3))), ] points, weights = untangle(data) exponents = get_all_exponents(n, degree) # flatten list exponents = numpy.array([item for sublist in exponents for item in sublist]) def evaluate_all_monomials(x): return numpy.prod(x[..., None] ** exponents.T[:, None], axis=0).T flt = numpy.vectorize(float) exact_vals = flt([integrate_monomial_over_unit_nball(k) for k in exponents]) A = evaluate_all_monomials(points.T) out = numpy.dot(A, weights) out -= exact_vals norm_v = numpy.sqrt(numpy.dot(out, out)) print(norm_v) return norm_v
def f(x): degree = 11 n = 3 u = 0.871_740_148_509_601 v = 0.591_700_181_433_148 w = 0.209_299_217_902_484 # u = x[0] # v = x[1] # w = x[2] # B = x[3:] B = x data = [ (B[0], z(n)), (B[1], fsd(n, (u, 1))), (B[2], fsd(n, (v, 1))), (B[3], fsd(n, (w, 1))), (B[4], fsd(n, (u, 2))), (B[5], fsd(n, (v, 2))), (B[6], fsd(n, (w, 2))), (B[7], fsd(n, (u, 1), (v, 1))), (B[8], fsd(n, (u, 1), (w, 1))), (B[9], fsd(n, (u, 3))), (B[10], fsd(n, (v, 3))), (B[11], fsd(n, (w, 3))), (B[12], fsd(n, (u, 2), (v, 1))), ] points, weights = untangle(data) exponents = get_all_exponents(n, degree) # flatten list exponents = numpy.array( [item for sublist in exponents for item in sublist]) def evaluate_all_monomials(x): return numpy.prod(x[..., None]**exponents.T[:, None], axis=0).T flt = numpy.vectorize(float) exact_vals = flt( [integrate_monomial_over_unit_nball(k) for k in exponents]) A = evaluate_all_monomials(points.T) out = numpy.dot(A, weights) out -= exact_vals norm_v = numpy.sqrt(numpy.dot(out, out)) # print() print(norm_v) # print() # for xx in x: # print(f"{xx:.15e}") return norm_v
def f(x): degree = 11 n = 5 u = x[0] v = x[1] w = x[2] B = x[3:] data = [ (B[0], z(n)), (B[1], fsd(n, (u, 1))), (B[2], fsd(n, (v, 1))), (B[3], fsd(n, (w, 1))), (B[4], fsd(n, (u, 2))), (B[5], fsd(n, (v, 2))), (B[6], fsd(n, (w, 2))), (B[7], fsd(n, (u, 1), (v, 1))), (B[8], fsd(n, (u, 1), (w, 1))), (B[9], fsd(n, (u, 3))), (B[10], fsd(n, (v, 3))), (B[11], fsd(n, (w, 3))), (B[12], fsd(n, (u, 2), (v, 1))), ] if n > 3: data += [(B[13], fsd(n, (u, 4))), (B[14], fsd(n, (v, 4)))] if n > 4: data += [(B[15], fsd(n, (u, 5)))] points, weights = untangle(data) exponents = get_all_exponents(n, degree) # flatten list exponents = numpy.array( [item for sublist in exponents for item in sublist]) def evaluate_all_monomials(x): return numpy.prod(x[..., None]**exponents.T[:, None], axis=0).T flt = numpy.vectorize(float) exact_vals = flt( [integrate_monomial_over_unit_nball(k) for k in exponents]) A = evaluate_all_monomials(points.T) out = numpy.dot(A, weights) out -= exact_vals norm_v = numpy.sqrt(numpy.dot(out, out)) print() print(norm_v) print() for xx in x: print(f"{xx:.15e}") return norm_v