ai-content-maker/.venv/Lib/site-packages/sympy/matrices/expressions/tests/test_companion.py

49 lines
1.6 KiB
Python

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