def error_y(y): pol1 = pol.Chebyshev_interpolation(lambda x: error(x, y)**2, -1, 1, n) pol2 = pol1.inter() return pol2.eval(1) - pol2.eval(-1)
def std_y(y): pol1 = pol.Chebyshev_interpolation( lambda x: (sin(pi * x) * sin(pi * y))**2, -1, 1, n) pol2 = pol1.inter() return pol2.eval(1) - pol2.eval(-1)
for i in range(50): grid.Gauss() error_rlt = lambda x, y: 1 - (grid.get_value(x, y) / (sin(pi * x) * sin(pi * y))) error = lambda x, y: (grid.get_value(x, y) - (sin(pi * x) * sin(pi * y))) standard = lambda x, y: (sin(pi * x) * sin(pi * y)) if error_cal: n = 20 def error_y(y): pol1 = pol.Chebyshev_interpolation(lambda x: error(x, y)**2, -1, 1, n) pol2 = pol1.inter() return pol2.eval(1) - pol2.eval(-1) pol1 = pol.Chebyshev_interpolation(error_y, -1, 1, n) pol2 = pol1.inter() print("所求误差为%f" % ((pol2.eval(1) - pol2.eval(-1))**(1 / 2))) def std_y(y): pol1 = pol.Chebyshev_interpolation( lambda x: (sin(pi * x) * sin(pi * y))**2, -1, 1, n) pol2 = pol1.inter() return pol2.eval(1) - pol2.eval(-1) pol1 = pol.Chebyshev_interpolation(std_y, -1, 1, n) pol2 = pol1.inter() print("标准值积分为%f" % ((pol2.eval(1) - pol2.eval(-1))**(1 / 2))) else: for i in range(300):