MathGroup Archive 2002

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

Search the Archive

Re: Re: Re: Why can't Mathematica find this root?

  • To: mathgroup at smc.vnet.net
  • Subject: [mg38440] Re: [mg38417] Re: [mg38362] Re: Why can't Mathematica find this root?
  • From: Andrzej Kozlowski <akoz at mimuw.edu.pl>
  • Date: Sun, 15 Dec 2002 02:10:12 -0500 (EST)
  • Sender: owner-wri-mathgroup at wolfram.com

On Saturday, December 14, 2002, at 05:20 PM, Daniel Lichtblau wrote:

> Konrad Den Ende wrote:
>>
>>> No, you don't. There are infinitely many roots, of which Mathematica 
>>> gives
>>> you only three: -Pi/2, 0, and Pi/2.
>>
>> Actually, you get five different roots, not three. Nevertheless - 
>> point
>> taken.
>> I ment of course that i'd like Mathematica to give me ALL the roots 
>> on form:
>> angle + (period * n). I'll try to be more exact the next time.
>>
>>> Didn't you notice Mathematica's comment that, since inverse 
>>> functions were
>>> being used, some solutions might not be found? That's the 
>>> explanation.
>>
>> Yes, i did. I wonder why it's the ONLY method used by Mathematica. It 
>> feels
>> pretty bad to know that the program "misses" some simple roots. I 
>> don't
>> wonder
>> "what kind of algorithm gave that", rather "why do they use only that
>> algorithm".
>>
>> I appologize if my question caused any trouble by it's "fuzziness".
>>
>> --
>> V?nligen
>> Konrad
>> -------------------
>
> I did not really understand at first the nature of the question. Now
> that I do I'll take a stab at it. Under Solve>Further Examples>"Getting
> infinite solution sets for some equations" in the Help Browser, there 
> is
> code to do something called "GeneralizeSolve". It is based on finding
> periodic inverses to various known functions, and takes advantage of 
> the
> fact that Solve will find solutions in terms of these inverse 
> functions.
> It does not quite work directly on your problem for the simple reason
> that e.g. ArcSin[0] will evaluate to 0. So we make it work by solving
> f'[x]==a and substituting a->0 afterward.
>
> Here is the code in question.
>
> arctrigs = {ArcSin, ArcCos, ArcCsc, ArcSec, ArcTan, ArcCot, ArcSinh,
> ArcCosh,
>       ArcCsch, ArcSech, ArcTanh, ArcCoth};
>
> periods = {2*Pi, 2*Pi, 2*Pi, 2*Pi, Pi, Pi, 2*I*Pi,
>     2*I*Pi, 2*I*Pi, 2*I*Pi, I*Pi, I*Pi};
>
> (* We use n to denote an arbitrary integer *)
>
> Generalize[f_[x_], n_] :=
>   f[x] + nperiods[[Position[arctrigs, f][[1, 1]]]] /; MemberQ[arctrigs,
> f]
>
> Generalize[Log[x_],n_]:=Log[x]+2\[Pi]\[ImaginaryI]n
>
> Generalize[ProductLog[x_],n_]:=ProductLog[n,x]
>
> Generalize[x___, n_] := x
>
> GeneralizedSolve[eqns_, vars_] := Generalize[#, n] & //@ Solve[eqns,
> vars]
>
> In[12]:=
> GeneralizedSolve[f'[x]==a,x]/. a->0
>
> Solve::ifun: Inverse functions are being used by Solve, so some
> solutions may \
> not be found.
>
> Out[12]=
> {{x -> -((2*Pi)/3) - 2*n*Pi}, {x -> (2*Pi)/3 + 2*n*Pi},
>   {x -> -(Pi/3) - 2*n*Pi}, {x -> Pi/3 + 2*n*Pi},
>   {x -> -Pi - 2*n*Pi}, {x -> Pi + 2*n*Pi},
>   {x -> -2*n*Pi}, {x -> 2*n*Pi}}
>
> A minor inconvenience is that some solutions may be listed more than
> once e.g. the last two are equivalent if we regard n as ranging over 
> all
> integers.
>
>
> Daniel Lichtblau
> Wolfram Research
>
>
>


This last "minor inconvenience" can be dealt with as follows:

g[x_, y_] := TrueQ[Simplify[Element[x,
      Integers], Element[y, Integers]] &&
           Simplify[Element[y, Integers], Element[x, Integers]]]


l = GeneralizedSolve[Derivative[1][f][x] == a, x] /. a -> 0


Solve::ifun:Inverse functions are being used by Solve, so some 
solutions may \
not be found.


{{x -> -((2*Pi)/3) - 2*n*Pi}, {x -> (2*Pi)/3 + 2*n*Pi},
   {x -> -(Pi/3) - 2*n*Pi}, {x -> Pi/3 + 2*n*Pi},
   {x -> -Pi - 2*n*Pi}, {x -> Pi + 2*n*Pi}, {x -> -2*n*Pi},
   {x -> 2*n*Pi}}



Union[l, SameTest -> (g[x /. #1, x /. #2] & )]


{{x -> -2*n*Pi}, {x -> -Pi - 2*n*Pi},
   {x -> -((2*Pi)/3) - 2*n*Pi}, {x -> -(Pi/3) - 2*n*Pi},
   {x -> Pi/3 + 2*n*Pi}, {x -> (2*Pi)/3 + 2*n*Pi},
   {x -> Pi + 2*n*Pi}}


(One could of course write a version of GeneralizedSolve that does this 
automatically).


Andrzej Kozlowski
Yokohama, Japan
http://www.mimuw.edu.pl/~akoz/
http://platon.c.u-tokyo.ac.jp/andrzej/



  • Prev by Date: JLink problem
  • Next by Date: Re: More about ellipse and circle intersection
  • Previous by thread: Re: Why can't Mathematica find this root?
  • Next by thread: Re: Re: Re: Re: Why can't Mathematica find this root?