I would like to symbolically determine the rank of a jacobian matrix. In the help, I have seen that the MatrixRank function can be used for this purpose. However, when I use this function, the function doesn't allow to find the different singularities that can occur on my jacobian matrix.
Here a exemple of a jacobian matrix that I obtain on a slidercrank mechanism:
The constraints equations are :
SysCon = {x[t] == l1 Cos[θ[t]] + l2 Sin[β[t]],
0 == -l2 Cos[β[t]] + l1 Sin[θ[t]]}
The associated jacobian matrix is :
q = {β[t], x[t], θ[t]}
SysConExpr := SysCon /. lhs_ == rhs_ :> lhs - rhs
(ϕ = D[SysConExpr, {q}]) // MatrixForm
The rank of this jacobian (Phi) (with the MatrixRank function) gives 2 whatever the values of theta(t) and beta(t). However, if the values of theta(t) and beta(t) are :theta(t)=Pi/2,beta(t)=0. The rank shouldn't be 2 but 1.
Is a way to obtain the symbolic calculation of the rank of a jacobian matrix which can distinguish different cases following the values of the parameters ? In others words, my dream will be to have a MatrixRank function (or another algorithm) which can gives : the rank is 2 if theta(t) different of Pi/2 [Pi] and beta(t)=0 [Pi] and otherwise 1 if ... and perhaps 0 if ...
Another idea could be to have a algorithm which helps to give the higher determinants which are not null and analyze little by little all the determinants.
Of course, this example is simple but I will interested to find something general that I could apply on big matrix.
Thanks a lot for your help.