Re: finding the weighted degree of a polynomial
- To: mathgroup at smc.vnet.net
- Subject: [mg79688] Re: finding the weighted degree of a polynomial
- From: chuck009 <dmilioto at comcast.com>
- Date: Thu, 2 Aug 2007 03:42:30 -0400 (EDT)
Not sure how you want to handle the zero coefficients but when I create a polynomial with coefficients that are zero, Mathematica neglects these terms in the final form: In[263]:= a = 1; b = 2; cij = Table[Random[Integer, {-2, 2}], {i, 1, 5}, {j, 1, 5}] plist = Sum[cij[[i,j]]*x^i*y^j, {i, 1, 3}, {j, 1, 3}] Head[plist] Out[265]= {{2, 2, 1, 1, -2}, {1, -2, 2, -1, 0}, {-1, 2, 1, -2, -2}, {0, 2, 0, -1, -2}, {1, 0, -2, -1, -2}} Out[266]= 2*x*y + x^2*y - x^3*y + 2*x*y^2 - 2*x^2*y^2 + 2*x^3*y^2 + x*y^3 + 2*x^2*y^3 + x^3*y^3 Out[267]= Plus Notice I have some zero coefficients but when I form the sum, only the non-zero coefficients are in plist. However, this list still has a "Head" of "Plus" as given by the Head command. Here's the command I'd use to extract the {a,b}-weighted degree: In[268]:= Max[(a*Exponent[#1, x] + b*Exponent[#1, y] & ) /@ List @@ plist] Out[268]= 9 It's an interesting command and I notice you have only 3 post so maybe you're not familiar with "short-cuts": First I change the format of plist to a list. Can do this with the "apply" shortcut "@@". Just applying "List" to plist with that command. So now I have a list of monomials. Now, for each monomial in that list, I want to take the {a,b}-weighted degree. I do that with the (a*Exponent[#1, x] + b*Exponent[#1, y]) command. Exponent[#1,x] takes the exponent on x of the monomial supplied to it. Note the place-holders #1. Substitution of that place holder for each monomial in the list is accomplished by the pure-function construct I set up using both the & operator and the Map operator "/@". So look at what this is doing: (a*Exponent[#1, x] + b*Exponent[#1, y] & ) /@ List @@ plist It sends each monomial in List plist via the /@ command into the pure function: (a*Exponent[#1, x] + b*Exponent[#1, y] & ) via the #1 replacement operators and then just calculates the net weight. Alright, it's going to do that for every monomial forming a list of those weights. Then the Max command searches that list and finds the maximum.