Re: Is it feasible? ver 7.
- To: mathgroup at smc.vnet.net
- Subject: [mg105407] Re: [mg105367] Is it feasible? ver 7.
- From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
- Date: Tue, 1 Dec 2009 04:15:40 -0500 (EST)
- References: <200911301108.GAA13110@smc.vnet.net>
On 30 Nov 2009, at 20:08, ynb wrote: > Find the minimal polynomial p[z] of > > s=Sqrt[2] + 3^(1/3) + 5^(1/4) + 7^(1/5) + > 11^(1/6) + 13^(1/7) + 17^(1/8) + 19^(1/9) over Q. > > RootReduce[s]=_________(<----Is it feasible? > > mathematica ver 7) > > p[s]=________.(=0 <----Is it feasible? > mathematica ver 7) > > = -------------------------------------------------------------------------- ------- > > Find the minimal polynomial p[z] > p[z]=_________________________________________ > > > > > > I think none of these questions can be answered with any confidence. Getting exact answers to these questions is obviously going to be very hard - but the answer also depends on such things like do you have a super-computer at your disposal etc. You can certainly get approximate answers, good to a very high degree of accuracy, which may be OK for certain questions and if you are lucky that might even be the exact answers (but this is unlikely in this case). For example: s = Sqrt[2] + 3^(1/3) + 5^(1/4) + 7^(1/5) + 11^(1/6) + 13^(1/7) + 17^(1/8) + 19^(1/9); v = RootApproximant[N[s, 500]]; Now f = MinimalPolynomial[v, x] will give you a polynomial of degree 40 with large integer coefficients. This is an irreducible polynomial and s is very close to being a root of it: N[f /. x -> s, 500] During evaluation of In[15]:= N::meprec: Internal precision limit $MaxExtraPrecision = 50. reached while evaluating -465083107727-77132702464 ( 1.065716524368700929644172333737165712466626785244845*10^-445 so you have got an extremly small residue but still this is unlikely to be the maximal polynomial. You can see what sort of precision would be needed by looking at a simpler example. Take s = Sqrt[2] + 3^(1/3) + 5^(1/4); In this case RootReduce works fast: f = RootReduce[s] Root[#1^24-24 #1^22-24 #1^21+234 #1^20+288 #1^19-1388 #1^18-1944 #1^17+9927 #1^16-57960 #1^15-38928 #1^14+445824 #1^13+2162 #1^12-1070568 #1^11-2510400 #1^10-1856328 #1^9+7229025 #1^8+8106696 #1^7+14935732 #1^6-10731960 #1^5-31538628 #1^4-12201072 #1^3-2666976 #1^2+54232416 #1-30291344&,4] Using the approximate method with 100 digits of precision will not give the right answer: f1 = RootApproximant[N[s, 100]] Root[#1^40-4 #1^39-#1^38-#1^37-5 #1^36-4 #1^35+3 #1^34+4 #1^33+2 #1^32-3 #1^31+28 #1^30-2 #1^29-23 #1^28-55 #1^27+28 #1^26-25 #1^25+#1^24-86 #1^23+54 #1^22-39 #1^21+69 #1^20+97 #1^19+16 #1^18+52 #1^17-44 #1^16-91 #1^15+82 #1^14+40 #1^13+68 #1^12+22 #1^11-91 #1^10-18 #1^9+114 #1^8-42 #1^7+6 #1^6+41 #1^5+53 #1^4+38 #1^3-128 #1^2-18 #1+86&,2] 500 digits is enough f2 = RootApproximant[N[s, 500]] Out[24]= Root[#1^24-24 #1^22-24 #1^21+234 #1^20+288 #1^19-1388 #1^18-1944 #1^17+9927 #1^16-57960 #1^15-38928 #1^14+445824 #1^13+2162 #1^12-1070568 #1^11-2510400 #1^10-1856328 #1^9+7229025 #1^8+8106696 #1^7+14935732 #1^6-10731960 #1^5-31538628 #1^4-12201072 #1^3-2666976 #1^2+54232416 #1-30291344&,4] f2 == f True Trying only 400 also works f3 = RootApproximant[N[s, 400]] Root[#1^24-24 #1^22-24 #1^21+234 #1^20+288 #1^19-1388 #1^18-1944 #1^17+9927 #1^16-57960 #1^15-38928 #1^14+445824 #1^13+2162 #1^12-1070568 #1^11-2510400 #1^10-1856328 #1^9+7229025 #1^8+8106696 #1^7+14935732 #1^6-10731960 #1^5-31538628 #1^4-12201072 #1^3-2666976 #1^2+54232416 #1-30291344&,4] f3 == f True You can see that once you get the right answer it will not change as you increase the precision (at least I hope so). So in this way you could be (almost) sure when that you got the exact answer. But in your example the required number of digits is likely to be huge so using this approximate method may be no better than using the exact one. Andrzej Kozlowski=