Ejemplo n.º 1
0
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()
Ejemplo n.º 2
0
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()
Ejemplo n.º 3
0
__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)