Re: Re: Log[4]==2*Log[2]
- To: mathgroup at smc.vnet.net
- Subject: [mg50611] Re: [mg50557] Re: [mg50520] Log[4]==2*Log[2]
- From: DrBob <drbob at bigfoot.com>
- Date: Sun, 12 Sep 2004 04:42:27 -0400 (EDT)
- References: <200409090917.FAA19334@smc.vnet.net> <200409100805.EAA04777@smc.vnet.net> <opsd4ehiyriz9bcq@monster.cox-internet.com> <2E4E6EFA-03F0-11D9-99E9-000A95B4967A@akikoz.net> <opsd59t8ufiz9bcq@monster.cox-internet.com> <598B2886-043B-11D9-99E9-000A95B4967A@akikoz.net> <746B4F54-043E-11D9-99E9-000A95B4967A@akikoz.net>
- Reply-to: drbob at bigfoot.com
- Sender: owner-wri-mathgroup at wolfram.com
As is often the case with a CAS, the trick is to manage our expectations. Bobby On Sun, 12 Sep 2004 07:03:47 +0900, Andrzej Kozlowski <andrzej at akikoz.net> wrote: > *This message was transferred with a trial version of CommuniGate(tm) Pro* > More fully and correctly (taking the rist of sounding very pedantic): > in the case when the quantities compared are not equal, even if they > are exact, Mathematica can "settle" the question only if the difference > is "large enough". > In the case of exact input, as in the posted example, he important > thing is, that for equality the "required precision" is Infinity. So, > an equality between exact numbers, when it holds, will be settled > without applying Simplify or FullSimplify only if it can be settled by > using exact numbers and a few very simple transformation rules used by > the Evaluator. When equality does not hold it will be settled in cases > when the difference between the two quantities is large enough, and in > the remaining cases it will require increasing $MaxExtraPrecision. > > In general with exact input it seems preferable to apply Simplify or > FullSimplify without prior numerical evaluation, although of course > there are many cases when simplification will not succeed while > numerical comparison will, and cases when neither simplification nor > numerical check can settle the question of equality. > > > Andrzej > > > > On 12 Sep 2004, at 06:41, Andrzej Kozlowski wrote: > >> Yes, I agree. Indeed, what it does it tries to settle "exact equality" >> using inexact numbers, and it of course it can't be done. However, as >> you correctly point out, had the quantities entered not been equal >> Mathematica would have settled the question. This is of course the >> reason why it does anything at all except just simply returning the >> input. >> >> Andrzej >> >> >> On 12 Sep 2004, at 02:07, DrBob wrote: >> >>> *This message was transferred with a trial version of CommuniGate(tm) >>> Pro* >>>>> Mathematica could not determine anything because it tries to >>>>> compare the numbers "numerically" without using approximate >>>>> numerical >>>>> values, which can't be done. >>> >>> I agree it can't be done; so why is Mathematica trying to do that? >>> Documentation says: >>> >>>>> For exact numeric quantities, Equal internally uses numerical >>>>> approximations to establish inequality. >>> >>> Inequality usually can be established this way, but equality never >>> can be. I suppose that's what the error message "intends to mean". >>> Equal tried to establish INEQUALITY and failed, yet is unwilling to >>> declare EQUALITY. >>> >>> Hence the test could never be True for exact quantities. But... >>> >>> Log[2]==Log[2] >>> >>> True >>> >>> Sigh.... >>> >>> Bobby >>> >>> On Sat, 11 Sep 2004 21:43:28 +0900, Andrzej Kozlowski >>> <andrzej at akikoz.net> wrote: >>> >>>> *This message was transferred with a trial version of >>>> CommuniGate(tm) Pro* >>>> Actually, I don't think Mathematica does any real "determining" since >>>> it does not replace the exact values given in the input by >>>> numerical approximations. The message issued is, I think, purely >>>> formal. Mathematica could not determine anything because it tries to >>>> compare the numbers "numerically" without using approximate numerical >>>> values, which can't be done. (You have to apply N for it to use >>>> numerical values). That't what I meant by "not surprisingly". I don't >>>> think I really understand your point? >>>> >>>> ANdrzej >>>> >>>> >>>> On 11 Sep 2004, at 01:52, DrBob wrote: >>>> >>>>> *This message was transferred with a trial version of >>>>> CommuniGate(tm) >>>>> Pro* >>>>>>> Mathematica does not apply any simplification rules but justtries >>>>>>> to >>>>>>> evaluate the expression numerically and, not >>>>>>> surprisingly, it can't determine if the LHS is zero or not >>>>>>> up to the required precision. >>>>> >>>>> On the contrary, I think the error message itself clearly indicates >>>>> the difference IS zero to "the required precision". If 50 digits >>>>> extra >>>>> precision isn't enough to determine that the difference ISN'T zero, >>>>> why doesn't Equal return True? >>>>> >>>>> Bobby >>>>> >>>>> On Fri, 10 Sep 2004 04:05:56 -0400 (EDT), Andrzej Kozlowski >>>>> <andrzej at akikoz.net> wrote: >>>>> >>>>>> On 9 Sep 2004, at 18:17, Andreas Stahel wrote: >>>>>> >>>>>>> >>>>>>> To whom it may concern >>>>>>> >>>>>>> the following answer of Mathematica 5.0 puzzeled me >>>>>>> >>>>>>> Log[4]==2*Log[2] >>>>>>> leads to >>>>>>> >>>>>>> N::meprec: Internal precision limit $MaxExtraPrecision = 50.` >>>>>>> reached >>>>>>> while \ >>>>>>> evaluating -2\Log[2]+Log[4] >>>>>>> >>>>>>> with the inputs given as answer. But the input >>>>>>> >>>>>>> Log[4.0]==2*Log[2] >>>>>>> >>>>>>> leads to a sound "True" >>>>>>> >>>>>>> Simplify[Log[4]-2*Log[2]] >>>>>>> leads to the correct 0, but >>>>>>> Simplify[Log[4]-2*Log[2]==0] >>>>>>> yields no result >>>>>>> >>>>>>> There must be some systematic behind thid surprising behaviour. >>>>>>> Could somebody give me a hint please >>>>>>> >>>>>>> With best regards >>>>>>> >>>>>>> Andreas >>>>>>> -- >>>>>>> Andreas Stahel E-Mail: Andreas.Stahel at [ANTI-SPAM]hti.bfh.ch >>>>>>> Mathematics, HTI Phone: ++41 +32 32 16 258 >>>>>>> Quellgasse 21 Fax: ++41 +32 321 500 >>>>>>> CH-2501 Biel WWW: www.hta-bi.bfh.ch/~sha >>>>>>> Switzerland >>>>>>> >>>>>>> >>>>>> >>>>>> When you enter >>>>>> >>>>>> Log[4] - 2*Log[2] == 0 >>>>>> >>>>>> Mathematica does not apply any simplification rules but just tries >>>>>> to >>>>>> evaluate the expression numerically and, not surprisingly, it can't >>>>>> determine if the LHS is zero or not up to the required precision. >>>>>> >>>>>> If you use >>>>>> >>>>>> Simplify[Log[4] - 2*Log[2] == 0] >>>>>> >>>>>> Mathematica first tries to evaluate the argument of Simplify and >>>>>> the >>>>>> same thig happens as above, but then it actually applies Simplify >>>>>> to >>>>>> the output and gets the right answer True. >>>>>> >>>>>> The best thing to do is: >>>>>> >>>>>> >>>>>> Simplify[Unevaluated[Log[4]-2*Log[2]==0]] >>>>>> >>>>>> >>>>>> True >>>>>> >>>>>> which avoids evaluation of the argument and instead uses Simplify >>>>>> on >>>>>> the unevaluated input. >>>>>> >>>>>> >>>>>> >>>>>> Andrzej Kozlowski >>>>>> Chiba, Japan >>>>>> http://www.akikoz.net/~andrzej/ >>>>>> http://www.mimuw.edu.pl/~akoz/ >>>>>> >>>>>> >>>>>> >>>>> >>>>> >>>>> >>>>> -- >>>>> DrBob at bigfoot.com >>>>> www.eclecticdreams.net >>>>> >>>> >>>> >>>> >>> >>> >>> >>> -- >>> DrBob at bigfoot.com >>> www.eclecticdreams.net >>> >> > > > -- DrBob at bigfoot.com www.eclecticdreams.net
- References:
- Log[4]==2*Log[2]
- From: Andreas Stahel <sha@hta-bi.bfh.ch>
- Re: Log[4]==2*Log[2]
- From: Andrzej Kozlowski <andrzej@akikoz.net>
- Log[4]==2*Log[2]