Exemple #1
0
 def test_get_sos_le_van_barel_1(self):
     polynomial = poly(
         '2*w**2 - 2*z*w + 8*z**2 - 2*y*z + y**2 - 2*y**2*w + y**4 - 4*x*y*z - 4*x**2*z + x**2*y**2 + 2*x**4'
     )
     status, sos = get_sos(polynomial)
     self.assertEqual(status, 'Exact SOS decomposition found.')
     self.assertEqual(expand(sos.as_expr()), expand(polynomial).as_expr())
Exemple #2
0
 def mildorf_titu_andreescu(self):
     polynomial = poly(
         'a**4*c**2 + b**4*a**2 + c**4*b**2 - a**3*b**2*c - b**3*c**2*a - c**3*a**2*b'
     )
     status, sos = get_sos(polynomial)
     self.assertEqual(status, 'Exact SOS decomposition found.')
     self.assertEqual(expand(sos.as_expr()), expand(polynomial).as_expr())
Exemple #3
0
 def test_get_sos_odd_2(self):
     polynomial = poly('x**3 + 1')
     status, sos = get_sos(polynomial)
     self.assertEqual(
         status,
         'One of the variables in the polynomial has odd degree. Not a sum of squares.'
     )
     self.assertEqual(sos, nan)
Exemple #4
0
 def test_get_sos_odd_1(self):
     polynomial = poly('abc')
     status, sos = get_sos(polynomial)
     self.assertEqual(
         status,
         'One of the variables in the polynomial has odd degree. Not a sum of squares.'
     )
     self.assertEqual(expand(sos.as_poly()), nan)
Exemple #5
0
def hello():
    form = ReusableForm(request.form)
    if request.method == 'POST':
        _input = request.form['polynomial']
        if form.validate() and is_polynomial(_input):
            _polynomial = poly(_input)
            msg, sos = get_sos(_polynomial)
            if sos == nan:
                flash(
                    Markup(
                        f'<strong>Input</strong>: \({latex(sympify(_input))}\)'
                    ))
                flash(Markup(f'<strong>Result</strong>: {msg}'))
            else:
                flash(
                    Markup(
                        f'<strong>Result</strong>: \({latex(sympify(_input))} = {get_latex_from_poly(sos)}\)'
                    ))
        else:
            flash('Error: Non-constant polynomial required')
    return render_template('index.html', form=form)
Exemple #6
0
 def test_get_sos_choi_lam_2(self):
     polynomial = poly('y**4 + x**2 - 3*x**2*y**2 + x**4*y**2')
     status, sos = get_sos(polynomial)
     self.assertEqual(status, 'Exact SOS decomposition found.')
     self.assertEqual(simplify(sos).as_expr(), polynomial.as_expr())
Exemple #7
0
 def test_get_sos_choi_lam(self):
     polynomial = poly('1 + y**2*z**2 - 4*x*y*z + x**2*z**2 + x**2*y**2')
     status, sos = get_sos(polynomial)
     self.assertEqual(status, 'Exact SOS decomposition found.')
     self.assertEqual(simplify(sos).as_expr(), expand(polynomial).as_expr())
Exemple #8
0
 def test_get_sos_motzkin_with_denominator_multiplied_on_left(self):
     polynomial = poly(
         '(1+x**2 + y**2)*(1 + x**2*y**2*(x**2 + y**2) - 3*x**2*y**2)')
     status, sos = get_sos(polynomial)
     self.assertEqual(status, 'Exact SOS decomposition found.')
     self.assertEqual(expand(sos.as_expr()), expand(polynomial).as_expr())
Exemple #9
0
 def test_get_sos_motzkin_2(self):
     polynomial = poly('x**4*y**2 + x**2*y**4 - 3*x**2*y**2*z**2 + z**6')
     status, sos = get_sos(polynomial)
     self.assertEqual(status, 'Exact SOS decomposition found.')
     self.assertEqual(simplify(sos).as_expr(), polynomial.as_expr())
Exemple #10
0
 def test_get_sos_le_van_barel_0(self):
     polynomial = poly('1 + x**2 + x**4 + x**6')
     status, sos = get_sos(polynomial)
     self.assertEqual(status, 'Exact SOS decomposition found.')
     self.assertEqual(expand(sos.as_expr()), expand(polynomial).as_expr())
Exemple #11
0
 def test_get_sos_5(self):
     polynomial = poly('(x**2 - 1)**2 * (x**2 + 1) * (x**4 + x**2 + 1)')
     status, sos = get_sos(polynomial)
     self.assertEqual(status, 'Exact SOS decomposition found.')
     self.assertEqual(expand(sos.as_expr()), expand(polynomial).as_expr())
Exemple #12
0
 def test_get_sos_3(self):
     polynomial = poly('x**10 - x**6 - x**4 + 1')
     status, sos = get_sos(polynomial)
     self.assertEqual(status, 'Exact SOS decomposition found.')
     self.assertEqual(expand(sos.as_expr()), expand(polynomial).as_expr())
Exemple #13
0
 def test_get_sos_2(self):
     polynomial = poly('(x**2 + y**2 + z**2)**3 - 3*x**2*y**2*z**2')
     status, sos = get_sos(polynomial)
     self.assertEqual(status, 'Exact SOS decomposition found.')
     self.assertEqual(expand(sos.as_expr()), expand(polynomial).as_expr())