cranky-coder08's picture
Add files using upload-large-folder tool
ac2f8e9 verified
from sympy.core.expr import unchanged
from sympy.core.symbol import Symbol, symbols
from sympy.matrices.immutable import ImmutableDenseMatrix
from sympy.matrices.expressions.companion import CompanionMatrix
from sympy.polys.polytools import Poly
from sympy.testing.pytest import raises
def test_creation():
x = Symbol('x')
y = Symbol('y')
raises(ValueError, lambda: CompanionMatrix(1))
raises(ValueError, lambda: CompanionMatrix(Poly([1], x)))
raises(ValueError, lambda: CompanionMatrix(Poly([2, 1], x)))
raises(ValueError, lambda: CompanionMatrix(Poly(x*y, [x, y])))
assert unchanged(CompanionMatrix, Poly([1, 2, 3], x))
def test_shape():
c0, c1, c2 = symbols('c0:3')
x = Symbol('x')
assert CompanionMatrix(Poly([1, c0], x)).shape == (1, 1)
assert CompanionMatrix(Poly([1, c1, c0], x)).shape == (2, 2)
assert CompanionMatrix(Poly([1, c2, c1, c0], x)).shape == (3, 3)
def test_entry():
c0, c1, c2 = symbols('c0:3')
x = Symbol('x')
A = CompanionMatrix(Poly([1, c2, c1, c0], x))
assert A[0, 0] == 0
assert A[1, 0] == 1
assert A[1, 1] == 0
assert A[2, 1] == 1
assert A[0, 2] == -c0
assert A[1, 2] == -c1
assert A[2, 2] == -c2
def test_as_explicit():
c0, c1, c2 = symbols('c0:3')
x = Symbol('x')
assert CompanionMatrix(Poly([1, c0], x)).as_explicit() == \
ImmutableDenseMatrix([-c0])
assert CompanionMatrix(Poly([1, c1, c0], x)).as_explicit() == \
ImmutableDenseMatrix([[0, -c0], [1, -c1]])
assert CompanionMatrix(Poly([1, c2, c1, c0], x)).as_explicit() == \
ImmutableDenseMatrix([[0, 0, -c0], [1, 0, -c1], [0, 1, -c2]])