MathGroup Archive 2009

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

Search the Archive

Re: Re: Refine, assumptions, domains

  • To: mathgroup at smc.vnet.net
  • Subject: [mg101760] Re: [mg101715] Re: Refine, assumptions, domains
  • From: Andrzej Kozlowski <akozlowski at gmail.com>
  • Date: Thu, 16 Jul 2009 08:19:42 -0400 (EDT)
  • References: <h3hjkc$1ue$1@smc.vnet.net> <h3hqqr$5l3$1@smc.vnet.net> <200907151108.HAA16411@smc.vnet.net> <454715FB-1A82-4D01-ACE9-E700A96FCADD@mimuw.edu.pl> <4A5E684A.7090608@cs.berkeley.edu> <55CFD0EA-0001-4BAA-9414-40A1BF9DCE17@gmail.com> <4A2F4A8A-C0F4-4E3B-81B9-70BAA470BD34@gmail.com> <4A5E76FB.3010903@cs.berkeley.edu>

A few additional comments on solving transcendental (analytic)  
equations with Reduce.

1. Although Reduce can guarantee that it found all the roots in a  
given bounded subset of C and their total multiplicity (sum of  
individual multiplicities) it can't in general distinguish multiple of  
roots from root clusters. So when you see answers like this one:

Reduce[409 + 120 x + 400 x^2 - 400 Cos[x]^2 - 120 Sin[x] - 800 x  
Sin[x] == 0 &&
    Abs[x] < 1, x]

you can't be sure if there are three double root or a 3 clusters of  
two roots which are very close together. If the roots are really  
distinct computing them to a larger precision will distinguish them.  
But in general there is no way to determine that a multiple root is a  
multiple root and not a cluster. So, in this sense there is a good  
reason to feel "uneasy" if you see a multiplicity as the third  
argument in a Root. But this "unease" is inevitable and you should  
feel it whatever program you use.

2. Validation of the correctness of root isolation uses Rouche's  
theorem and complex interval arithmetic, so it only works for  
elementary functions (for which complex interval arithmetic works).

Andrzej Kozlowski

On 15 Jul 2009, at 17:40, Richard Fateman wrote:

> I was unaware of this feature  (I am using version 6.0; I will see  
> if my department has version 7).
>
> Representing intervals by numbers with uncertainty, rather than by  
> Intervals makes me queasy.
> The easy part of finding roots of transcendental equations is, I  
> think, computing them to high precision.
> I think the hard part is figuring out how many roots there are and  
> what to do if there are too many (maybe infinite number).
>
> RJF
>
>
>
> Andrzej Kozlowski wrote:
>> More precisely, Reduce was greatly expanded in version 5 and could  
>> give complete solutions to trigonometric equations. Version 7 can  
>> do much more and find roots in the complex plane of any analytic  
>> functions. For example:
>>
>> x == Root[{E^#1 - Sin[#1] & ,
>>          
>> -9.4248586537754136567567778432489211323797029251636558910832`20.\
>> 3008606\
>>      01073058}] || x == Root[{E^#1 - Sin[#1] & ,
>>          
>> -6.281314366210795486987123240583963390549132286186244538368`20.\
>> 29036662\
>>      9310228}] || x == Root[{E^#1 - Sin[#1] & ,
>>          
>> -3.1830630119333635919397448876301537357136339778662659227848`20.\
>> 2961913\
>>      3152797}]
>>
>> Note that these are exact solutions, the approximate numbers you  
>> see are only isolating approximations. The solutions themselves can  
>> now be computed to arbitrary precision:
>>
>> N[First[%], 100]
>> x ==  
>> -9.424858653775413656756771883285883444399179101807799929806950013147702 
>> \
>>
>>       
>> 28492314961406843365451610069656121800751803514807455672278388074 
>> `100.
>>
>> This will work also in the complex plane, try:
>>
>> Reduce[Exp[x] == Sin[x] && Abs[x] < 10, x]
>>
>>
>> Andrzej Kozlowski
>>
>> On 15 Jul 2009, at 16:58, Andrzej Kozlowski wrote:
>>
>>>
>>> On 15 Jul 2009, at 16:37, Richard Fateman wrote:
>>>
>>>> That works, too.
>>>>
>>>> Last time I tried using Reduce it worked only for polynomials, so  
>>>> I stopped using it.
>>>> Thanks.
>>>
>>> Yes, that was the case before version 5, I think.
>>>
>>> Andrzej Kozlowski
>>>
>>>
>>>
>>>
>>>> Andrzej Kozlowski wrote:
>>>>> ...
>>>>> It may be just me but I can't understand what you are trying to  
>>>>> do at all. If you just want:
>>>>>
>>>>>> a way of finding the solutions of any equation,
>>>>>> say Sin[x]==0 that lie in a particular range
>>>>>
>>>>> then what's wrong with:
>>>>>
>>>>> x /. {ToRules[Reduce[Sin[x] == 0 && 0 < x < 10, x]]}
>>>>>
>>>>> {Pi, 2*Pi, 3*Pi}
>>>>>
>>>> FindInstance also works..
>>>>
>>>> RJF
>>>>
>>>
>>
>



  • Prev by Date: Re: ParallelTable doesn't work, but Table does
  • Next by Date: How to make variables local to a particular notebook?
  • Previous by thread: Re: Re: Refine, assumptions, domains
  • Next by thread: Re: Re: Refine, assumptions, domains