Spaces:
Running
Running
File size: 1,657 Bytes
6a86ad5 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 |
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]])
|