Ask Your Question
0

Jacobian matrix rank

asked 2017-04-20 19:08:36 +0200

srini gravatar image

updated 2017-04-21 05:48:23 +0200

Consider the following code :

R.<x,y,z> = QQ[];

p=(x-y)(y-z)(x-z);

J = matrix(R,[[x-y],[y]]);

J.rank();

The answer displayed is 1. This is the rank over the polynomia ring I suppose. I would like to compute rank over the field of rationals. That is if there are rational numbers a,b and c such that a diff(p,x) + b diff(p,y) + c diff(p,z) =0 but a,b,c non zero then rank should be 3.

What is the way to do it ?

edit retag flag offensive close merge delete

Comments

The matrix is defined over a "bigger" ring, $R$. So it is computed over the ring of definition....

sage: R.<x,y,z> = QQ[]
sage: # p = (x-y)*(y-z)*(x-z)    # (?!)
sage: J = matrix( R, 2,1, [ x-y, y ] )
sage: J.rank()
1
sage: J.parent()
Full MatrixSpace of 2 by 1 dense matrices over Multivariate Polynomial Ring in x, y, z over Rational Field

Using J.rank? or J.rank?? gives more info. In our case, the work is delegated to J.pivots(). (The length of this list of pivots is the rank.)

dan_fulea gravatar imagedan_fulea ( 2017-04-20 21:54:48 +0200 )edit

1 Answer

Sort by ยป oldest newest most voted
0

answered 2017-04-20 21:38:43 +0200

tmonteil gravatar image

updated 2017-04-20 21:39:14 +0200

Yes it is the rank over the polynomial ring. Houw could it be the rank over the rationals ? Note that x and y do not belong to the rational field, but the rank depends on the rational values you associate to them (the zero vector has rank 0, the other have rank one):

sage: J.substitute({x:0,y:0}).rank()
0
sage: J.substitute({x:0,y:1}).rank()
1
edit flag offensive delete link more

Comments

I would like to compute rank over the field of rationals. That is if there are rational numbers a,b and c such that a diff(p,x) + b diff(p,y) + c diff(p,z) =0 but a,b,c non zero then rank should be 3. What is the way to code this ?

srini gravatar imagesrini ( 2017-04-21 05:36:18 +0200 )edit

This makes no sense. The Jacobian matrix can be computed easily (in sage):

sage: var( 'x,y,z' );
sage: J = jacobian( p, [x,y,z] )
sage: J
[ (x - y)*(y - z) + (x - z)*(y - z)  (x - y)*(x - z) - (x - z)*(y - z) -(x - y)*(x - z) - (x - y)*(y - z)]

and this is a 3x1 matrix. Its rank is at most one! The rank is one, if $x,y,z$ are seen as (transcendental) independent variables. If we want to see for which numbers $x,y,z$ the rank is not one (which is generically the case), but zero (not three, this makes no sense), and this is a different question starting from a different question, then the following finds the point $(x,y,z)$:

sage: solve( [ component==0 for component in J[0] ], [x,y,z] )
[[x == r1, y == r1, z == r1]]

$p'(x,y,z)$ is zero iff $x=y=z$.

dan_fulea gravatar imagedan_fulea ( 2017-04-25 20:42:35 +0200 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

Stats

Asked: 2017-04-20 19:08:36 +0200

Seen: 657 times

Last updated: Apr 21 '17