![]() | 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,