def save_gauss_function_test(): points = DataSet.import_dataset( './datasets/Feynman_with_units/cut/I.6.2a-1000') planes = DataPreprocessor.get_planes_for_dataset(plane_creator, points, 200, 220) test_derivations(planes, calc_1_6_20_a, verbose=True) plane_creator.write_plane(planes, './chosen_datasets/gauss_200_220') DataSet.write_dataset(points, './chosen_points_datasets/gauss_200_220')
def save_moved_circle(): r, xc, yc = 6, 1, 2 points = generate_circle_points(1000, r, xc, yc) func = circle_func(r, xc, yc) planes = DataPreprocessor.get_planes_for_dataset(plane_creator, points, 100, 150) test_derivations(planes, func, verbose=False) #plane_creator.write_plane(planes, './chosen_datasets/moved_circle_6_1_2_100_150') DataSet.write_dataset( points, './chosen_points_datasets/moved_circle_6_1_2_100_150')
def generate_harmonic_oscillator_nonlinear_points_test(): dataset = DataSet.import_dataset('./datasets/hmo_nl') points = dataset.data dataset_points = [] for point in points: x = point[0] x_dot = point[1] x_dot_dot = 0.25 * x_dot * math.sin(x) + 11.4 * math.cos(x) dataset_points.append([x, x_dot, x_dot_dot]) return DataSet(dataset_points)
def save_moved_ellipse(): ra, rb, xc, yc = 2.5, 5, 3, 4.5 points = generate_ellipse_points(1000, ra, rb, xc, yc) func = ellipse_func(ra, rb, xc, yc) planes = DataPreprocessor.get_planes_for_dataset(plane_creator, points, 150, 200) test_derivations(planes, func, verbose=False) plane_creator.write_plane( planes, './chosen_datasets/moved_ellipse_2.5_5_3_4.5_100_150') DataSet.write_dataset( points, './chosen_points_datasets/moved_ellipse_2.5_5_3_4.5_100_150')
def save_sphere(): radius = 5 points = DataSet(generate_sphere(radius, 30)) sphere_func = sphere_calc_func(radius, 0, 0, 0) planes = DataPreprocessor.get_planes_for_dataset(plane_creator, points, 250, 300) test_derivations(planes, sphere_func, verbose=False) plane_creator.write_plane(planes, './chosen_datasets/sphere_5_0_0_250_300')
def gauss_function_test(low, high): points = DataSet.import_dataset( './datasets/Feynman_with_units/cut/I.6.2a-1000') planes = DataPreprocessor.get_planes_for_dataset(plane_creator, points, low, high) #plot_kernel_with_dataset3D(points) error = test_derivations(planes, calc_1_6_20_a, verbose=False) return error
def only_points_dataset(low, high): points = DataSet.import_dataset('./datasets/Feynman_with_units/cut/I.18.4') calc_func = calc_1_18_4 planes = DataPreprocessor.get_planes_for_dataset(plane_creator, points, low, high) #plot_kernel_with_dataset3D(points) error = test_derivations(planes, calc_func, verbose=False) return error
def generate_ellipse_points(no_points, ra, rb, xc, yc): points = [] for i in range(no_points): t = random.random() angle = 2 * math.pi * t x = math.cos(angle) * ra + xc y = math.sin(angle) * rb + yc points.append([x, y]) return DataSet(points)
def generate_square_points(no_points, low_range, high_range): points = [] for i in range(no_points): point = [] var = random.random() * (high_range - low_range) + low_range point.append(var) point.append(var * var) points.append(point) return DataSet(points)
def sphere_test(low, high): radius = 5 points = DataSet(generate_sphere(radius, 20)) sphere_func = sphere_calc_func(radius, 0, 0, 0) planes = DataPreprocessor.get_planes_for_dataset(plane_creator, points, low, high) #plot_kernel_with_dataset3D(points) error = test_derivations(planes, sphere_func, verbose=False) return error
def generate_circle_points(no_points, radius, xc, yc): points = [] for i in range(no_points): t = random.random() angle = 2 * math.pi * t x = math.cos(angle) * radius + xc y = math.sin(angle) * radius + yc points.append([x, y]) return DataSet(points)
def generate_hyperbola_points(no_points, low_range, high_range): points = [] for i in range(no_points): x = random.random() * (high_range - low_range) + low_range y_squared = x**3 + x - 1.5 y = math.sqrt(y_squared) points.append([x, -y]) points.append([x, y]) i += 1 return DataSet(points)
def generate_harmonic_oscillator_points(no_points, low_range, high_range): points = [] for i in range(no_points): t = random.random() * (high_range - low_range) + low_range x = math.exp(0.05 * t) * (math.cos(1.73133 * t) - 0.0288795 * math.sin(1.73133 * t)) x_dot = math.exp(0.05 * t) * (5.5265 * 10e-8 * math.cos(1.73133 * t) - 1.73277 * math.sin(1.73133 * t)) x_dot_dot = -3 * x + 0.1 * x_dot points.append([x, x_dot, x_dot_dot]) return DataSet(points)
def generate_linear_points1(no_points, low_range, high_range): points = [] for i in range(no_points): point = [] mult = 1.0 for j in range(2): var = random.random() * (high_range - low_range) + low_range point.append(var) mult *= var point.append(mult) points.append(point) return DataSet(points)
test_bench(plane_creator, src_filename, calc_func) if __name__ == '__main__': dataset_name = "I.6.2a" calc_func = calc_1_6_20_a no_samples = 1000 lows = [10, 20, 30, 40, 50, 60, 100, 200, 300] highs = [20, 30, 40, 50, 60, 70, 150, 250, 350] plane_creator = MultiDimEllipseCreator() cut = True process = True calc_error = True verbose = False original_filename = f"./datasets/Feynman_with_units/original/{dataset_name}" cut_filename = f"./datasets/Feynman_with_units/cut/{dataset_name}-{no_samples}" if cut: DataSet.cut_dataset(original_filename, cut_filename, no_samples) for low, high in zip(lows, highs): processed_filename = f"./poc/{dataset_name}-{no_samples}-{low}-{high}" if process: DataPreprocessor.preprocess_dataset(plane_creator, cut_filename, low, high, processed_filename) if calc_error: test_bench(plane_creator, processed_filename, calc_func, verbose=verbose)