Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

@Max Alekseyev has pointed to a general result applicable to your problem, whereas @dan_fulea gives a "manual solution. I want to point out that Sage is able to give you this result. After slightly rearranging your code (I'm lazy) :

Vars=var('a b c d p q r s')
F=[14*a - 102*b + 104*c + 24*d,
   -7*a + 51*b - 52*c - 12*d,
   -52*a - 12*b - 142*c - 138*d,
   26*a + 6*b + 71*c + 69*d,
   28*a - 204*b + 208*c + 48*d ,
   -14*a + 102*b - 104*c - 24*d ,
   -104*a - 24*b - 284*c - 276*d,
   52*a + 12*b + 142*c + 138*d,
   204*a - 292*b - 48*c + 176*d,
   -102*a + 146*b + 24*c - 88*d,
   24*a - 88*b + 276*c - 556*d,
   -12*a + 44*b - 138*c + 278*d ,
   408*a - 584*b - 96*c + 352*d,
   -204*a + 292*b + 48*c - 176*d,
   48*a - 176*b + 552*c - 1112*d,
   -24*a + 88*b - 276*c + 556*d]

one may run :

sage: solve(F,Vars)
[[a == 0, b == 0, c == 0, d == 0, p == r4, q == r3, r == r2, s == r1]]

which tells you that your system as a quadruple infinity of solutions, 'p', 'q, 'r', 's' being undetermined (which is not a surprise, since these variable do not appear in your equations), and the (a, b, c, d) vector having the unique solution (0, 0, 0, 0).

Another way to express this is :

sage: solve(F, (a, b, c, d))
[[a == 0, b == 0, c == 0, d == 0]]

which has the same meaning.

BTW, you can work in Max's direction with :

sage: M=matrix(SR,[[f.coefficient(v) for v in Vars] for f in F]) ; M
[   14  -102   104    24     0     0     0     0]
[   -7    51   -52   -12     0     0     0     0]
[  -52   -12  -142  -138     0     0     0     0]
[   26     6    71    69     0     0     0     0]
[   28  -204   208    48     0     0     0     0]
[  -14   102  -104   -24     0     0     0     0]
[ -104   -24  -284  -276     0     0     0     0]
[   52    12   142   138     0     0     0     0]
[  204  -292   -48   176     0     0     0     0]
[ -102   146    24   -88     0     0     0     0]
[   24   -88   276  -556     0     0     0     0]
[  -12    44  -138   278     0     0     0     0]
[  408  -584   -96   352     0     0     0     0]
[ -204   292    48  -176     0     0     0     0]
[   48  -176   552 -1112     0     0     0     0]
[  -24    88  -276   556     0     0     0     0]
sage: M.rank()
4

Another variant :

sage: MR=matrix(M.columns()[:4]).transpose() ; MR
[   14  -102   104    24]
[   -7    51   -52   -12]
[  -52   -12  -142  -138]
[   26     6    71    69]
[   28  -204   208    48]
[  -14   102  -104   -24]
[ -104   -24  -284  -276]
[   52    12   142   138]
[  204  -292   -48   176]
[ -102   146    24   -88]
[   24   -88   276  -556]
[  -12    44  -138   278]
[  408  -584   -96   352]
[ -204   292    48  -176]
[   48  -176   552 -1112]
[  -24    88  -276   556]
sage: MR.rank()
4

Sage is also able to work out redundant equations, thus avoiding @dan_fulea's manual work :

sage: matrix([r for r in M.echelon_form().rows() if any([v!=0 for v in r])])
[1 0 0 0 0 0 0 0]
[0 1 0 0 0 0 0 0]
[0 0 1 0 0 0 0 0]
[0 0 0 1 0 0 0 0]

Alternatively :

sage: matrix([r for r in MR.echelon_form().rows() if any([v!=0 for v in r])])
[1 0 0 0]
[0 1 0 0]
[0 0 1 0]
[0 0 0 1]

HTH,