diff options
Diffstat (limited to 'sumofsquares/sosexprbase/mixins/sosexprbasemixin.py')
-rw-r--r-- | sumofsquares/sosexprbase/mixins/sosexprbasemixin.py | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/sumofsquares/sosexprbase/mixins/sosexprbasemixin.py b/sumofsquares/sosexprbase/mixins/sosexprbasemixin.py new file mode 100644 index 0000000..c8cee19 --- /dev/null +++ b/sumofsquares/sosexprbase/mixins/sosexprbasemixin.py @@ -0,0 +1,23 @@ +import functools +import polymatrix + +from sumofsquares.sosexprbase.mixins.exprbasemixin import ExprBaseMixin + + +class SOSExprBaseMixin(ExprBaseMixin): + @functools.cached_property + def sos_monom(self) -> polymatrix.Expression: + return self.expr.quadratic_monomials(self.variables).cache() + + @functools.cached_property + def sos_matrix(self) -> polymatrix.Expression: + sos_matrix = self.expr.quadratic_in( + variables=self.variables, + monomials=self.sos_monom, + ).symmetric().cache() + + return sos_matrix + + @property + def sos_matrix_as_vector(self) -> polymatrix.Expression: + return self.sos_matrix.reshape(-1, 1) |