Processing math: 100%
Ask Your Question
0

Jacobian matrix rank

asked 7 years ago

srini gravatar image

updated 7 years ago

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 ?

Preview: (hide)

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 ( 7 years ago )

1 Answer

Sort by » oldest newest most voted
0

answered 7 years ago

tmonteil gravatar image

updated 7 years ago

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
Preview: (hide)
link

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 ( 7 years ago )

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 ( 7 years ago )

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: 7 years ago

Seen: 1,075 times

Last updated: Apr 21 '17