I have the following matrix:
{{c1 d1 - e1 f1, c1 d2 - e1 f2, c1 d3 - e1 f3, c1 d4 - e1 f4},
{c2 d1 - e2 f1, c2 d2 - e2 f2, c2 d3 - e2 f3, c2 d4 - e2 f4},
{c3 d1 - e3 f1, c3 d2 - e3 f2, c3 d3 - e3 f3, c3 d4 - e3 f4},
{c4 d1 - e4 f1, c4 d2 - e4 f2, c4 d3 - e4 f3, c4 d4 - e4 f4},
{c5 d1 - e5 f1, c5 d2 - e5 f2, c5 d3 - e5 f3, c5 d4 - e5 f4},
{c6 d1 - e6 f1, c6 d2 - e6 f2, c6 d3 - e6 f3, c6 d4 - e6 f4}}
From the way it's constructed, I know that the rank can be at most two. If I ask Mathematica to row reduce the matrix, I end up with the following:
{{1, 0, (d3 f2 - d2 f3)/(-d2 f1 + d1 f2), (d4 f2 - d2 f4)/(-d2 f1 + d1 f2)},
{0, 1, (d3 f1 - d1 f3)/(d2 f1 - d1 f2), (d4 f1 - d1 f4)/(d2 f1 - d1 f2)},
{0, 0, 0, 0},
{0, 0, 0, 0},
{0, 0, 0, 0},
{0, 0, 0, 0}}
As can be seen, this is only valid when $d_1f_2\neq d_2f_1$. Furthermore, if I look at the left kernel, then Mathematica gives me the following basis:
{{-((-c6 e2 + c2 e6)/(c2 e1 - c1 e2)), -((c6 e1 - c1 e6)/(c2 e1 - c1 e2)), 0, 0, 0, 1},
{-((-c5 e2 + c2 e5)/(c2 e1 - c1 e2)), -((c5 e1 - c1 e5)/(c2 e1 - c1 e2)), 0, 0, 1, 0},
{-((-c4 e2 + c2 e4)/(c2 e1 - c1 e2)), -((c4 e1 - c1 e4)/(c2 e1 - c1 e2)), 0, 1, 0, 0},
{-((-c3 e2 + c2 e3)/(c2 e1 - c1 e2)), -((c3 e1 - c1 e3)/(c2 e1 - c1 e2)), 1, 0, 0, 0}}
Again, this basis is only valid when $c_1e_2\neq c_2e_1$. I need to find a basis in the case that $c_1e_2=c_2e_1$ and a row reduction when $d_1f_2=d_2f_1$. How can this be done?
Answer
You can use the option ZeroTest
as follows:
mat = {{c1 d1 - e1 f1, c1 d2 - e1 f2, c1 d3 - e1 f3, c1 d4 - e1 f4},
{c2 d1 - e2 f1, c2 d2 - e2 f2, c2 d3 - e2 f3, c2 d4 - e2 f4},
{c3 d1 - e3 f1, c3 d2 - e3 f2, c3 d3 - e3 f3, c3 d4 - e3 f4},
{c4 d1 - e4 f1, c4 d2 - e4 f2, c4 d3 - e4 f3, c4 d4 - e4 f4},
{c5 d1 - e5 f1, c5 d2 - e5 f2, c5 d3 - e5 f3, c5 d4 - e5 f4},
{c6 d1 - e6 f1, c6 d2 - e6 f2, c6 d3 - e6 f3, c6 d4 - e6 f4}};
RowReduce[mat, ZeroTest ->
(PossibleZeroQ[Simplify[#, Assumptions -> {-d2 f1 + d1 f2 == 0}]] &)]//Short[#, 5] &
Similarly,
RowReduce[Transpose@mat, ZeroTest ->
(PossibleZeroQ[Simplify[#, Assumptions->{c2 e1 - c1 e2 == 0}]] &)]//Short[#, 5] &
Comments
Post a Comment