我正在使用sympy来产生符号多项式方程 . 我有大约30个变量和大约20个常量变量 . 我的方程达到的最高功率是平方项 .
我需要取这些方程中的2 ^ 13并计算出它们中有多少是唯一的(即,不是彼此的线性组合,不是退化) . 否则说,我需要找到由方程组产生的矩阵的秩 . 这些方程中的大多数是简并的,它们是彼此的线性组合 . 然而,最终,我需要从数据中提取独特的方程式 .
我试过一个系统如下:
-
创建一个空矩阵 .
-
迭代每个等式 . 对于每个等式,将其转换为矩阵的行,并通过添加新行来检查矩阵的等级是否增加 .
-
如果等级增加,则将行追加到空矩阵
-
打印生成的矩阵 .
如果正确完成,这应该给出所有独特的方程式 . 但是,numpy.linalg.matrix_rank()不适用于sympy符号 . 不幸的是,我有大约20个由sympy符号表示的常量 .
我如何找到我独特的方程式?其中任何一个都可以解决我的问题:
-
获得非简并方程的显式解
-
一种用于评估其中具有交感符号的矩阵的等级的方法 .
_009_或者,sympy是否具有内置功能,用于确定sympy方程是否是其他sympy方程的线性组合?
1 回答
Sympy有一个带有
rank
方法的Matrix
类:我不知道实现,它可能会很慢 . 所以你可能想要改进你的算法,例如: G . 通过保持矩阵减少到行梯队形式 .
不依赖于多项式的输入顺序的更系统的approch可能会计算并使用Gröbner basis .