summaryrefslogtreecommitdiffstats
path: root/examples/main.py
blob: ff8158999e6d8ebc34b40ab3523fbea7af6e126f (plain)
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
import sympy
import polymatrix

state = polymatrix.init_expression_state()

x1, x2 = sympy.symbols('x1, x2')
x = polymatrix.from_((x1, x2))

f1 = polymatrix.from_(x1 + x2)
f2 = polymatrix.from_(x1 + x1*x2)

f3 = f1 + f2          

# prints the data structure of the expression
# AdditionExprImpl(left=FromSympyExprImpl(data=((x1 + x2,),)), right=FromSympyExprImpl(data=((x1*x2 + x1,),)))
print(f3)

state, poly_matrix = f3.apply(state)

# prints the data structure of the polynomial matrix
# PolyMatrixImpl(terms={(0, 0): {((0, 1), (1, 1)): 1, ((0, 1),): 2, ((1, 1),): 1}}, shape=(1, 1))
print(poly_matrix)

state, sympy_repr = polymatrix.to_sympy(f3,).apply(state)

# prints the sympy representation of the polynomial matrix
# [[x1*x2 + 2*x1 + x2]]
print(sympy_repr)

state, dense_repr = polymatrix.to_dense((f3,), x).apply(state)

# prints the numpy matrix representations of the polynomial matrix
# array([[2., 1.]])
# array([[0. , 0.5, 0.5, 0. ]])
print(dense_repr.data[0][1])               # numpy array
print(dense_repr.data[0][2].toarray())     # sparse scipy array