在非可解多变量线性方程中求相等变量

时间:2017-12-05 18:38:57

标签: python linear-algebra equivalence

我正在尝试找到解决当前问题的算法。我有多个未知变量(F1,F2,F3,... Fx)和(R1,R2,R3 ... Rx)和多个这样的方程式:

>   package version source
  1 packrat 0.4.8-1   CRAN

其中a,b和c是已知数字。我试图找到这些方程中的所有相等变量。例如,在上面的等式中,我可以看到F2和F3相等,R3和R4相等。

第一个等式告诉我们R1和R2是相等的,第二个告诉我们F2和F3是相等的,而第三个告诉我们R3和R4是相等的。

对于更复杂的场景,是否有任何已知的算法可以找到所有相等的(F和R)变量????

(如果不够清楚,我会编辑问题)

由于

2 个答案:

答案 0 :(得分:0)

这里有一个提示:你已经定义了一个包含7个变量和6个方程的线性方程组。这是一个粗糙的矩阵/向量符号:

 1 0 0 1 0 0 0     F1     a
 1 0 0 0 1 0 0     F2     a
 0 1 0 1 0 0 0  *  F3  =  b
 0 0 1 0 1 0 0     R1     b
 0 1 0 0 0 1 0     R2     c
 0 0 1 0 0 0 1     R3     c
                   R4

如果您手动执行Gaussian elimination,则可以看到,例如第一行减去第二行导致

 (0 0 0 1 -1 0 0) * (F1 F2 F3 R1 R2 R3 R4)^T = a - a
                                     R1 - R2 = 0
                                          R1 = R2

这意味着R1和R2就是你所说的等价物。有许多不同的方法来解决系统或解释结果。也许你会发现这个主题很有用:Is there a standard solution for Gauss elimination in Python?

答案 1 :(得分:0)

对于一般情况,行梯队可能是要走的路。如果每个方程只有两个变量,那么您可以将每个变量视为一个分区。每当两个变量一起出现在方程式中时,它们的分区就会连接在一起。所以从每个变量开始都在它自己的分区中。在第一个等式之后,有一个包含F1R1的分区。在第二个等式之后,该分区将被包含F1R1R2的分区替换。您应该以某种顺序获得变量,并且当连接两个分区时,将除第一个变量之外的所有变量放在第一个变量中(它对您如何排序变量并不重要,您只需要某种方式决定哪个是"第一个")。例如,在第一个等式之后,您有R1 = a-F1。在第二个等式之后,您有R1 = a-F1R2 = a-F1。每个变量可以用两个数字表示:它们的分区中的第一个变量加一个常数。然后在最后,您遍历每个分区,并查找具有相同两个数字的变量代表它们。