def test_constructor_expression(self): e = 2 * x + 3 * y p = sym.Polynomial(e) numpy_compare.assert_equal(p.ToExpression(), e)
def test_degree_total_degree(self): e = a * (x**2) + b * (y**3) + c * z p = sym.Polynomial(e, [x, y, z]) self.assertEqual(p.Degree(x), 2) self.assertEqual(p.TotalDegree(), 3)
def test_comparison(self): p = sym.Polynomial() self.assertTrue(p == p) self.assertTrue(p.EqualTo(p))
def test_default_constructor(self): p = sym.Polynomial() numpy_compare.assert_equal(p.ToExpression(), sym.Expression())
def test_repr(self): p = sym.Polynomial() self.assertEqual(repr(p), '<Polynomial "0">')
def test_pow(self): e = a * (x**2) p = sym.Polynomial(e, [x]) # p = ax² p = pow(p, 2) # p = a²x⁴ numpy_compare.assert_equal(p.ToExpression(), (a**2) * (x**4))
def test_add_product(self): p = sym.Polynomial() m = sym.Monomial(x) p.AddProduct(sym.Expression(3), m) # p += 3 * x self.assertEqualStructure(p.ToExpression(), 3 * x)
def test_add_product(self): p = sym.Polynomial() m = sym.Monomial(x) p.AddProduct(sym.Expression(3), m) # p += 3 * x numpy_compare.assert_equal(p.ToExpression(), 3 * x)
def test_monomial_to_coefficient_map(self): m = sym.Monomial(x, 2) e = a * (x**2) p = sym.Polynomial(e, [x]) the_map = p.monomial_to_coefficient_map() self.assertEqualStructure(the_map[m], a)
def test_differentiate(self): e = a * (x**2) p = sym.Polynomial(e, [x]) # p = ax² result = p.Differentiate(x) # = 2ax self.assertEqualStructure(result.ToExpression(), 2 * a * x)
def test_constructor_expression(self): e = 2 * x + 3 * y p = sym.Polynomial(e) self.assertEqualStructure(p.ToExpression(), e)
def test_default_constructor(self): p = sym.Polynomial() self.assertEqualStructure(p.ToExpression(), sym.Expression())
def test_repr(self): p = sym.Polynomial() self.assertEqual(str(p), "0")
def test_monomial_to_coefficient_map(self): m = sym.Monomial(x, 2) e = a * (x**2) p = sym.Polynomial(e, [x]) the_map = p.monomial_to_coefficient_map() numpy_compare.assert_equal(the_map[m], a)
def test_remove_terms_with_small_coefficients(self): e = 3 * x + 1e-12 * y p = sym.Polynomial(e, [x, y]) q = p.RemoveTermsWithSmallCoefficients(1e-6) self.assertEqualStructure(q.ToExpression(), 3 * x)
def test_differentiate(self): e = a * (x**2) p = sym.Polynomial(e, [x]) # p = ax² result = p.Differentiate(x) # = 2ax numpy_compare.assert_equal(result.ToExpression(), 2 * a * x)
def test_pow(self): e = a * (x**2) p = sym.Polynomial(e, [x]) # p = ax² p = pow(p, 2) # p = a²x⁴ self.assertEqualStructure(p.ToExpression(), (a**2) * (x**4))
def test_remove_terms_with_small_coefficients(self): e = 3 * x + 1e-12 * y p = sym.Polynomial(e, [x, y]) q = p.RemoveTermsWithSmallCoefficients(1e-6) numpy_compare.assert_equal(q.ToExpression(), 3 * x)
def test_evaluate_exception_np_nan(self): p = sym.Polynomial(x * x, [x]) env = {x: np.nan} with self.assertRaises(RuntimeError): p.Evaluate(env)
def test_division(self): p = sym.Polynomial(x * x + x) numpy_compare.assert_equal(p / 2, sym.Polynomial(1 / 2 * x * x + 1 / 2 * x))
def test_evaluate_exception_python_nan(self): p = sym.Polynomial(x * x, [x]) env = {x: float('nan')} with self.assertRaises(RuntimeError): p.Evaluate(env)
def test_polynomial_evaluate(self): p = sym.Polynomial(a * x * x + b * x + c, [x]) env = {a: 2.0, b: 3.0, c: 5.0, x: 2.0} self.assertEqual(p.Evaluate(env), env[a] * env[x] * env[x] + env[b] * env[x] + env[c])
def test_constructor_maptype(self): m = {sym.Monomial(x): sym.Expression(3), sym.Monomial(y): sym.Expression(2)} # 3x + 2y p = sym.Polynomial(m) expected = 3 * x + 2 * y numpy_compare.assert_equal(p.ToExpression(), expected)