Mathematica 9 is now available
Services & Resources / Wolfram Forums / MathGroup Archive
-----

MathGroup Archive 2011

[Date Index] [Thread Index] [Author Index]

Search the Archive

Re: How to do quickest

  • To: mathgroup at smc.vnet.net
  • Subject: [mg123055] Re: How to do quickest
  • From: DrMajorBob <btreat1 at austin.rr.com>
  • Date: Tue, 22 Nov 2011 05:33:31 -0500 (EST)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • References: <201111210929.EAA14830@smc.vnet.net>
  • Reply-to: drmajorbob at yahoo.com

Sorry, I had a couple of typos. Correct is:

Clear[x, y]
kk = m /.
    First@Solve[{4 m^2 + 6 m n + n^2 ==
        x, (19 m^2 + 9 m n + n^2) Sqrt[m^2 + n^2] == y}, {m, n}];
Timing[qq = First@Last@Reap@Do[y = x^3 // Sqrt // Round;
       (x^3 - y^2) !=
         0 &&
        (len =
           Length@CoefficientList[MinimalPolynomial[kk][z], z]) < 12 &&
         Sow@{x, y, kk, len}, {x, 2, 3000}]]

{13.5446, {{1942, 85580, -3 Sqrt[2/5], 3}, {2878, 154396, -Sqrt[2],
    3}}}

and

Clear[x, y]
kk = m /.
    First@Solve[{4 m^2 + 6 m n + n^2 ==
        x, (19 m^2 + 9 m n + n^2) Sqrt[m^2 + n^2] == y}, {m, n}];
Timing[qq =
   First@Last@
     Reap@Do[SquareFreeQ@x && (y = x^3 // Sqrt // Round; True) && (
          len = Length@CoefficientList[MinimalPolynomial[kk][z], z]) <
         12 && Sow@{x, y, kk, len}, {x, 2, 3000}]]

{8.47326, {{1942, 85580, -3 Sqrt[2/5], 3}, {2878, 154396, -Sqrt[2],
    3}}}

Bobby

On Mon, 21 Nov 2011 16:28:08 -0600, DrMajorBob <btreat1 at austin.rr.com>  
wrote:

> Here's your code timed with an upper limit of 3000:
>
> Timing[Do[y = Round[Sqrt[x^3]];
>    If[(x^3 - y^2) != 0,
>     kk = m /.
>       Solve[{4 m^2 + 6 m n + n^2 ==
>           x, (19 m^2 + 9 m n + n^2) Sqrt[m^2 + n^2] == y}, {m, n}][[1]];
>     ll = CoefficientList[MinimalPolynomial[kk][[1]], #1];
>     lll = Length[ll];
>     If[lll < 12, Print[{x/(x^3 - y^2)^2, kk, x, y, x^3 - y^2}];
>      If[Length[ll] == 3, Print[{kk, x, y}]]]], {x, 2, 3000}]]
>
> {971/1377495072,3 Sqrt[2/5],1942,85580,52488}
>
> {3 Sqrt[2/5],1942,85580}
>
> {1439/117596448,Sqrt[2],2878,154396,15336}
>
> {Sqrt[2],2878,154396}
>
> {187.257, Null}
>
> This is better:
>
> Clear[x, y]
> kk = m /.
>     First@Solve[{4 m^2 + 6 m n + n^2 ==
>         x, (19 m^2 + 9 m n + n^2) Sqrt[m^2 + n^2] == y}, {m, n}];
> Timing[qq = First@Last@Reap@Do[y = x^3 // Sqrt // Round;
>        (x^3 - y^2) != 0 &&
>
>         Length@CoefficientList[MinimalPolynomial[kk][z], z] < 12 &&
>         Sow@{x, y, kk, len}, {x, 2, 3000}]]
>
> {14.0493, {{1942, 85580, -3 Sqrt[2/5], 13}, {2878, 154396, -Sqrt[2],
>     13}}}
>
> And this, even better:
>
> Clear[x, y]
> kk = m /.
>     First@Solve[{4 m^2 + 6 m n + n^2 ==
>         x, (19 m^2 + 9 m n + n^2) Sqrt[m^2 + n^2] == y}, {m, n}];
> Timing[qq =
>    First@Last@
>      Reap@Do[SquareFreeQ@x && (y = x^3 // Sqrt // Round; True) &&
>
>           Length@CoefficientList[MinimalPolynomial[kk][z], z] < 12 &&
>         Sow@{x, y, kk, len}, {x, 2, 3000}]]
>
> {8.39548, {{1942, 85580, -3 Sqrt[2/5], 13}, {2878, 154396, -Sqrt[2],
>     13}}}
>
> All this is VERY slow nonetheless. Maybe there's another way to  
> characterize the problem?
>
> Bobby
>
> On Mon, 21 Nov 2011 03:29:38 -0600, Artur <grafix at csl.pl> wrote:
>
>> Dear Mathematica Gurus,
>> How to do quickest following procedure (which is very slowly):
>>
>> qq = {}; Do[y = Round[Sqrt[x^3]];
>>   If[(x^3 - y^2) != 0,
>>    kk = m /. Solve[{4 m^2 + 6 m n + n^2 ==
>>          x, (19 m^2 + 9 m n + n^2) Sqrt[m^2 + n^2] == y}, {m, n}][[1]];
>>     ll = CoefficientList[MinimalPolynomial[kk][[1]], #1];
>>    lll = Length[ll];
>>    If[lll < 12, Print[{x/(x^3 - y^2)^2, kk, x, y, x^3 - y^2}];
>>     If[Length[ll] == 3, Print[{kk, x, y}]]]], {x, 2, 1000000}];
>>   qq
>>
>>
>> (*Best wishes Artur*)
>>
>
>


-- 
DrMajorBob at yahoo.com



  • Prev by Date: Re: What is the point of having Initializations in DynamicModule and Manipulate?
  • Next by Date: Re: NIntegrate to compute LegendreP approximations to functions
  • Previous by thread: Re: How to do quickest
  • Next by thread: Re: How to do quickest