m2m模型翻译
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

48 lines
1.6 KiB

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