我使用sympy来产生符号多项式方程。我有大约30个变量和大约20个常量变量。我的方程达到的最高功率是平方项。
我需要取这些方程中的2 ^ 13并计算出它们中有多少是唯一的(即,不是彼此的线性组合,不是退化)。否则说,我需要找到由方程组产生的矩阵的秩。这些方程中的大多数是简并的,它们是彼此的线性组合。然而,最终,我需要从数据中提取独特的方程式。
我尝试了如下系统:
如果正确完成,这应该给出所有独特的方程式。但是,numpy.linalg.matrix_rank()不适用于sympy符号。不幸的是,我有大约20个由sympy符号表示的常量。
如何找到我独特的方程式?其中任何一个都可以解决我的问题:
答案 0 :(得分:2)
Sympy的Matrix
课程采用rank
方法:
In [1]: x, y = symbols('x y')
In [2]: M = Matrix([[x, y], [2*x, 2*y]])
In [3]: M
Out[3]:
⎡ x y ⎤
⎢ ⎥
⎣2⋅x 2⋅y⎦
In [4]: M.rank()
Out[4]: 1
我不知道实现,它可能很慢。 所以你可能想要改进你的算法,例如: G。通过将矩阵简化为行梯形式。
更系统的approch,它不依赖于输入顺序 多项式可能会计算并使用Gröbner basis。