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())
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())
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)
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)
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)
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())
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())
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())
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())
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())
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())
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())
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())