def search_for_best(data): """searches for best configuration""" min_residue = 1 data_temp = copy.copy(data) _file = 'best_fit.txt' f = open(_file, "w") f.write("Подбор степеней полиномов для x1, x2, x3 при заданных условиях по критерию минимума максимального отклонения:\n") for i_step_x1 in range(data._startdeg_x1, data._enddeg_x1+1): for i_step_x2 in range(data._startdeg_x2, data._enddeg_x2+1): for i_step_x3 in range(data._startdeg_x3, data._enddeg_x3+1): data_temp._enddeg_x1 = i_step_x1 data_temp._enddeg_x2 = i_step_x2 data_temp._enddeg_x3 = i_step_x3 residue = fs.find_functions(data_temp) res= -1 for i in range(data._dim_y): if res < max(residue[:, i]): res = max(residue[:, i]) if res < min_residue: min_residue = res f.write("Степени полиномов для x1, x2, x3: %d %d %d\n" % (i_step_x1, i_step_x2, i_step_x3)) f.write("Максимальное отклонение в этом случае: %0.6f\nСредние отклонения по координатам:\n" % min_residue) for i in range(data._dim_y): f.write("i = %d\t%0.6f\n" % (i+1, np.mean(residue[:, i]))) f.write("\n") f.close()
def search_for_best(data): """searches for best configuration""" min_residue = 1 data_temp = copy.copy(data) _file = 'best_fit.txt' f = open(_file, "w") f.write("Searching for optimal power of poplynomials for x1, x2, x3 by data provided using using min max error criteria:\n") for i_step_x1 in range(data._startdeg_x1, data._enddeg_x1+1): for i_step_x2 in range(data._startdeg_x2, data._enddeg_x2+1): for i_step_x3 in range(data._startdeg_x3, data._enddeg_x3+1): data_temp._enddeg_x1 = i_step_x1 data_temp._enddeg_x2 = i_step_x2 data_temp._enddeg_x3 = i_step_x3 residue = fs.find_functions(data_temp) res= -1 for i in range(data._dim_y): if res < max(residue[:, i]): res = max(residue[:, i]) if res < min_residue: min_residue = res f.write("Powers of polynomials for x1, x2, x3: %d %d %d\n" % (i_step_x1, i_step_x2, i_step_x3)) f.write("Max error in this case: %0.6f\nAverage error by coordinates:\n" % min_residue) for i in range(data._dim_y): f.write("i = %d\t%0.6f\n" % (i+1, np.mean(residue[:, i]))) f.write("\n") f.close()
__author__ = 'Artemko' import data as d import functions_search as fs import find_best as fb data = d.Data() data.normalize() data.plot_data() if data._findBest: """find polynomial degrees in specified boundaries for minimal residue""" fb.search_for_best(data) else: """calculate everything for specified configuration""" fs.find_functions(data)