Jacques Gélinas on Tue, 24 Jul 2018 23:07:35 +0200

[Date Prev] [Date Next] [Thread Prev] [Thread Next] [Date Index] [Thread Index]

 RE: Using taylor() with polynomials in many variables

```/* Here is a better version of the signs function posted earlier in this group
to check the signs of the coefficients in a polynomial of many variables
(http://pari.math.u-bordeaux.fr/archives/pari-users-1806/msg00018.html) */

signs(p) = if(type(p) == "t_POL", signp(p));
signp(p) = if(!#variables(p=simplify(p)), sign(p),\
if(nsv(p=apply(signp,Vec(p))), UNK, p));

\\ number of sign variations in a vector
nsv(V) = my(r,s); sum(k=1,#V,if(s,r=s);s=V[k];r&s&(r!=s));

\\ For a polynomial, the taylor() or Vec() functions can be replaced by

taylorp(p,x='x,a=0) = vector(1+poldegree(p,x),k,polcoeff(subst(p,x,x+a),k-1,x));

\* The problem is to show that the following polynomial is positive
under the constraints  n>=3, 2<= r <= n-1, 0 <= a,b, <=1 */

E = r*(n-1)*(2*r+1)*(3-a) - 3*(n-r)*(2*r+1-a*b);

\\First, auxiliary variables transform the constraints on r,n to m>=0, s>=0

F = subst(subst(E,n,r+1+m),r,s+2)

\\Next we get the Maclaurin coefficients with respect to variable b.

G = taylorp(F,b);
G == (3*m + 3)*a
signs(G) == 1

\\ One more auxiliary variable converts a <= 1 to A>=0

apply(signs,G) == [UNK,1]
signs(subst(G,a,1-A)) == 1

Jacques Gélinas

```