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 = 7 data = [ (x[0], fsd(2, (x[3], 1))), (x[1], fsd(2, (x[4], 1))), (x[2], fsd(2, (x[3], 1), (x[4], 1))), ] points = numpy.array( [ [0.0, +x[3]], [0.0, -x[3]], [+x[3], 0.0], [-x[3], 0.0], # [0.0, +x[4]], [0.0, -x[4]], [+x[4], 0.0], [-x[4], 0.0], # # [+x[3], +x[4]], [+x[3], -x[4]], [-x[3], +x[4]], [-x[3], -x[4]], ] ) points, weights = untangle(data) A = numpy.concatenate(orthopy.e2r2.tree(points.T, degree, symbolic=False)) out = numpy.dot(A, weights) out[0] -= numpy.sqrt(numpy.pi) norm_v = numpy.sqrt(numpy.vdot(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