Friday, August 5, 2016

HP Prime CAS: Degree of a Polynomial and Homogeneous Test

HP Prime CAS: Degree of a Polynomial and Homogeneous Test

Note

The following two programs degpoly and ishomogeneous are CAS Mode specific programs.  When you are creating a new program file in this instance, make sure the CAS box is checked on the New Program screen (see below).



Degree of a Polynomial

The program degpoly is a more complete version of the degree command.  The degree command tests a single variable, default to x if no variable is specified.  The program degpoly calculates the degree of a polynomial, considering four variables:  x, y, z, and t. Combinations of these four variables, such as x*y, x*y*z, and t*z are also considered.     

HP Program degpoly:
#cas
degpoly(poly):=
BEGIN
// 2016-07-31 EWS
// x,y,z,t
LOCAL tms,cnt,pt,lst,wp,dg,dgr;
tms:=part(poly);
lst:={};

FOR pt FROM 1 TO tms DO
wp:=part(poly,pt);
dg:=degree(wp,x)+degree(wp,y)+
degree(wp,z)+degree(wp,t);
lst:=concat(lst,{dg});
END;

dgr:=MAX(lst);
return dgr;
END;
#end

I recommend that you type out the commands when programming in CAS mode.  Make sure the suffix “CAS.” is removed from any command inside the program. 

Accessing CAS Programs

In CAS mode, press [Vars], then the soft key (CAS), select Program for the list of programs

Examples:
degpoly(x^2 + 3*x – 1) returns 2
degpoly(x^2 + 3*y – 1) returns 2
degpoly(x*y – y^2 + t) returns 2
degpoly(x^2*y^2 – 3*z^2) returns 4

Polynomial Homogeneous Test

A polynomial is homogeneous if all of the nonzero terms has the same degree.  Tests a polynomial of four variables x, y, z, and t and their combinations (x*y, x*z, x*y*z, etc).  If the polynomial in question is homogeneous, the program returns a 1 (for true), otherwise 0 is returned (for false).

HP Prime Program ishomogeneous
#cas
ishomogeneous(poly):=
BEGIN
// 2016-08-03 EWS
// x,y,z,t
LOCAL tms,cnt,pt,lst,wp,dg,dgr;
tms:=part(poly);
lst:={};

FOR pt FROM 1 TO tms DO
wp:=part(poly,pt);
dg:=degree(wp,x)+degree(wp,y)+
degree(wp,z)+degree(wp,t);
lst:=concat(lst,{dg});

// test
IF pt≥2 THEN
IF lst(pt)≠lst(pt-1) THEN
RETURN 0;
KILL;
END;
END;

END;
return 1;
END;
#end


Examples:
ishomogeneous(x^2 + 3) returns 0
ishomogeneous(x^2 + 3*y^2) returns 1  (all terms are of degree 2)
ishomogeneous(x^2*z – 3*y^2*t + x^3) returns 1  (all terms are of degree 3)
ishomogeneous(x^2*z – 3*y^2) returns 0

Source: 

Avner Ash and Robert Gross.  “Elliptic Tales.  Curves, Counting, and Number Theory”  Princeton University Press, New Jersey 2016.


This blog is property of Edward Shore, 2016.