Exemplo n.º 1
0
def calculate():
    f = request.args.get('f')
    start_point = request.args.get('start_point')
    eps = request.args.get('eps')
    option = request.args.get('option')
    if start_point is not None:
        start_point = [float(x) for x in start_point.split()]
    if eps is not None:
        eps = float(eps)
    find_min = True
    if option == 'max':
        find_min = False
    descent = GradientDescent(f, start_point, eps, find_min)
    length = Diff.length(descent.get_start_point())
    diff_by_direction = descent.calculate_diff_by_direction(length)
    mess = 'not monotonically'
    if Diff.is_increasing(diff_by_direction):
        mess = 'monotonically increasing'
    if Diff.is_decreasing(diff_by_direction):
        mess = 'monotonically decreasing'
    res = descent.calculate()
    report = descent.get_report()
    return render_template('index.html',
                           descent=descent,
                           point=' '.join(map(str, descent.get_start_point())),
                           length=length,
                           diff_by_direction=diff_by_direction,
                           mess=mess,
                           report=report,
                           res='; '.join(map(str, res)))